<?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>237884</bug_id>
          
          <creation_ts>2022-03-15 05:08:44 -0700</creation_ts>
          <short_desc>Move RealtimeMediaSource::VideoSampleObserver::videoSampleAvailable to VideoFrame</short_desc>
          <delta_ts>2022-03-22 03:39:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</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>237706</dependson>
    
    <dependson>237885</dependson>
          <blocked>238071</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851239</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-15 05:08:44 -0700</bug_when>
    <thetext>Move RealtimeMediaSource::VideoSampleObserver::videoSampleAvailable to VideoFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852685</commentid>
    <comment_count>1</comment_count>
      <attachid>455088</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-18 05:32:11 -0700</bug_when>
    <thetext>Created attachment 455088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853160</commentid>
    <comment_count>2</comment_count>
      <attachid>455234</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-21 05:22:51 -0700</bug_when>
    <thetext>Created attachment 455234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853161</commentid>
    <comment_count>3</comment_count>
      <attachid>455235</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-21 05:31:40 -0700</bug_when>
    <thetext>Created attachment 455235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853165</commentid>
    <comment_count>4</comment_count>
      <attachid>455236</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-21 05:37:17 -0700</bug_when>
    <thetext>Created attachment 455236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853173</commentid>
    <comment_count>5</comment_count>
      <attachid>455241</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-21 06:43:30 -0700</bug_when>
    <thetext>Created attachment 455241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853196</commentid>
    <comment_count>6</comment_count>
      <attachid>455246</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-21 08:10:57 -0700</bug_when>
    <thetext>Created attachment 455246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853231</commentid>
    <comment_count>7</comment_count>
      <attachid>455246</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-03-21 10:08:10 -0700</bug_when>
    <thetext>Comment on attachment 455246
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853261</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-21 11:11:21 -0700</bug_when>
    <thetext>ChangeLog entry in Source/WebKit/ChangeLog is not at the top of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853585</commentid>
    <comment_count>9</comment_count>
      <attachid>455355</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-22 02:35:37 -0700</bug_when>
    <thetext>Created attachment 455355
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853601</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-22 03:38:03 -0700</bug_when>
    <thetext>Committed r291611 (248704@main): &lt;https://commits.webkit.org/248704@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455355.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853602</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-22 03:39:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90625857&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455088</attachid>
            <date>2022-03-18 05:32:11 -0700</date>
            <delta_ts>2022-03-21 05:22:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237884-20220318133206.patch</filename>
            <type>text/plain</type>
            <size>178663</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODcyNzc4YzgxMzg3ZGE2
NDJhYTQzYjhhYTEyMzgyZjEyYzVlY2M0MS4uMjNlYWNmM2EzZDJjZWJiODFmNGEyYzQ1ZGNiNGYz
NzQyNWE1NjA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlIHRvIFZp
ZGVvRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yaW5nIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC0gUmVuYW1pbmcgb2Yg
VmlkZW9TYW1wbGVPYnNlcnZlciB0byBWaWRlb0ZyYW1lT2JzZXJ2ZXIsIHZpZGVvU2FtcGxlQXZh
aWxhYmxlIHRvIHZpZGVvRnJhbWVBdmFpbGFibGUuLi4KKyAgICAgICAgLSB2aWRlb0ZyYW1lQXZh
aWxhYmxlIHRha2VzIGEgVmlkZW9GcmFtZSBpbnN0ZWFkIG9mIGEgTWVkaWFTYW1wbGUKKyAgICAg
ICAgLSBVc2UgVmlkZW9GcmFtZTo6cm90YXRpb24gYW5kIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQu
CisgICAgICAgIC0gVXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uIGluc3RlYWQgb2YgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24KKyAgICAgICAgVXBkYXRlIGNvZGUgYWNjb3JkaW5nIHRoaXMgcmVu
YW1pbmcuCisgICAgICAgIE1vdmUgZnJvbSB1c2luZyBNZWRpYVNhbXBsZSB0byBWaWRlb0ZyYW1l
IHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAgIFByZXBhcmUgZm9yIHJlbW92YWwgb2Yg
TWVkaWFTYW1wbGUgYXMgcGFyZW50IGNsYXNzIG9mIFZpZGVvRnJhbWUuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
SW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9GcmFtZUNWLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b0ZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDIyLTAzLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIE1lZGlhU2FtcGxlQVZGT2JqQyBm
cm9tIFdlYlJUQyBwaXBlbGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2MzMTQ5ZDNkNWU2YjMxM2FjZTk4NTZk
MzA4M2YyZTY1YTVjOGQwNy4uYzE0MmNkNDJlMzk1ZmQwYTQ0YTU2NDFiMWUyNjg0MDY4MjAwM2Y1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMi0wMy0xOCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBSZWFsdGltZU1lZGlhU291cmNlOjpW
aWRlb1NhbXBsZU9ic2VydmVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSB0byBWaWRlb0ZyYW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4ODQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGZyb20g
dXNpbmcgTWVkaWFTYW1wbGUgdG8gVmlkZW9GcmFtZSBkaXJlY3RseS4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAg
ICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6
CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCiAyMDIyLTAz
LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
dXNlIG9mIE1lZGlhU2FtcGxlQVZGT2JqQyBmcm9tIFdlYlJUQyBwaXBlbGluZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggOGEwZDRlNDQwOTEzZjVjOGJmYjIx
YjEyMTZhMDQ3MTk1OGIzZTVkMS4uOTE1YWU4Y2RmODg2NjM4NzM0OTA2MWI3MzUyOWY1NzYwZGJk
NGU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE5OSw3
ICsxOTksNyBAQCB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNh
cHR1cmVDYW52YXMoKQogCiAgICAgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YTsKICAg
ICBtZXRhZGF0YS5jYXB0dXJlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5j
ZUVwb2NoKCk7Ci0gICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoKnZpZGVvRnJhbWUsIG1ldGFkYXRh
KTsKKyAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKCp2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7CiB9CiAK
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6
Y2xvbmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBkODFmZjNhMzRlN2UyZWJlMDFlMDVkODlmMjg5
YWM1YWY2ZDk3NmU1Li45NjBmNDkxZDU4MWY2OGI0MWEwMjJjOTgyOTZhZDExMzJmMWMwYWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcApAQCAtMTM3LDEwICsxMzcsNiBAQAogI2luY2x1ZGUgIk9mZnNjcmVl
bkNhbnZhcy5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotI2luY2x1ZGUg
Ik1lZGlhU2FtcGxlLmgiCi0jZW5kaWYKLQogI2lmICFVU0UoQU5HTEUpCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXggNjc0NjE5ZmE2MjJlYWM5OTU4ZjVmNDA5NTk1Yzdl
ZTgwNzE0MjYwYS4uOTQwNzI1OGFhMTk5NGM1ZGY1Mjc0MGE1NDkxYzQ5YjJkZTAwYTBkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC0xMTcsOSArMTE3LDkgQEAgcHVi
bGljOgogICAgICAgICBSaWdodCA9IDkwLAogICAgICAgICBMZWZ0ID0gMjcwLAogICAgIH07Ci0g
ICAgdmlydHVhbCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCB7IHJldHVybiBW
aWRlb1JvdGF0aW9uOjpOb25lOyB9Ci0gICAgdmlydHVhbCBib29sIHZpZGVvTWlycm9yZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgdmlkZW9QaXhlbEZv
cm1hdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFZpZGVvUm90YXRpb24gcm90
YXRpb24oKSBjb25zdCB7IHJldHVybiBWaWRlb1JvdGF0aW9uOjpOb25lOyB9CisgICAgdmlydHVh
bCBib29sIGlzTWlycm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
dWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdmlydHVhbCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0Zy
YW1lLmNwcAppbmRleCBkNWJjNzMzNmFmYmMyMGVlMTc0OGFmZmFhZGExMjE0OWZlYmUzY2Y1Li5l
ZTc5ZTU4MmUyYTBhZmE5ZDI4MWFmOTgyMGM5YzYwNjAwYTcyZWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9WaWRlb0ZyYW1lLmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIE1lZGlhVGltZSBWaWRl
b0ZyYW1lOjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmVzZW50YXRp
b25UaW1lOwogfQogCi1NZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBWaWRlb0ZyYW1lOjp2aWRl
b1JvdGF0aW9uKCkgY29uc3QKK1ZpZGVvRnJhbWU6OlJvdGF0aW9uIFZpZGVvRnJhbWU6OnJvdGF0
aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yb3RhdGlvbjsKIH0KIAotYm9vbCBWaWRlb0Zy
YW1lOjp2aWRlb01pcnJvcmVkKCkgY29uc3QKK2Jvb2wgVmlkZW9GcmFtZTo6aXNNaXJyb3JlZCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXNNaXJyb3JlZDsKIH0KQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lOjphc1ZpZGVvRnJhbWVDVigpCiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFZpZGVv
RnJhbWVDVjo6Y3JlYXRlKHByZXNlbnRhdGlvblRpbWUoKSwgdmlkZW9NaXJyb3JlZCgpLCB2aWRl
b1JvdGF0aW9uKCksIGJ1ZmZlcik7CisgICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHBy
ZXNlbnRhdGlvblRpbWUoKSwgaXNNaXJyb3JlZCgpLCByb3RhdGlvbigpLCBidWZmZXIpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaAppbmRleCBhYmE0YjZjY2I5
MmEyN2IyNDM3Mjg3NGQxOTExMjg5NTFiNjQxOTk3Li44YWE0MmVlZmZhYWY2YWI0ZDM3ZTlhODU2
YTI0NTk3Y2NiYTU3MDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRl
b0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCkBAIC00
MiwxMCArNDIsMTIgQEAgY2xhc3MgVmlkZW9GcmFtZSA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWUoKTsKIAorICAgIHVzaW5nIFJv
dGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb247CisKICAgICAvLyBXZWJDb3JlOjpN
ZWRpYVNhbXBsZSBvdmVycmlkZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUoKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBWaWRlb1JvdGF0
aW9uIHZpZGVvUm90YXRpb24oKSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHZpZGVvTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSb3RhdGlv
biByb3RhdGlvbigpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNaXJy
b3JlZCgpIGNvbnN0IGZpbmFsOwogICAgIC8vIEZJWE1FOiBXaGVuIFZpZGVvRnJhbWUgaXMgbm90
IE1lZGlhU2FtcGxlLCB0aGVzZSB3aWxsIG5vdCBiZSBuZWVkZWQuCiAgICAgV0VCQ09SRV9FWFBP
UlQgV2ViQ29yZTo6UGxhdGZvcm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBjb25zdCBmaW5hbDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVNhbXBsZTo6VHlwZSBwbGF0Zm9ybVNhbXBsZVR5
cGUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuaAppbmRleCA4OGZmMjc1YTQ4MmM4MzQwNjkyM2M5NDg5Y2VjOGE3NGM2NWNhOTA1Li43
OTc5ODg3Njk5OWE1ZjNmYzIwMTNhMjdjM2E4ZjQ4YWRjYzJiODIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0yNSw4ICsyNSw4IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUxheWVyLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgTWVkaWFUaW1lOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRTaXpl
OwotY2xhc3MgTWVkaWFTYW1wbGU7CitjbGFzcyBWaWRlb0ZyYW1lOwogCiBjbGFzcyBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgewogcHVibGljOgpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwg
Ym9vbCBoaWRlUm9vdExheWVyKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWZmaW5l
VHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBWaWRl
b0ZyYW1lOjpSb3RhdGlvbikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCkgPSAwOwpAQCAtNjksOCArNjks
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBsYXkoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHBhdXNlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGVucXVldWVTYW1wbGUoTWVkaWFT
YW1wbGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1lJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhclZpZGVvRnJhbWVzKCkgPSAwOwogCiAgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiByb290TGF5ZXIoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IGE2NmIyNzM1
YmNlYWVkZWMzNTZlYzdmMDgzNzQyMzU2NTRlZGIyM2QuLjQ5NDY1MDNjOTJlMjAyNjdjNmM3OTcz
NDhmOWE1ZDk1NGVhMmRkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6
CiAgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoUmV0YWluUHRyPEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyPiYmLCBDbGllbnQmKTsKICAgICB+TG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIoKTsKIAorICAgIHZvaWQgZW5xdWV1ZUJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCBN
ZWRpYVRpbWUpOworCiAgICAgLy8gQVBJIHVzZWQgYnkgV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXND
aGFuZ2VMaXN0ZW5lcgogICAgIHZvaWQgbGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKTsKICAgICB2b2lk
IGxheWVyRXJyb3JEaWRDaGFuZ2UoKTsKQEAgLTU2LDEyICs1OCwxMiBAQCBwdWJsaWM6CiAKICAg
ICBQbGF0Zm9ybUxheWVyKiBkaXNwbGF5TGF5ZXIoKTsKIAotICAgIFBsYXRmb3JtTGF5ZXIqIHJv
b3RMYXllcigpIGZpbmFsOwotCiAgICAgZW51bSBjbGFzcyBTaG91bGRVcGRhdGVSb290TGF5ZXIg
eyBObywgWWVzIH07Ci0gICAgdm9pZCB1cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihD
R1JlY3QsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uLCBTaG91bGRVcGRhdGVSb290TGF5ZXIp
OworICAgIHZvaWQgdXBkYXRlUm9vdExheWVyQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBWaWRl
b0ZyYW1lOjpSb3RhdGlvbiwgU2hvdWxkVXBkYXRlUm9vdExheWVyKTsKICAgICB2b2lkIHVwZGF0
ZVJvb3RMYXllckFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSk7CiAKKyAgICAvLyBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuCisgICAgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkg
ZmluYWw7CiAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGRpZFN1Y2NlZWQpPiYmKSBmaW5hbDsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICB2b2lkIHNldExvZ0lkZW50aWZpZXIoU3RyaW5nJiYg
bG9nSWRlbnRpZmllcikgZmluYWwgeyBtX2xvZ0lkZW50aWZpZXIgPSBXVEZNb3ZlKGxvZ0lkZW50
aWZpZXIpOyB9CkBAIC03MSw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZURpc3Bs
YXlNb2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKSBmaW5hbDsK
IAogICAgIHZvaWQgdXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKSAgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24pIGZpbmFsOwogCiAgICAgdm9pZCBmbHVzaCgp
IGZpbmFsOwogICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpIGZpbmFsOwpAQCAtNzksMTcg
KzgxLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsYXkoKSBmaW5hbDsKICAgICB2b2lkIHBhdXNl
KCkgZmluYWw7CiAKLSAgICB2b2lkIGVucXVldWUoQ1ZQaXhlbEJ1ZmZlclJlZiwgTWVkaWFUaW1l
KTsKLSAgICB2b2lkIGVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmKSBmaW5hbDsKLSAgICB2b2lk
IGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkgZmluYWw7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFt
ZShWaWRlb0ZyYW1lJikgZmluYWw7CisgICAgdm9pZCBjbGVhclZpZGVvRnJhbWVzKCkgZmluYWw7
CiAgICAgdm9pZCBzZXRSZW5kZXJQb2xpY3koUmVuZGVyUG9saWN5KSBmaW5hbDsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCk7Ci0gICAgdm9p
ZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShNZWRpYVNhbXBsZSYpOworCisgICAgdm9pZCByZW1v
dmVPbGRWaWRlb0ZyYW1lc0Zyb21QZW5kaW5nUXVldWUoKTsKKyAgICB2b2lkIGFkZFZpZGVvRnJh
bWVUb1BlbmRpbmdRdWV1ZShSZWY8VmlkZW9GcmFtZT4mJik7CiAgICAgdm9pZCByZXF1ZXN0Tm90
aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxl
QnVmZmVyKE1lZGlhU2FtcGxlJik7Ci0gICAgdm9pZCBzZXRSb290TGF5ZXJCb3VuZHNBbmRQb3Np
dGlvbnMoQ0dSZWN0LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CisgICAgdm9pZCBzZXRS
b290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbnMoQ0dSZWN0LCBWaWRlb0ZyYW1lOjpSb3RhdGlvbik7
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICB2b2lkIG9uSXJyZWd1bGFyRnJhbWVS
YXRlTm90aWZpY2F0aW9uKE1vbm90b25pY1RpbWUgZnJhbWVUaW1lLCBNb25vdG9uaWNUaW1lIGxh
c3RGcmFtZVRpbWUpOwpAQCAtMTA0LDggKzEwNSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdv
cmtRdWV1ZT4gbV9wcm9jZXNzaW5nUXVldWU7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIHRocm91
Z2ggbV9wcm9jZXNzaW5nUXVldWUgb3IgaWYgbV9wcm9jZXNzaW5nUXVldWUgaXMgbnVsbC4KLSAg
ICB1c2luZyBQZW5kaW5nU2FtcGxlUXVldWUgPSBEZXF1ZTxSZWY8TWVkaWFTYW1wbGU+PjsKLSAg
ICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKKyAgICB1c2lu
ZyBQZW5kaW5nU2FtcGxlUXVldWUgPSBEZXF1ZTxSZWY8VmlkZW9GcmFtZT4+OworICAgIFBlbmRp
bmdTYW1wbGVRdWV1ZSBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWU7CiAgICAgCiAgICAgYm9vbCBt
X3BhdXNlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KaW5kZXggMWNjZGRmYTg4MTVhNGY3NjRl
MjQ5MWM3MDQ3NWI4ZDIwYmRjNDkwNC4uNDU4YzVhMzlhZjA1ZDhhMGEwZTBiZDU1YzBiZmIxMDFh
MTNkZDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkNvbG9y
LmgiCiAjaW1wb3J0ICJJbnRTaXplLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJN
ZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCiAKICNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgpAQCAtNDIsOCAr
NDEsOSBAQAogI2ltcG9ydCA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbXBvcnQgPHd0Zi9jZi9U
eXBlQ2FzdHNDRi5oPgogCisjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KLQor
I2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0x
OTgsNyArMTk4LDcgQEAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6On5Mb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcigpCiAKICAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9w
XTsKIAotICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKKyAgICBtX3BlbmRp
bmdWaWRlb0ZyYW1lUXVldWUuY2xlYXIoKTsKIAogICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CiAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIGZsdXNoXTsKQEAgLTI2NSwyOCArMjY1LDI4IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSB0
cmFuCiAgICAgfSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVw
ZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uKQordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBk
YXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90YXRpb24g
cm90YXRpb24pCiB7CiAgICAgdXBkYXRlUm9vdExheWVyQm91bmRzQW5kUG9zaXRpb24oYm91bmRz
LCByb3RhdGlvbiwgU2hvdWxkVXBkYXRlUm9vdExheWVyOjpObyk7CiB9CiAKLXZvaWQgTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldFJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9ucyhD
R1JlY3QgYm91bmRzLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQg
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnNldFJvb3RMYXllckJvdW5kc0FuZFBvc2l0
aW9ucyhDR1JlY3QgYm91bmRzLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikKIHsKICAg
ICBDR1BvaW50IHBvc2l0aW9uID0geyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5zaXpl
LmhlaWdodCAvIDJ9OwotICAgIGlmIChyb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6UmlnaHQgfHwgcm90YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Okxl
ZnQpCisgICAgaWYgKHJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodCB8fCBy
b3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCkKICAgICAgICAgc3RkOjpzd2Fw
KGJvdW5kcy5zaXplLndpZHRoLCBib3VuZHMuc2l6ZS5oZWlnaHQpOwogCiAgICAgbV9yb290TGF5
ZXIuZ2V0KCkucG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBtX3Jvb3RMYXllci5nZXQoKS5ib3Vu
ZHMgPSBib3VuZHM7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVw
ZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBTaG91bGRVcGRhdGVSb290TGF5ZXIgc2hvdWxkVXBk
YXRlUm9vdExheWVyKQordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRl
Um9vdExheWVyQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90
YXRpb24gcm90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllciBzaG91bGRVcGRhdGVSb290TGF5
ZXIpCiB7CiAgICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoWyZdIHsKICAgICAgICAgaWYgKHNob3Vs
ZFVwZGF0ZVJvb3RMYXllciA9PSBTaG91bGRVcGRhdGVSb290TGF5ZXI6OlllcykKICAgICAgICAg
ICAgIHNldFJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9ucyhib3VuZHMsIHJvdGF0aW9uKTsKIAot
ICAgICAgICBpZiAocm90YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0
IHx8IHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0KQorICAgICAg
ICBpZiAocm90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0IHx8IHJvdGF0aW9u
ID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0KQogICAgICAgICAgICAgc3RkOjpzd2FwKGJv
dW5kcy5zaXplLndpZHRoLCBib3VuZHMuc2l6ZS5oZWlnaHQpOwogCiAgICAgICAgIENHUG9pbnQg
cG9zaXRpb24gPSB7IGJvdW5kcy5zaXplLndpZHRoIC8gMiwgYm91bmRzLnNpemUuaGVpZ2h0IC8g
Mn07CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Zmx1c2hBbmRSZW1vdmVJbWFnZSgpCiAKIHN0YXRpYyBjb25zdCBkb3VibGUgcmVuZGVyZXJM
YXRlbmN5ID0gMC4wMjsKIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6ZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsK
ICAgICBpZiAobV9wYXVzZWQpIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTMyMSwy
MiArMzIxLDE3IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVT
YW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fcHJvY2Vzc2luZ1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgc2FtcGxlID0gUmVmIHsgc2FtcGxl
IH1dIHsKKyAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHZpZGVvRnJhbWUg
PSBSZWYgeyB2aWRlb0ZyYW1lIH1dKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghW21fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewogICAgICAgICAg
ICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGUgKCV7cHVibGljfXMpIG5vdCByZWFkeSBmb3IgbW9yZSBtZWRpYSBkYXRhIiwg
bV9sb2dJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgYWRkU2FtcGxlVG9Q
ZW5kaW5nUXVldWUoc2FtcGxlKTsKKyAgICAgICAgICAgIGFkZFZpZGVvRnJhbWVUb1BlbmRpbmdR
dWV1ZShXVEZNb3ZlKHZpZGVvRnJhbWUpKTsKICAgICAgICAgICAgIHJlcXVlc3ROb3RpZmljYXRp
b25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBlbnF1ZXVlU2FtcGxlQnVmZmVyKHNhbXBsZSk7CisgICAgICAgIGVucXVldWVC
dWZmZXIodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cHJlc2VudGF0aW9u
VGltZSgpKTsKICAgICB9KTsKIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQotewotICAgIGVucXVl
dWUoc2FtcGxlLnBpeGVsQnVmZmVyKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCkpOwotfQot
CiBzdGF0aWMgdm9pZCBzZXRTYW1wbGVCdWZmZXJBc0Rpc3BsYXlJbW1lZGlhdGVseShDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCiB7CiAgICAgQ0ZBcnJheVJlZiBhdHRhY2htZW50c0Fy
cmF5ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2FtcGxl
QnVmZmVyLCB0cnVlKTsKQEAgLTM0Niw3ICszNDEsNyBAQCBzdGF0aWMgdm9pZCBzZXRTYW1wbGVC
dWZmZXJBc0Rpc3BsYXlJbW1lZGlhdGVseShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIp
CiAgICAgfQogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
KENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1l
KQordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZUJ1ZmZlcihDVlBp
eGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApAQCAtMzYxLDcgKzM1Niw3IEBAIHZvaWQg
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWUoQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlciwgTWVkaWFUCiAgICAgY29uc3RleHByIHNpemVfdCBmcmFtZUNvdW50UGVyTG9n
ID0gMTgwMDsgLy8gbG9nIGV2ZXJ5IG1pbnV0ZSBhdCAzMCBmcHMKICAgICBpZiAoIShtX2ZyYW1l
UmF0ZU1vbml0b3IuZnJhbWVDb3VudCgpICUgZnJhbWVDb3VudFBlckxvZykpIHsKICAgICAgICAg
aWYgKGF1dG8qIG1ldHJpY3MgPSBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgdmlkZW9QZXJm
b3JtYW5jZU1ldHJpY3NdKQotICAgICAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKCV7cHVibGljfXMpIG1ldHJpY3MsIHRvdGFsPSVsdSwg
ZHJvcHBlZD0lbHUsIGNvcnJ1cHRlZD0lbHUsIGRpc3BsYXktY29tcG9zaXRlZD0lbHUsIG5vbi1k
aXNwbGF5LWNvbXBvc2l0ZWQ9JWx1IChwZW5kaW5nPSVsdSkiLCBtX2xvZ0lkZW50aWZpZXIudXRm
OCgpLmRhdGEoKSwgbWV0cmljcy50b3RhbE51bWJlck9mVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVt
YmVyT2ZEcm9wcGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZDb3JydXB0ZWRWaWRlb0Zy
YW1lcywgbWV0cmljcy5udW1iZXJPZkRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMsIG1ldHJp
Y3MubnVtYmVyT2ZOb25EaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJhbWVzLCBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlLnNpemUoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAoJXtwdWJsaWN9cykgbWV0cmljcywgdG90YWw9
JWx1LCBkcm9wcGVkPSVsdSwgY29ycnVwdGVkPSVsdSwgZGlzcGxheS1jb21wb3NpdGVkPSVsdSwg
bm9uLWRpc3BsYXktY29tcG9zaXRlZD0lbHUgKHBlbmRpbmc9JWx1KSIsIG1fbG9nSWRlbnRpZmll
ci51dGY4KCkuZGF0YSgpLCBtZXRyaWNzLnRvdGFsTnVtYmVyT2ZWaWRlb0ZyYW1lcywgbWV0cmlj
cy5udW1iZXJPZkRyb3BwZWRWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJPZkNvcnJ1cHRlZFZp
ZGVvRnJhbWVzLCBtZXRyaWNzLm51bWJlck9mRGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcywg
bWV0cmljcy5udW1iZXJPZk5vbkRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMsIG1fcGVuZGlu
Z1ZpZGVvRnJhbWVRdWV1ZS5zaXplKCkpOwogICAgIH0KICAgICBtX2ZyYW1lUmF0ZU1vbml0b3Iu
dXBkYXRlKCk7CiAjZW5kaWYKQEAgLTM3Myw0NCArMzY4LDQ0IEBAIHZvaWQgTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6Om9uSXJyZWd1bGFyRnJhbWVSYXRlTm90aWZpY2F0aW9uKE1vbm90
b25pY1RpCiAgICAgY2FsbE9uTWFpblRocmVhZChbZnJhbWVUaW1lID0gZnJhbWVUaW1lLnNlY29u
ZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgbGFzdEZyYW1lVGltZSA9IGxhc3RGcmFtZVRpbWUuc2Vj
b25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCBvYnNlcnZlZEZyYW1lUmF0ZSA9IG1fZnJhbWVSYXRl
TW9uaXRvci5vYnNlcnZlZEZyYW1lUmF0ZSgpLCBmcmFtZUNvdW50ID0gbV9mcmFtZVJhdGVNb25p
dG9yLmZyYW1lQ291bnQoKSwgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSRUxFQVNFX0xP
RyhXZWJSVEMsICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZUJ1
ZmZlciAoJXtwdWJsaWN9cykgYXQgJWYsIHByZXZpb3VzIGZyYW1lIHdhcyBhdCAlZiwgb2JzZXJ2
ZWQgZnJhbWUgcmF0ZSBpcyAlZiwgZGVsYXkgc2luY2UgbGFzdCBmcmFtZSBpcyAlZiBtcywgZnJh
bWUgY291bnQgaXMgJWx1Iiwgd2Vha1RoaXMtPm1fbG9nSWRlbnRpZmllci51dGY4KCkuZGF0YSgp
LCBmcmFtZVRpbWUsIGxhc3RGcmFtZVRpbWUsIG9ic2VydmVkRnJhbWVSYXRlLCAoZnJhbWVUaW1l
IC0gbGFzdEZyYW1lVGltZSkgKiAxMDAwLCBmcmFtZUNvdW50KTsKKyAgICAgICAgUkVMRUFTRV9M
T0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVWaWRlb0Zy
YW1lICgle3B1YmxpY31zKSBhdCAlZiwgcHJldmlvdXMgZnJhbWUgd2FzIGF0ICVmLCBvYnNlcnZl
ZCBmcmFtZSByYXRlIGlzICVmLCBkZWxheSBzaW5jZSBsYXN0IGZyYW1lIGlzICVmIG1zLCBmcmFt
ZSBjb3VudCBpcyAlbHUiLCB3ZWFrVGhpcy0+bV9sb2dJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCks
IGZyYW1lVGltZSwgbGFzdEZyYW1lVGltZSwgb2JzZXJ2ZWRGcmFtZVJhdGUsIChmcmFtZVRpbWUg
LSBsYXN0RnJhbWVUaW1lKSAqIDEwMDAsIGZyYW1lQ291bnQpOwogICAgIH0pOwogfQogI2VuZGlm
CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlbW92ZU9sZFNhbXBsZXNG
cm9tUGVuZGluZ1F1ZXVlKCkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJl
bW92ZU9sZFZpZGVvRnJhbWVzRnJvbVBlbmRpbmdRdWV1ZSgpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBpZiAobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5
KCkpCisgICAgaWYgKG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX3JlbmRlclBvbGljeSA9PSBSZW5kZXJQb2xpY3k6OkltbWVk
aWF0ZWx5KSB7Ci0gICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKKyAg
ICAgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBhdXRvIG5vdyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShNb25v
dG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOwotICAgIHdoaWxl
ICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBw
cmVzZW50YXRpb25UaW1lID0gbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5maXJzdCgpLT5wcmVz
ZW50YXRpb25UaW1lKCk7CisgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNF
bXB0eSgpKSB7CisgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IG1fcGVuZGluZ1ZpZGVv
RnJhbWVRdWV1ZS5maXJzdCgpLT5wcmVzZW50YXRpb25UaW1lKCk7CiAgICAgICAgIGlmIChwcmVz
ZW50YXRpb25UaW1lLmlzVmFsaWQoKSAmJiBwcmVzZW50YXRpb25UaW1lID4gbm93KQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUucmVtb3ZlRmly
c3QoKTsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLnJlbW92ZUZpcnN0KCk7CiAg
ICAgfQogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjphZGRTYW1wbGVU
b1BlbmRpbmdRdWV1ZShNZWRpYVNhbXBsZSYgc2FtcGxlKQordm9pZCBMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6YWRkVmlkZW9GcmFtZVRvUGVuZGluZ1F1ZXVlKFJlZjxWaWRlb0ZyYW1l
PiYmIHZpZGVvRnJhbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBy
ZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpOwotICAgIG1fcGVuZGluZ1ZpZGVvU2Ft
cGxlUXVldWUuYXBwZW5kKHNhbXBsZSk7CisgICAgcmVtb3ZlT2xkVmlkZW9GcmFtZXNGcm9tUGVu
ZGluZ1F1ZXVlKCk7CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmFwcGVuZChXVEZNb3Zl
KHZpZGVvRnJhbWUpKTsKIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6Y2xlYXJWaWRlb0ZyYW1lcygpCiB7CiAgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNo
KFt0aGlzXSB7Ci0gICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKKyAg
ICAgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFyKCk7CiAgICAgfSk7CiB9CiAKQEAg
LTQyNCwxMyArNDE5LDEzIEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJl
cXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQogICAgICAgICBtX3Byb2Nl
c3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKICAgICAgICAgICAgIFttX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CiAKLSAgICAgICAgICAgIHdo
aWxlICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IHdoaWxlICghbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVk
aWFEYXRhXSkgewogICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJl
YWR5Rm9yVmlkZW9EYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRlb1Nh
bXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGVucXVldWVTYW1wbGVCdWZm
ZXIoc2FtcGxlKTsKKyAgICAgICAgICAgICAgICBhdXRvIHZpZGVvRnJhbWUgPSBtX3BlbmRpbmdW
aWRlb0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgICAgICAgICAgZW5xdWV1ZUJ1ZmZl
cih2aWRlb0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1l
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCmluZGV4IDJjYzE3YWRmOGQ3Y2I0YTFmM2UzYzY1NTUyNjQ0ZGI3NmNmNmU1MWIuLjFk
OTMxYzZmOWQ0NWVmMzA4MTBlYTNmMTNkODAwMjJlZjExNTMwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQpAQCAtMjc1NCw3ICsyNzU0LDcgQEAgUmVmUHRyPFZpZGVvRnJhbWU+IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvRnJhbWVGb3JDdXJyZW50VGltZSgKICAg
ICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKICAgICBpZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUo
Y3VycmVudE1lZGlhVGltZSgpLCBmYWxzZSwgVmlkZW9GcmFtZUNWOjpWaWRlb1JvdGF0aW9uOjpO
b25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9KTsKKyAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUoY3VycmVudE1lZGlhVGltZSgpLCBmYWxzZSwgVmlkZW9GcmFtZTo6Um90
YXRpb246Ok5vbmUsIFJldGFpblB0ciB7IG1fbGFzdFBpeGVsQnVmZmVyIH0pOwogfQogCiBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDVi
ZTcwODNmNTRmMDg4MzNhNGFmYWY0ZGU2OGIxODU3NmE3Y2I4NGIuLjljOTEzZTRmNDNmNzMwMzhl
OGMzYjBkNGMyNmM1YmE1NDk0MmE0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAg
LTc0Nyw3ICs3NDcsNyBAQCBSZWZQdHI8VmlkZW9GcmFtZT4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjp2aWRlb0ZyYW1lRm9yQ3VycmVudFRpbQogICAgICAgICB1cGRhdGVM
YXN0UGl4ZWxCdWZmZXIoKTsKICAgICBpZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoY3VycmVudE1l
ZGlhVGltZSgpLCBmYWxzZSwgVmlkZW9GcmFtZUNWOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBSZXRh
aW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9KTsKKyAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpj
cmVhdGUoY3VycmVudE1lZGlhVGltZSgpLCBmYWxzZSwgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5v
bmUsIFJldGFpblB0ciB7IG1fbGFzdFBpeGVsQnVmZmVyIH0pOwogfQogCiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb2xvclNwYWNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggOTJkYWQzMDlmYmNhZjk0MTYzYzczOTBl
OWNmZGI0YzA3NjQwMjVmYS4uMGU3NDE4N2MxMzBkNWRjNmZlY2VkZjdmNjdlOGIxOTEwYmYyYzM0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTI4LDkgKzI4LDkgQEAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbVByaXZhdGUuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCIK
KyNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNTIsNyArNTIsNyBA
QCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgZmluYWwKICAgICA6
IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKICAgICAsIHByaXZhdGUgTWVkaWFT
dHJlYW1Qcml2YXRlOjpPYnNlcnZlcgogICAgICwgcHVibGljIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpPYnNlcnZlcgotICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2Ft
cGxlT2JzZXJ2ZXIKKyAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1l
T2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudAog
ICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKIHsKQEAgLTEzNiw5ICsxMzYsOSBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBmbHVzaFJlbmRlcmVycygpOwogCi0gICAgdm9pZCBwcm9jZXNzTmV3Vmlk
ZW9TYW1wbGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhLCBTZWNvbmRzKTsK
LSAgICB2b2lkIGVucXVldWVWaWRlb1NhbXBsZShNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgcmVl
bnF1ZXVlQ3VycmVudFZpZGVvU2FtcGxlSWZOZWVkZWQoKTsKKyAgICB2b2lkIHByb2Nlc3NOZXdW
aWRlb0ZyYW1lKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhLCBTZWNvbmRzKTsK
KyAgICB2b2lkIGVucXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmKTsKKyAgICB2b2lkIHJlZW5x
dWV1ZUN1cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKTsKICAgICB2b2lkIHJlcXVlc3ROb3RpZmlj
YXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CkBAIC0yMTEsOCArMjExLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIHRyYWNrRW5hYmxlZENoYW5nZWQoTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJyaWRlOwogCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdWNl
OjpWaWRlb1NhbXBsZU9ic2VydmVyCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIC8vIFJlYWx0aW1l
TWVkaWFTb3VjZTo6VmlkZW9GcmFtZU9ic2VydmVyCisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxh
YmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKIAogICAgIFJl
dGFpblB0cjxQbGF0Zm9ybUxheWVyPiBjcmVhdGVWaWRlb0Z1bGxzY3JlZW5MYXllcigpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIEZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CkBAIC0yMzgsNyAr
MjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCByZXNldCgpOwogCiAgICAgICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gY2dJbWFnZTsKLSAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBtZWRp
YVNhbXBsZTsKKyAgICAgICAgUmVmUHRyPFZpZGVvRnJhbWU+IHZpZGVvRnJhbWU7CiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBwaXhlbEJ1ZmZlckNvbmZv
cm1lcjsKICAgICB9OwogICAgIEN1cnJlbnRGcmFtZVBhaW50ZXIgbV9pbWFnZVBhaW50ZXI7CkBA
IC0yNjAsNyArMjYwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBXcml0dGVuIG9uIG1haW4gdGhyZWFk
LCByZWFkIG9uIHNhbXBsZSB0aHJlYWQuCiAgICAgYm9vbCBtX2NhbkVucXVldWVEaXNwbGF5TGF5
ZXIgeyBmYWxzZSB9OwogICAgIC8vIFVzZWQgb24gc2FtcGxlIHRocmVhZC4KLSAgICBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbjo6Tm9uZSB9OworICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIG1fdmlkZW9Sb3RhdGlv
biB7IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lIH07CiAgICAgYm9vbCBtX3ZpZGVvTWlycm9y
ZWQgeyBmYWxzZSB9OwogCiAgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CkBAIC0yNzIs
OCArMjcyLDggQEAgcHJpdmF0ZToKIAogICAgIFJldGFpblB0cjxXZWJSb290U2FtcGxlQnVmZmVy
Qm91bmRzQ2hhbmdlTGlzdGVuZXI+IG1fYm91bmRzQ2hhbmdlTGlzdGVuZXI7CiAKLSAgICBMb2Nr
IG1fY3VycmVudFZpZGVvU2FtcGxlTG9jazsKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1fY3Vy
cmVudFZpZGVvU2FtcGxlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jdXJyZW50VmlkZW9TYW1wbGVM
b2NrKTsKKyAgICBMb2NrIG1fY3VycmVudFZpZGVvRnJhbWVMb2NrOworICAgIFJlZlB0cjxWaWRl
b0ZyYW1lPiBtX2N1cnJlbnRWaWRlb0ZyYW1lIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jdXJyZW50
VmlkZW9GcmFtZUxvY2spOwogCiAgICAgYm9vbCBtX3BsYXlpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9tdXRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNGRk
ODFiYWFmOTU4OTA1ZTZhYjk2OTIxZmJmZGNkNTdkZDBkMjA0My4uZTQ2NDZkNmIzZGM1ODY3OTFi
NWJmYjFkM2RhY2ExNDVjMWRkMmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAt
MzMsNyArMzMsNiBAQAogI2ltcG9ydCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCi0jaW1wb3J0ICJN
ZWRpYVNhbXBsZUFWRk9iakMuaCIKICNpbXBvcnQgIk1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5o
IgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW1wb3J0ICJQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWLmgiCkBAIC0xNjAsNyArMTU5LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkKICAg
ICAgICAgdHJhY2stPnN0cmVhbVRyYWNrKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAg
aWYgKG1fYWN0aXZlVmlkZW9UcmFjaykKLSAgICAgICAgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJl
YW1UcmFjaygpLnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAg
ICAgICBtX2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRyYWNrKCkuc291cmNlKCkucmVtb3ZlVmlk
ZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIAogICAgIFttX2JvdW5kc0NoYW5nZUxpc3RlbmVyIGlu
dmFsaWRhdGVdOwogCkBAIC0yMjksMjkgKzIyOCwyOSBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNv
bgogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlNhbXBsZUJ1ZmZlciBNZXRob2RzCiAK
LXN0YXRpYyBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJp
eChNZWRpYVNhbXBsZSYgc2FtcGxlKQorc3RhdGljIGlubGluZSBDR0FmZmluZVRyYW5zZm9ybSB2
aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUpCiB7Ci0gICAg
YXV0byBzaXplID0gc2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICBhdXRvIHNpemUgPSB2
aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKICAgICBzaXplX3Qgd2lkdGggPSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNpemUud2lkdGgoKSk7CiAgICAgc2l6ZV90IGhlaWdodCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oc2l6ZS5oZWlnaHQoKSk7CiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQog
ICAgICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKIAotICAgIGF1dG8gdmlk
ZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxp
bnQ+KHNhbXBsZS52aWRlb1JvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7Ci0gICAgaWYgKHNhbXBs
ZS52aWRlb01pcnJvcmVkKCkpCisgICAgYXV0byB2aWRlb1RyYW5zZm9ybSA9IENHQWZmaW5lVHJh
bnNmb3JtTWFrZVJvdGF0aW9uKHN0YXRpY19jYXN0PGludD4odmlkZW9GcmFtZS5yb3RhdGlvbigp
KSAqIE1fUEkgLyAxODApOworICAgIGlmICh2aWRlb0ZyYW1lLmlzTWlycm9yZWQoKSkKICAgICAg
ICAgdmlkZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxlKHZpZGVvVHJhbnNmb3Jt
LCAtMSwgMSk7CiAKICAgICByZXR1cm4gdmlkZW9UcmFuc2Zvcm07CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvRnJhbWVBdmFpbGFibGUo
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkK
IHsKICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpOwotICAgIHByb2Nlc3NOZXdWaWRlb1NhbXBsZShzYW1wbGUsIG1ldGFk
YXRhLCBwcmVzZW50YXRpb25UaW1lKTsKLSAgICBlbnF1ZXVlVmlkZW9TYW1wbGUoc2FtcGxlKTsK
KyAgICBwcm9jZXNzTmV3VmlkZW9GcmFtZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSwgcHJlc2VudGF0
aW9uVGltZSk7CisgICAgZW5xdWV1ZVZpZGVvRnJhbWUodmlkZW9GcmFtZSk7CiB9CiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjplbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKQogewogICAg
IGlmICghbV9pc1BhZ2VWaXNpYmxlIHx8ICFtX2lzVmlzaWJsZUluVmlld1BvcnQpCiAgICAgICAg
IHJldHVybjsKQEAgLTI2Myw1MiArMjYyLDUyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsCiAg
ICAgaWYgKCFtX2NhbkVucXVldWVEaXNwbGF5TGF5ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIHx8IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5kaWRGYWlsKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IG1fdmlkZW9Sb3Rh
dGlvbiB8fCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpICE9IG1fdmlkZW9NaXJyb3JlZCkgewotICAg
ICAgICBtX3ZpZGVvUm90YXRpb24gPSBzYW1wbGUudmlkZW9Sb3RhdGlvbigpOwotICAgICAgICBt
X3ZpZGVvTWlycm9yZWQgPSBzYW1wbGUudmlkZW9NaXJyb3JlZCgpOworICAgIGlmICh2aWRlb0Zy
YW1lLnJvdGF0aW9uKCkgIT0gbV92aWRlb1JvdGF0aW9uIHx8IHZpZGVvRnJhbWUuaXNNaXJyb3Jl
ZCgpICE9IG1fdmlkZW9NaXJyb3JlZCkgeworICAgICAgICBtX3ZpZGVvUm90YXRpb24gPSB2aWRl
b0ZyYW1lLnJvdGF0aW9uKCk7CisgICAgICAgIG1fdmlkZW9NaXJyb3JlZCA9IHZpZGVvRnJhbWUu
aXNNaXJyb3JlZCgpOwogICAgICAgICBtX3Nob3VsZFVwZGF0ZURpc3BsYXlMYXllciA9IHRydWU7
CiAgICAgfQogICAgIGlmIChtX3Nob3VsZFVwZGF0ZURpc3BsYXlMYXllcikgewotICAgICAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQWZmaW5lVHJhbnNmb3JtKHZpZGVvVHJh
bnNmb3JtYXRpb25NYXRyaXgoc2FtcGxlKSk7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLT51cGRhdGVBZmZpbmVUcmFuc2Zvcm0odmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCh2
aWRlb0ZyYW1lKSk7CiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVC
b3VuZHNBbmRQb3NpdGlvbihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cm9vdExheWVyKCku
Ym91bmRzLCBtX3ZpZGVvUm90YXRpb24pOwogICAgICAgICBtX3Nob3VsZFVwZGF0ZURpc3BsYXlM
YXllciA9IGZhbHNlOwogICAgIH0KIAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5l
bnF1ZXVlU2FtcGxlKHNhbXBsZSk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVu
cXVldWVWaWRlb0ZyYW1lKHZpZGVvRnJhbWUpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVlbnF1ZXVlQ3VycmVudFZpZGVvU2FtcGxlSWZOZWVkZWQo
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZW5xdWV1ZUN1
cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKQogewotICAgIGlmICghbV9jdXJyZW50VmlkZW9TYW1w
bGVMb2NrLnRyeUxvY2soKSkKKyAgICBpZiAoIW1fY3VycmVudFZpZGVvRnJhbWVMb2NrLnRyeUxv
Y2soKSkKICAgICAgICAgcmV0dXJuOwotICAgIExvY2tlciBsb2NrZXIgeyBBZG9wdExvY2ssIG1f
Y3VycmVudFZpZGVvU2FtcGxlTG9jayB9OworICAgIExvY2tlciBsb2NrZXIgeyBBZG9wdExvY2ss
IG1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CiAKLSAgICBpZiAoIW1fY3VycmVudFZpZGVvU2Ft
cGxlICYmICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAgICBpZiAoIW1fY3VycmVudFZp
ZGVvRnJhbWUgJiYgIW1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGVucXVldWVWaWRlb1NhbXBsZShtX2N1cnJlbnRWaWRlb1NhbXBsZSA/ICptX2N1cnJl
bnRWaWRlb1NhbXBsZSA6ICptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAgZW5xdWV1
ZVZpZGVvRnJhbWUobV9jdXJyZW50VmlkZW9GcmFtZSA/ICptX2N1cnJlbnRWaWRlb0ZyYW1lIDog
Km1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBz
YW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEsIFNlY29uZHMgcHJlc2VudGF0
aW9uVGltZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwcm9j
ZXNzTmV3VmlkZW9GcmFtZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhIG1ldGFkYXRhLCBTZWNvbmRzIHByZXNlbnRhdGlvblRpbWUpCiB7CiAgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkgewogICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jdXJyZW50VmlkZW9TYW1wbGVMb2NrIH07Ci0gICAgICAgICAgICBtX2N1cnJlbnRWaWRlb1Nh
bXBsZSA9ICZzYW1wbGU7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jdXJyZW50Vmlk
ZW9GcmFtZUxvY2sgfTsKKyAgICAgICAgICAgIG1fY3VycmVudFZpZGVvRnJhbWUgPSAmdmlkZW9G
cmFtZTsKICAgICAgICAgfQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBtZXRhZGF0YSwgcHJlc2VudGF0aW9uVGltZV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHNhbXBsZTsKKyAgICAgICAgICAgIFJlZlB0
cjxWaWRlb0ZyYW1lPiB2aWRlb0ZyYW1lOwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyB3ZWFrVGhpcy0+bV9jdXJyZW50VmlkZW9TYW1wbGVMb2NrIH07Ci0g
ICAgICAgICAgICAgICAgc2FtcGxlID0gV1RGTW92ZSh3ZWFrVGhpcy0+bV9jdXJyZW50VmlkZW9T
YW1wbGUpOworICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyB3ZWFrVGhpcy0+bV9jdXJy
ZW50VmlkZW9GcmFtZUxvY2sgfTsKKyAgICAgICAgICAgICAgICB2aWRlb0ZyYW1lID0gV1RGTW92
ZSh3ZWFrVGhpcy0+bV9jdXJyZW50VmlkZW9GcmFtZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoIXNhbXBsZSkKKyAgICAgICAgICAgIGlmICghdmlkZW9GcmFtZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzTmV3VmlkZW9T
YW1wbGUoKnNhbXBsZSwgbWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWUpOworICAgICAgICAgICAg
d2Vha1RoaXMtPnByb2Nlc3NOZXdWaWRlb0ZyYW1lKCp2aWRlb0ZyYW1lLCBtZXRhZGF0YSwgcHJl
c2VudGF0aW9uVGltZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MzE2LDE2ICszMTUsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZShNZWRpYVNhbXBsZSYgc2EKICAgICBpZiAoIW1fYWN0
aXZlVmlkZW9UcmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSB8fCBtX2Rpc3BsYXlNb2RlICE9IFBhdXNlZEltYWdlKSB7Ci0gICAgICAg
IG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlID0gJnNhbXBsZTsKKyAgICBpZiAoIW1faW1hZ2VQ
YWludGVyLnZpZGVvRnJhbWUgfHwgbV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFnZSkgeworICAg
ICAgICBtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lID0gJnZpZGVvRnJhbWU7CiAgICAgICAgIG1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBudWxscHRyOwogICAgICAgICBpZiAobV9yZWFkeVN0YXRl
IDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVFbm91Z2hEYXRhKQogICAgICAgICAgICAg
dXBkYXRlUmVhZHlTdGF0ZSgpOwogICAgIH0KIAogICAgIG1fcHJlc2VudGF0aW9uVGltZSA9IHBy
ZXNlbnRhdGlvblRpbWU7Ci0gICAgbV92aWRlb0ZyYW1lU2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRp
b25TaXplKCk7Ci0gICAgaWYgKHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgPT0gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246OkxlZnQgfHwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSA9PSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgbV92aWRlb0ZyYW1lU2l6ZSA9IHZpZGVv
RnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgIGlmICh2aWRlb0ZyYW1lLnJvdGF0aW9uKCkg
PT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQgfHwgdmlkZW9GcmFtZS5yb3RhdGlvbigpID09
IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAgICAgICAgbV92aWRlb0ZyYW1lU2l6ZSA9
IHsgbV92aWRlb0ZyYW1lU2l6ZS5oZWlnaHQoKSwgbV92aWRlb0ZyYW1lU2l6ZS53aWR0aCgpIH07
CiAgICAgbV9zYW1wbGVNZXRhZGF0YSA9IG1ldGFkYXRhOwogICAgICsrbV9zYW1wbGVDb3VudDsK
QEAgLTM2MCw4ICszNTksOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewogICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciAmJiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFpbCgp
KSB7CiAgICAgICAgIGZsdXNoUmVuZGVyZXJzKCk7Ci0gICAgICAgIGlmIChtX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSkKLSAgICAgICAgICAgIGVucXVldWVWaWRlb1NhbXBsZSgqbV9pbWFnZVBh
aW50ZXIubWVkaWFTYW1wbGUpOworICAgICAgICBpZiAobV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKKyAgICAgICAgICAgIGVucXVldWVWaWRlb0ZyYW1lKCptX2ltYWdlUGFpbnRlci52aWRlb0Zy
YW1lKTsKICAgICAgICAgdXBkYXRlRGlzcGxheU1vZGUoKTsKICAgICB9CiB9CkBAIC01NjksNyAr
NTY4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXko
KQogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXItPnBsYXkoKTsKICAgICB1cGRhdGVEaXNwbGF5TW9kZSgpOwotICAg
IHJlZW5xdWV1ZUN1cnJlbnRWaWRlb1NhbXBsZUlmTmVlZGVkKCk7CisgICAgcmVlbnF1ZXVlQ3Vy
cmVudFZpZGVvRnJhbWVJZk5lZWRlZCgpOwogCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3Ro
aXNdIHsKICAgICAgICAgdXBkYXRlUmVhZHlTdGF0ZSgpOwpAQCAtNjQxLDcgKzY0MCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRQYWdlSXNWaXNpYmxl
KGJvb2wgaXNWaXNpYmxlKQogCiAgICAgbV9pc1BhZ2VWaXNpYmxlID0gaXNWaXNpYmxlOwogICAg
IGZsdXNoUmVuZGVyZXJzKCk7Ci0gICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvU2FtcGxlSWZOZWVk
ZWQoKTsKKyAgICByZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaXNpYmxlRm9yQ2Fu
dmFzKGJvb2wpCkBAIC02ODEsNyArNjgwLDcgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50UmVhZHlTdGF0ZSgKICAg
ICBpZiAoIW1fbWVkaWFTdHJlYW1Qcml2YXRlIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0
aXZlKCkgfHwgIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5oYXNUcmFja3MoKSkKICAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKIAotICAgIGJvb2wgd2Fp
dGluZ0ZvckltYWdlID0gYWN0aXZlVmlkZW9UcmFjaygpICYmICFtX2ltYWdlUGFpbnRlci5tZWRp
YVNhbXBsZTsKKyAgICBib29sIHdhaXRpbmdGb3JJbWFnZSA9IGFjdGl2ZVZpZGVvVHJhY2soKSAm
JiAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZTsKICAgICBpZiAod2FpdGluZ0ZvckltYWdlICYm
ICghbV9oYXZlU2Vlbk1ldGFkYXRhIHx8IG1fd2FpdGluZ0ZvckZpcnN0SW1hZ2UpKQogICAgICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogCkBAIC03NDAs
NyArNzM5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNj
aGVkdWxlUmVuZGVyaW5nTW9kZUNoYW5nZWQoKQogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0
aGlzXSB7CiAgICAgICAgIGlmIChtX3BsYXllcikKICAgICAgICAgICAgIG1fcGxheWVyLT5yZW5k
ZXJpbmdNb2RlQ2hhbmdlZCgpOwotICAgICAgICByZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJ
Zk5lZWRlZCgpOworICAgICAgICByZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCk7
CiAgICAgfSk7CiB9CiAKQEAgLTg5NCw3ICs4OTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2hlY2tTZWxlY3RlZFZpZGVvVHJhY2soKQogCiAgICAgaWYg
KG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKSB7CiAgICAgICAgIGlmICghbV9hY3RpdmVWaWRl
b1RyYWNrKQotICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmNsZWFyRW5x
dWV1ZWRTYW1wbGVzKCk7CisgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+
Y2xlYXJWaWRlb0ZyYW1lcygpOwogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+
dXBkYXRlRGlzcGxheU1vZGUoaGlkZVZpZGVvTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA8IFBhdXNl
ZEltYWdlLCBoaWRlUm9vdExheWVyKCkpOwogICAgIH0KIApAQCAtOTAyLDExICs5MDEsMTEgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRW
aWRlb1RyYWNrKCkKIAogICAgIGlmIChvbGRWaWRlb1RyYWNrICE9IG1fYWN0aXZlVmlkZW9UcmFj
aykgewogICAgICAgICBpZiAob2xkVmlkZW9UcmFjaykKLSAgICAgICAgICAgIG9sZFZpZGVvVHJh
Y2stPnN0cmVhbVRyYWNrKCkuc291cmNlKCkucmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhp
cyk7CisgICAgICAgICAgICBvbGRWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLnJl
bW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIGlmIChtX2FjdGl2ZVZpZGVv
VHJhY2spIHsKICAgICAgICAgICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAmJiBt
X2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRyYWNrKCkuc291cmNlKCkuaXNDYXB0dXJlU291cmNl
KCkpCiAgICAgICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnNldFJlbmRl
clBvbGljeShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlJlbmRlclBvbGljeTo6SW1tZWRpYXRl
bHkpOwotICAgICAgICAgICAgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJj
ZSgpLmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgbV9hY3RpdmVW
aWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLmFkZFZpZGVvRnJhbWVPYnNlcnZlcigq
dGhpcyk7CiAgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJvYnNlcnZpbmcg
dmlkZW8gc291cmNlICIsIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFtVHJhY2soKS5sb2dJZGVu
dGlmaWVyKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtOTg3LDcgKzk4Niw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiB7Ci0gICAgaWYgKG1faW1hZ2VQYWludGVy
LmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAgIGlmIChtX2ltYWdl
UGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQpA
QCAtOTk3LDcgKzk5Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5w
aXhlbEJ1ZmZlckNvbmZvcm1lcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8gcGl4
ZWxCdWZmZXIgPSBtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZS0+cGl4ZWxCdWZmZXIoKSkKKyAg
ICBpZiAoYXV0byBwaXhlbEJ1ZmZlciA9IG1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUtPnBpeGVs
QnVmZmVyKCkpCiAgICAgICAgIG1faW1hZ2VQYWludGVyLmNnSW1hZ2UgPSBOYXRpdmVJbWFnZTo6
Y3JlYXRlKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZy
b21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcikpOwogfQogCkBAIC0xMDA2LDcgKzEwMDUsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgIGlmIChtX2Rpc3BsYXlNb2RlID09IE5vbmUgfHwg
IW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjayAmJiBt
X2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBQYWlu
dEl0QmxhY2sgJiYgbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSkKICAgICAgICAgdXBkYXRlQ3Vy
cmVudEZyYW1lSW1hZ2UoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKQEAgLTEwMTUsMTIgKzEwMTQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9pbWFnZVBhaW50ZXIu
Y2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYgKCFtX2ltYWdl
UGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvJiBpbWFnZSA9IG1faW1hZ2VQYWludGVyLmNnSW1hZ2U7CiAgICAg
RmxvYXRSZWN0IGltYWdlUmVjdCB7IEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2UtPnNpemUoKSB9
OwotICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRp
b25NYXRyaXgoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICBBZmZpbmVUcmFuc2Zv
cm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFp
bnRlci52aWRlb0ZyYW1lKTsKICAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZh
bHVlT3JEZWZhdWx0KHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKSkubWFwUmVjdChkZXN0UmVjdCk7
CiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwogICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVj
dCwgaW1hZ2VSZWN0KTsKQEAgLTEwMzIsMTIgKzEwMzEsNyBAQCBSZWZQdHI8VmlkZW9GcmFtZT4g
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb0ZyYW1lRm9yQ3VycmVu
dFRpbQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobV9kaXNwbGF5TW9kZSA9PSBQ
YWludEl0QmxhY2spCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghbV9pbWFnZVBh
aW50ZXIubWVkaWFTYW1wbGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChpczxW
aWRlb0ZyYW1lPigqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpKQotICAgICAgICByZXR1cm4g
JmRvd25jYXN0PFZpZGVvRnJhbWU+KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7Ci0gICAg
QVNTRVJUKGlzPE1lZGlhU2FtcGxlQVZGT2JqQz4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxl
KSk7Ci0gICAgcmV0dXJuIGRvd25jYXN0PE1lZGlhU2FtcGxlQVZGT2JqQz4oKm1faW1hZ2VQYWlu
dGVyLm1lZGlhU2FtcGxlKS52aWRlb0ZyYW1lKCk7CisgICAgcmV0dXJuIG1faW1hZ2VQYWludGVy
LnZpZGVvRnJhbWU7CiB9CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmNvbG9yU3BhY2UoKQpAQCAtMTExMSw3ICsxMTA1LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNjaGVkdWxlRGVmZXJy
ZWRUYXNrKEZ1bmN0aW9uPHZvaWQgKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpDdXJyZW50RnJhbWVQYWludGVyOjpyZXNldCgpCiB7CiAgICAgY2dJbWFnZSA9
IG51bGxwdHI7Ci0gICAgbWVkaWFTYW1wbGUgPSBudWxscHRyOworICAgIHZpZGVvRnJhbWUgPSBu
dWxscHRyOwogICAgIHBpeGVsQnVmZmVyQ29uZm9ybWVyID0gbnVsbHB0cjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCA1ZGNmYzAyZGExYjhi
M2ZjMTY0NmNiMjIxZjkxMmYxMmJkMWVkOWYyLi42YzVhZTUzM2I4N2YwMDUzNGE3ZWVlNGVkYWU4
NWFjYWYwNmUyM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMuaApAQCAtNjUsOSArNjUsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpw
YWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25z
dCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFVzZUVuZFRpbWUpIG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHko
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcm90YXRpb247IH0KLSAgICBib29sIHZpZGVvTWlycm9y
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21pcnJvcmVkOyB9Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworICAgIFZpZGVv
Um90YXRpb24gcm90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvdGF0aW9uOyB9
CisgICAgYm9vbCBpc01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3Jl
ZDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgZmlu
YWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNv
bnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHko
Y29uc3QgUHJvY2Vzc0lkZW50aXR5JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCBhMDQ1ODcwZWQ3ZTY4N2QyMWYzMzc5MTQwYjI4
MDQ2NmVhMzFmOTI4Li4xMzExYjMzNzE4YTg0ZTMzZDEzOTMxMTMwMmQwNDc1ZmQ5NjNjOGQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0xMTAs
NyArMTEwLDcgQEAgUGxhdGZvcm1TYW1wbGUgTWVkaWFTYW1wbGVBVkZPYmpDOjpwbGF0Zm9ybVNh
bXBsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNhbXBsZTsKIH0KIAotdWludDMyX3QgTWVkaWFTYW1w
bGVBVkZPYmpDOjp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3VpbnQzMl90IE1lZGlhU2FtcGxl
QVZGT2JqQzo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBz
dGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VC
dWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKICAgICByZXR1cm4gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVs
Rm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpp
bmRleCAwM2Y3ZTQ1M2MyZjRlMWE5YzdkOWY1MDJmY2YyNWZhMzU4YjMzNjM4Li43MTU0MmY3OWI3
YzJkMzM2Mjk5ZmNjMmFkNTJlOTMxYjIwZWRjNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
Q29jb2EubW0KQEAgLTc4MSw3ICs3ODEsNyBAQCBSZWZQdHI8VmlkZW9GcmFtZT4gR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvVmlkZW9GcmFtZSgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChtX3Jlc291cmNlT3duZXIpCiAgICAgICAgIHNl
dE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihtZWRpYVNhbXBsZVBpeGVsQnVmZmVy
LmdldCgpLCBtX3Jlc291cmNlT3duZXIpOwotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0
ZSh7IH0sIGZhbHNlLCBWaWRlb0ZyYW1lOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKG1l
ZGlhU2FtcGxlUGl4ZWxCdWZmZXIpKTsKKyAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUo
eyB9LCBmYWxzZSwgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUsIFdURk1vdmUobWVkaWFTYW1w
bGVQaXhlbEJ1ZmZlcikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAppbmRl
eCBkMzg5MTk4MWU4NWU4MDNkZjg0ZTUwNTcwYjJkNDBhZDQyZWMxNTg3Li43MzkyNDQ2YTEwNTIw
MjFkODlkMDRlY2ZiYjRmZWNiZmFkNGI2NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCkBA
IC0zNCw3ICszNCw3IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4
ZWxCdWZmZXJQb29sUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Ft
cGxlOworY2xhc3MgVmlkZW9GcmFtZTsKIAogY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBm
aW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBGbG9hdFNpemUmIHJvdGF0ZWRTaXplKCkgeyByZXR1cm4gbV9yb3Rh
dGVkU2l6ZTsgfQogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZShDVlBp
eGVsQnVmZmVyUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gcm90YXRlKE1lZGlhU2FtcGxlJiwgY29uc3QgUm90YXRpb25Qcm9wZXJ0aWVzJiwgSXND
R0ltYWdlQ29tcGF0aWJsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IHJvdGF0ZShWaWRlb0ZyYW1lJiwgY29uc3QgUm90YXRpb25Qcm9wZXJ0aWVzJiwg
SXNDR0ltYWdlQ29tcGF0aWJsZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplKGNv
bnN0IFJvdGF0aW9uUHJvcGVydGllcyYsIEZsb2F0U2l6ZSwgSXNDR0ltYWdlQ29tcGF0aWJsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJv
dGF0aW9uU2Vzc2lvblZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
SW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbQppbmRleCAzZWFiMDY4OWU5MDQ1MWFkNDU4Y2VmMzg5
Njk0ZmY5ZTY5YjA2Zjc2Li5hMjZhZjgxZDYxOTQyNmFhZWU5NzM3OTFmM2YwNTI4YTkzNzdmMzRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJv
dGF0aW9uU2Vzc2lvblZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKLSNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCisjaW1wb3J0ICJWaWRlb0ZyYW1lLmgi
CiAKICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJWaWRlb1Rvb2xib3hT
b2Z0TGluay5oIgpAQCAtMTI3LDcgKzEyNyw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdl
Um90YXRpb25TZXNzaW9uVlQ6OnJvdGF0ZShNZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSwgY29uc3Qg
Um90YXRpb25Qcm9wZXJ0aWVzJiByb3RhdGlvbiwgSXNDR0ltYWdlQ29tcGF0aWJsZSBjZ0ltYWdl
Q29tcGF0aWJsZSkKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpyb3RhdGUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgY29uc3QgUm90YXRpb25Qcm9w
ZXJ0aWVzJiByb3RhdGlvbiwgSXNDR0ltYWdlQ29tcGF0aWJsZSBjZ0ltYWdlQ29tcGF0aWJsZSkK
IHsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gdmlkZW9GcmFtZS5waXhlbEJ1ZmZlcigpOwogICAg
IEFTU0VSVChwaXhlbEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgKaW5kZXggYmE4MTA0
ZDY5ODE0YjRkODFhMmM1OTQwOWU1ZTJkZmY3YTM1NDljNy4uZDIwNTEzNDBhOGExNTQ5NzM0MzRi
ZmZiZDI4YmY0ZjY3NWVlOTA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaApAQCAtNDUsMTIg
KzQ1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUPihuZXcgSW1hZ2VUcmFuc2ZlclNlc3Npb25WVChwaXhlbEZvcm1hdCwg
c2hvdWxkVXNlSU9TdXJmYWNlKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBj
b252ZXJ0VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYsIGNvbnN0IEludFNpemUmKTsKLSAgICBSZWZQ
dHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENHSW1hZ2VSZWYsIGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiA9IE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFsc2UpOwotICAg
IFJlZlB0cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYs
IGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0g
ZmFsc2UpOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiBjb252ZXJ0VmlkZW9GcmFtZShWaWRlb0Zy
YW1lJiwgY29uc3QgSW50U2l6ZSYpOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiBjcmVhdGVWaWRl
b0ZyYW1lKENHSW1hZ2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBWaWRl
b0ZyYW1lOjpSb3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBib29sIG1pcnJv
cmVkID0gZmFsc2UpOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiBjcmVhdGVWaWRlb0ZyYW1lKENN
U2FtcGxlQnVmZmVyUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgVmlkZW9G
cmFtZTo6Um90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3Jl
ZCA9IGZhbHNlKTsKIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiwg
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50U2l6ZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBm
YWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFZpZGVvRnJhbWU+IGNyZWF0ZVZpZGVv
RnJhbWUoSU9TdXJmYWNlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgVmlk
ZW9GcmFtZTo6Um90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJy
b3JlZCA9IGZhbHNlKTsKICNlbmRpZgogCiAgICAgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25z
dCB7IHJldHVybiBtX3BpeGVsRm9ybWF0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQppbmRl
eCA4YjZkNzk0NTVhYjczMzJjMzQzOTkyODE0OTMzYzYwNWY5NzljYzZkLi5hNzM1ODZkOWQ2OWNj
NWYxNmU5OTMxNTZhMTdjMGRkZDJmYmUyYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0K
QEAgLTI1NSw3ICsyNTUsNyBAQCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZUNNU2FtcGxlQnVmZmVyKElPU3VyZgogfQogI2VuZGlmCiAK
LVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydFZpZGVv
RnJhbWUoTWVkaWFTYW1wbGUmIHZpZGVvRnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUpCitSZWZQ
dHI8VmlkZW9GcmFtZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydFZpZGVvRnJhbWUo
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAo
c2l6ZSA9PSBleHBhbmRlZEludFNpemUodmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCkpKQog
ICAgICAgICByZXR1cm4gJnZpZGVvRnJhbWU7CkBAIC0yNjQsMTEgKzI2NCwxMSBAQCBSZWZQdHI8
TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZlcnRWaWRlb0ZyYW1lKE1l
ZGlhU2FtcGxlJiB2aWRlbwogICAgIGlmICghcmVzaXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUodmlkZW9GcmFtZS5w
cmVzZW50YXRpb25UaW1lKCksIHZpZGVvRnJhbWUudmlkZW9NaXJyb3JlZCgpLCB2aWRlb0ZyYW1l
LnZpZGVvUm90YXRpb24oKSwgV1RGTW92ZShyZXNpemVkQnVmZmVyKSk7CisgICAgcmV0dXJuIFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKHZpZGVvRnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb0Zy
YW1lLmlzTWlycm9yZWQoKSwgdmlkZW9GcmFtZS5yb3RhdGlvbigpLCBXVEZNb3ZlKHJlc2l6ZWRC
dWZmZXIpKTsKIH0KIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLVJlZlB0cjxNZWRpYVNh
bXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlTWVkaWFTYW1wbGUoSU9TdXJmYWNl
UmVmIHN1cmZhY2UsIGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQp
CitSZWZQdHI8VmlkZW9GcmFtZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlVmlkZW9G
cmFtZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBj
b25zdCBJbnRTaXplJiBzaXplLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBt
aXJyb3JlZCkKIHsKICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUNNU2FtcGxlQnVmZmVy
KHN1cmZhY2UsIHNhbXBsZVRpbWUsIHNpemUpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQpAQCAt
Mjc4LDcgKzI3OCw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VDo6Y3JlYXRlTWVkaWFTYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhCiB9CiAjZW5kaWYKIAotUmVm
UHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBs
ZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IElu
dFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1p
cnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0
ZVZpZGVvRnJhbWUoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1l
LCBjb25zdCBJbnRTaXplJiBzaXplLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgYm9v
bCBtaXJyb3JlZCkKIHsKICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUNNU2FtcGxlQnVm
ZmVyKGltYWdlLCBzYW1wbGVUaW1lLCBzaXplKTsKICAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKQEAg
LTI4Nyw3ICsyODcsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKENHSW1hZ2VSZWYgaW1hZ2UsCiAgICAgcmV0dXJuIFZpZGVv
RnJhbWVDVjo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgbWlycm9yZWQsIHJvdGF0aW9uKTsK
IH0KIAotUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVN
ZWRpYVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNvbnN0IE1lZGlhVGltZSYgc2Ft
cGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24g
cm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitSZWZQdHI8VmlkZW9GcmFtZT4gSW1hZ2VUcmFuc2Zl
clNlc3Npb25WVDo6Y3JlYXRlVmlkZW9GcmFtZShDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIsIGNv
bnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFt
ZTo6Um90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVC
dWZmZXIgPSBjb252ZXJ0Q01TYW1wbGVCdWZmZXIoYnVmZmVyLCBzaXplLCAmc2FtcGxlVGltZSk7
CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5oCmluZGV4IDkzYTNlNzE1N2U2MWY1MDkxMDUyYmYz
ZjVmNDA0Y2YwOTI2ODFjODQuLjBjZDJlMTA5YmM3ODYwMzVhNWFkZjE5NjRjMWNlMzlkZjFlNjli
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVv
RnJhbWVDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVv
RnJhbWVDVi5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotdXNpbmcgQ1ZQaXhlbEJ1ZmZlclJlZiA9IHN0cnVj
dCBfX0NWQnVmZmVyKjsKK3VzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0gc3RydWN0IG9wYXF1ZUNN
U2FtcGxlQnVmZmVyKjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw4ICszOSw4IEBA
IGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBWaWRlb0ZyYW1lQ1YgOiBwdWJsaWMgVmlkZW9G
cmFtZSB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0ZyYW1l
Q1Y+IGNyZWF0ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBW
aWRlb1JvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0ZyYW1lQ1Y+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJl
ZiwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFZpZGVvRnJhbWVDVj4gY3JlYXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1l
LCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4m
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0ZyYW1lQ1Y+IGNyZWF0ZShD
TVNhbXBsZUJ1ZmZlclJlZiwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbik7CiAgICAgc3RhdGlj
IFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZUNWKCk7CiAKQEAgLTUyLDI3ICs1Miwy
NiBAQCBwdWJsaWM6CiAKICAgICAvLyBWaWRlb0ZyYW1lIG92ZXJyaWRlcy4KICAgICBXRUJDT1JF
X0VYUE9SVCBXZWJDb3JlOjpGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFs
OwotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBm
aW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0IGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3Qg
UHJvY2Vzc0lkZW50aXR5JikgZmluYWw7CiAgICAgYm9vbCBpc0NWKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0Zy
YW1lQ1Y+IGFzVmlkZW9GcmFtZUNWKCkgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgVmlkZW9GcmFtZUNWKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWly
cm9yZWQsIFZpZGVvUm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBWaWRlb0ZyYW1lQ1YoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUs
IGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYm
KTsKIAogICAgIGNvbnN0IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX3BpeGVsQnVmZmVy
OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBWaWRlb0ZyYW1lQ1Y6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV9wcmVzZW50
YXRpb25UaW1lIDw8IG1faXNNaXJyb3JlZCA8PCBtX3JvdGF0aW9uIDw8IG1fcGl4ZWxCdWZmZXI7
CisgICAgZW5jb2RlciA8PCBwcmVzZW50YXRpb25UaW1lKCkgPDwgaXNNaXJyb3JlZCgpIDw8IHJv
dGF0aW9uKCkgPDwgbV9waXhlbEJ1ZmZlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gc3RkOjpvcHRpb25hbDxSZWZQdHI8VmlkZW9GcmFtZUNWPj4gVmlkZW9GcmFtZUNWOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBkZWNv
ZGVyLnRlbXBsYXRlIGRlY29kZTxNZWRpYVRpbWU+KCk7CiAgICAgYXV0byBpc01pcnJvcmVkID0g
ZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8Ym9vbD4oKTsKLSAgICBhdXRvIHJvdGF0aW9uID0gZGVj
b2Rlci50ZW1wbGF0ZSBkZWNvZGU8VmlkZW9Sb3RhdGlvbj4oKTsKKyAgICBhdXRvIHJvdGF0aW9u
ID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8Um90YXRpb24+KCk7CiAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
Pj4oKTsKICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpIHx8ICEqcGl4ZWxCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC04Myw3ICs4Miw2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFZpZGVvRnJhbWVDVj4+IFZpZGVvRnJh
bWVDVjo6ZGVjCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9G
cmFtZUNWKQogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1l
JiB2aWRlb0ZyYW1lKSB7IHJldHVybiB2aWRlb0ZyYW1lLmlzQ1YoKTsgfQotICAgIHN0YXRpYyBi
b29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0
dXJuIGlzPFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSAmJiBpczxXZWJDb3JlOjpW
aWRlb0ZyYW1lQ1Y+KGRvd25jYXN0PFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSk7
IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0KaW5kZXggYWJk
N2UyZmM4OTdiMDcxYmIwYjVmZjM5NzZkOTlmMGMxOWUxNDQ2Yy4uYmZmZTJiNGJkNmI1NTdhMjg3
OThjYjJkZWMxMmJiOWQ0ODYzYzhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3JlYXRl
KENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uKQorUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUo
Q01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9u
IHJvdGF0aW9uKQogewogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVs
QnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoc2FtcGxlQnVmZmVy
KSk7CiAgICAgYXV0byB0aW1lU3RhbXAgPSBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0T3V0cHV0UHJl
c2VudGF0aW9uVGltZVN0YW1wKHNhbXBsZUJ1ZmZlcik7CkBAIC00NCw3ICs0NCw3IEBAIFJlZjxW
aWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlciwgYm9vbCBpc01pCiAgICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKFBBTDo6
dG9NZWRpYVRpbWUodGltZVN0YW1wKSwgaXNNaXJyb3JlZCwgcm90YXRpb24sIHBpeGVsQnVmZmVy
KTsKIH0KIAotUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1l
IHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlv
biwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIpCitSZWY8VmlkZW9G
cmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwg
Ym9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+JiYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgQVNTRVJUKHBpeGVsQnVmZmVyKTsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lQ1YocHJlc2VudGF0aW9uVGltZSwgaXNNaXJy
b3JlZCwgcm90YXRpb24sIFdURk1vdmUocGl4ZWxCdWZmZXIpKSk7CkBAIC03MywxMCArNzMsMTAg
QEAgUmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGVGcm9tUGl4ZWxCdWZm
ZXIoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmYKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKLSAgICByZXR1cm4gY3JlYXRl
KHsgfSwgZmFsc2UsIFZpZGVvUm90YXRpb246Ok5vbmUsIFdURk1vdmUoY3ZQaXhlbEJ1ZmZlcikp
OworICAgIHJldHVybiBjcmVhdGUoeyB9LCBmYWxzZSwgUm90YXRpb246Ok5vbmUsIFdURk1vdmUo
Y3ZQaXhlbEJ1ZmZlcikpOwogfQogCi1WaWRlb0ZyYW1lQ1Y6OlZpZGVvRnJhbWVDVihNZWRpYVRp
bWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uIHJvdGF0
aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBwaXhlbEJ1ZmZlcikKK1ZpZGVvRnJh
bWVDVjo6VmlkZW9GcmFtZUNWKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWly
cm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBw
aXhlbEJ1ZmZlcikKICAgICA6IFZpZGVvRnJhbWUocHJlc2VudGF0aW9uVGltZSwgaXNNaXJyb3Jl
ZCwgcm90YXRpb24pCiAgICAgLCBtX3BpeGVsQnVmZmVyKFdURk1vdmUocGl4ZWxCdWZmZXIpKQog
ewpAQCAtODksNyArODksNyBAQCBXZWJDb3JlOjpGbG9hdFNpemUgVmlkZW9GcmFtZUNWOjpwcmVz
ZW50YXRpb25TaXplKCkgY29uc3QKICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4oQ1ZQ
aXhlbEJ1ZmZlckdldFdpZHRoKG1fcGl4ZWxCdWZmZXIuZ2V0KCkpKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9waXhlbEJ1ZmZlci5nZXQoKSkpIH07CiB9CiAK
LXVpbnQzMl90IFZpZGVvRnJhbWVDVjo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit1aW50MzJf
dCBWaWRlb0ZyYW1lQ1Y6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQ1ZQaXhl
bEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShtX3BpeGVsQnVmZmVyLmdldCgpKTsKIH0KQEAgLTEw
MiwyMyArMTAyLDE4IEBAIHZvaWQgVmlkZW9GcmFtZUNWOjpzZXRPd25lcnNoaXBJZGVudGl0eShj
b25zdCBQcm9jZXNzSWRlbnRpdHkmIHJlc291cmNlT3duZXIpCiAgICAgc2V0T3duZXJzaGlwSWRl
bnRpdHlGb3JDVlBpeGVsQnVmZmVyKGJ1ZmZlciwgcmVzb3VyY2VPd25lcik7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6YXNWaWRlb0ZyYW1lQ1YoKQot
ewotICAgIHJldHVybiB0aGlzOwotfQotCiBJbWFnZU9yaWVudGF0aW9uIFZpZGVvRnJhbWVDVjo6
b3JpZW50YXRpb24oKSBjb25zdAogewogICAgIC8vIFNhbXBsZSB0cmFuc2Zvcm0gZmlyc3QgZmxp
cHMgeC1jb29yZGluYXRlcywgdGhlbiByb3RhdGVzLgotICAgIHN3aXRjaCAobV9yb3RhdGlvbikg
ewotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU6Ci0gICAgICAgIHJl
dHVybiBtX2lzTWlycm9yZWQgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BSaWdodCA6IElt
YWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQ7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6UmlnaHQ6Ci0gICAgICAgIHJldHVybiBtX2lzTWlycm9yZWQgPyBJbWFnZU9y
aWVudGF0aW9uOjpPcmlnaW5SaWdodEJvdHRvbSA6IEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJp
Z2h0VG9wOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd246
Ci0gICAgICAgIHJldHVybiBtX2lzTWlycm9yZWQgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5C
b3R0b21MZWZ0IDogSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tUmlnaHQ7Ci0gICAgY2Fz
ZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDoKLSAgICAgICAgcmV0dXJuIG1faXNN
aXJyb3JlZCA/IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRUb3AgOiBJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOworICAgIHN3aXRjaCAocm90YXRpb24oKSkgeworICAgIGNh
c2UgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6CisgICAgICAgIHJldHVybiBpc01pcnJvcmVk
KCkgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BSaWdodCA6IEltYWdlT3JpZW50YXRpb246
Ok9yaWdpblRvcExlZnQ7CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ6Cisg
ICAgICAgIHJldHVybiBpc01pcnJvcmVkKCkgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdo
dEJvdHRvbSA6IEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0VG9wOworICAgIGNhc2UgVmlk
ZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd246CisgICAgICAgIHJldHVybiBpc01pcnJvcmVk
KCkgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21MZWZ0IDogSW1hZ2VPcmllbnRhdGlv
bjo6T3JpZ2luQm90dG9tUmlnaHQ7CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVm
dDoKKyAgICAgICAgcmV0dXJuIGlzTWlycm9yZWQoKSA/IEltYWdlT3JpZW50YXRpb246Ok9yaWdp
bkxlZnRUb3AgOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0Qm90dG9tOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuY3BwCmluZGV4IGU5NTVlMDQyZjg1Zjlj
M2MxNmZiMmRhODNiOTM1Yjc3ZDkzOTQ1NGYuLmI5ZDM4ZjA0NzQ4ZGQxM2IzZDRmZDJlMzI2NzA4
NjM1ODU3ZjI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8VmlkZW9GcmFtZUdTdHJl
YW1lcj4gVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVm
ZmVyJiYgcGl4ZWxCdWZmZXIsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgY29u
c3QgSW50U2l6ZSYgZGVzdGluYXRpb25TaXplLCBkb3VibGUgZnJhbWVSYXRlLCBWaWRlb1JvdGF0
aW9uIHZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhKQorUmVmPFZpZGVvRnJhbWVHU3RyZWFtZXI+
IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYm
IHBpeGVsQnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGNvbnN0IElu
dFNpemUmIGRlc3RpbmF0aW9uU2l6ZSwgZG91YmxlIGZyYW1lUmF0ZSwgUm90YXRpb24gdmlkZW9S
b3RhdGlvbiwgYm9vbCB2aWRlb01pcnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1l
TWV0YWRhdGE+JiYgbWV0YWRhdGEpCiB7CiAgICAgZW5zdXJlR1N0cmVhbWVySW5pdGlhbGl6ZWQo
KTsKIApAQCAtODUsNyArODUsNyBAQCBSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4gVmlkZW9GcmFt
ZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJgogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVHU3RyZWFtZXIoV1RGTW92ZShzYW1wbGUpLCBGbG9h
dFNpemUod2lkdGgsIGhlaWdodCksIHByZXNlbnRhdGlvblRpbWUsIHZpZGVvUm90YXRpb24sIHZp
ZGVvTWlycm9yZWQsIFdURk1vdmUobWV0YWRhdGEpKSk7CiB9CiAKLVZpZGVvRnJhbWVHU3RyZWFt
ZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25z
dCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0
aW9uVGltZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQs
IHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0YSkKK1ZpZGVv
RnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYg
c2FtcGxlLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGlt
ZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gdmlkZW9Sb3RhdGlvbiwgYm9vbCB2aWRlb01p
cnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0YWRhdGEp
CiAgICAgOiBWaWRlb0ZyYW1lKHByZXNlbnRhdGlvblRpbWUsIHZpZGVvTWlycm9yZWQsIHZpZGVv
Um90YXRpb24pCiAgICAgLCBtX3NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpCiAgICAgLCBtX3ByZXNl
bnRhdGlvblNpemUocHJlc2VudGF0aW9uU2l6ZSkKQEAgLTk4LDcgKzk4LDcgQEAgVmlkZW9GcmFt
ZUdTdHJlYW1lcjo6VmlkZW9GcmFtZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1w
bGUsIGNvbnN0IEZsb2EKICAgICAgICAgYnVmZmVyID0gd2Via2l0R3N0QnVmZmVyU2V0VmlkZW9G
cmFtZVRpbWVNZXRhZGF0YShidWZmZXIsIFdURk1vdmUobWV0YWRhdGEpKTsKIH0KIAotVmlkZW9G
cmFtZUdTdHJlYW1lcjo6VmlkZW9GcmFtZUdTdHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBs
ZT4mIHNhbXBsZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBWaWRlb1JvdGF0
aW9uIHZpZGVvUm90YXRpb24pCitWaWRlb0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVh
bWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHBy
ZXNlbnRhdGlvblRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24pCiAgICAgOiBWaWRlb0ZyYW1l
KHByZXNlbnRhdGlvblRpbWUsIGZhbHNlLCB2aWRlb1JvdGF0aW9uKQogICAgICwgbV9zYW1wbGUo
c2FtcGxlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKaW5kZXggMTFiZjkwMmMw
MGMxYTkzMjEzYTU5MDViNzhmMjg5YjczZjgxNDYxMy4uMWM4MGMyMmUwMjY2NTk2NmQxN2I5OGE4
NmMxMjUyNmUxNmZiOTA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCkBAIC0z
MCwyNiArMzAsMjcgQEAgY2xhc3MgUGl4ZWxCdWZmZXI7CiAKIGNsYXNzIFZpZGVvRnJhbWVHU3Ry
ZWFtZXIgZmluYWwgOiBwdWJsaWMgVmlkZW9GcmFtZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxl
LCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGltZSYgcHJl
c2VudGF0aW9uVGltZSA9IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgVmlkZW9Sb3RhdGlvbiB2
aWRlb1JvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01pcnJvcmVkID0g
ZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0YSA9
IHN0ZDo6bnVsbG9wdCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvRnJhbWVHU3RyZWFtZXI+IGNyZWF0
ZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0
aW9uU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjpp
bnZhbGlkVGltZSgpLCBSb3RhdGlvbiB2aWRlb1JvdGF0aW9uID0gUm90YXRpb246Ok5vbmUsIGJv
b2wgdmlkZW9NaXJyb3JlZCA9IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGE+JiYgbWV0YWRhdGEgPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lR1N0cmVhbWVyKFdURk1vdmUoc2FtcGxlKSwgcHJlc2Vu
dGF0aW9uU2l6ZSwgcHJlc2VudGF0aW9uVGltZSwgdmlkZW9Sb3RhdGlvbiwgdmlkZW9NaXJyb3Jl
ZCwgV1RGTW92ZShtZXRhZGF0YSkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFZpZGVvRnJh
bWVHU3RyZWFtZXI+IGNyZWF0ZVdyYXBwZWRTYW1wbGUoY29uc3QgR1JlZlB0cjxHc3RTYW1wbGU+
JiBzYW1wbGUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgVmlkZW9Sb3RhdGlv
biB2aWRlb1JvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSkKKyAgICBzdGF0aWMgUmVmPFZp
ZGVvRnJhbWVHU3RyZWFtZXI+IGNyZWF0ZVdyYXBwZWRTYW1wbGUoY29uc3QgR1JlZlB0cjxHc3RT
YW1wbGU+JiBzYW1wbGUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRp
b24gdmlkZW9Sb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUdTdHJlYW1lcihzYW1wbGUsIHByZXNlbnRhdGlvblRp
bWUsIHZpZGVvUm90YXRpb24pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFZpZGVvRnJhbWVH
U3RyZWFtZXI+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYmLCBjb25zdCBNZWRp
YVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIGNvbnN0
IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSA9IHsgfSwgZG91YmxlIGZyYW1lUmF0ZSA9IDEsIFZp
ZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlk
ZW9NaXJyb3JlZCA9IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+
JiYgbWV0YWRhdGEgPSBzdGQ6Om51bGxvcHQpOworICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdT
dHJlYW1lcj4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYsIGNvbnN0IE1lZGlh
VGltZSYgcHJlc2VudGF0aW9uVGltZSA9IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgY29uc3Qg
SW50U2l6ZSYgZGVzdGluYXRpb25TaXplID0geyB9LCBkb3VibGUgZnJhbWVSYXRlID0gMSwgUm90
YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQg
PSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRh
ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIEdzdFNhbXBsZSogc2FtcGxlKCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBWaWRlb0ZyYW1lR1N0cmVhbWVy
KEdSZWZQdHI8R3N0U2FtcGxlPiYmLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUs
IGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSA9IE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSwgVmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlkZW9NaXJy
b3JlZCA9IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgPSBz
dGQ6Om51bGxvcHQpOwotICAgIFZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1JlZlB0cjxHc3RT
YW1wbGU+JiwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBWaWRlb1JvdGF0aW9u
ID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSk7CisgICAgVmlkZW9GcmFtZUdTdHJlYW1lcihHUmVmUHRy
PEdzdFNhbXBsZT4mJiwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBN
ZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIFJv
dGF0aW9uID0gUm90YXRpb246Ok5vbmUsIGJvb2wgdmlkZW9NaXJyb3JlZCA9IGZhbHNlLCBzdGQ6
Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOworICAg
IFZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1JlZlB0cjxHc3RTYW1wbGU+JiwgY29uc3QgTWVk
aWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lKTsKIAog
ICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
cmVzZW50YXRpb25TaXplOyB9CiAgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IGdl
dFJHQkFJbWFnZURhdGEoKSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJfdCBwaXhlbEZvcm1hdCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KIAogICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBtX3Nh
bXBsZTsKICAgICBGbG9hdFNpemUgbV9wcmVzZW50YXRpb25TaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5oCmluZGV4IDAzODE4OWY3NDdkZmJiMjhmODc1ZjdlNjdmNWJjMWZhMzE1ODZjZmMuLjhl
NzlmNGJlYTgzNDBkYmQ2NzExZGRjMjhlMmE3MDhlYjlhODYyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9uczsKIAogY2xhc3MgTWVkaWFSZWNvcmRlclByaXZhdGUKICAgICA6IHB1YmxpYyBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpb1NhbXBsZU9ic2VydmVyCi0gICAgLCBwdWJsaWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciB7CisgICAgLCBwdWJsaWMgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIHsKIHB1YmxpYzoKICAgICB+TWVkaWFSZWNv
cmRlclByaXZhdGUoKTsKIApAQCAtMTE2LDEyICsxMTYsMTIgQEAgaW5saW5lIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGU6OnNldEF1ZGlvU291cmNlKFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiYmIGEKIGlubGluZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZXRWaWRlb1NvdXJjZShS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiB2aWRlb1NvdXJjZSkKIHsKICAgICBpZiAobV92
aWRlb1NvdXJjZSkKLSAgICAgICAgbV92aWRlb1NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNl
cnZlcigqdGhpcyk7CisgICAgICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNl
cnZlcigqdGhpcyk7CiAKICAgICBtX3ZpZGVvU291cmNlID0gV1RGTW92ZSh2aWRlb1NvdXJjZSk7
CiAKICAgICBpZiAobV92aWRlb1NvdXJjZSkKLSAgICAgICAgbV92aWRlb1NvdXJjZS0+YWRkVmlk
ZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1fdmlkZW9Tb3VyY2UtPmFkZFZpZGVv
RnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIGlubGluZSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6
fk1lZGlhUmVjb3JkZXJQcml2YXRlKCkKQEAgLTEzMiw3ICsxMzIsNyBAQCBpbmxpbmUgTWVkaWFS
ZWNvcmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCiAgICAgaWYgKG1fYXVkaW9T
b3VyY2UpCiAgICAgICAgIG1fYXVkaW9Tb3VyY2UtPnJlbW92ZUF1ZGlvU2FtcGxlT2JzZXJ2ZXIo
KnRoaXMpOwogICAgIGlmIChtX3ZpZGVvU291cmNlKQotICAgICAgICBtX3ZpZGVvU291cmNlLT5y
ZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgbV92aWRlb1NvdXJjZS0+
cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDFjMGQz
ZTUzYzYxYzJmMTY4ZmE1ZGNmZWZlM2RhMmMzNjNkMjkyYmQuLmE3NGViZGQ5MzZhNDU1MjMxNDE2
NDgxNWQxZDk4NzgxNmRlZDQ2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHAKQEAgLTgzLDE5ICs4MywxOSBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6c3RhcnRSZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmIGNhbGxiYQogICAg
IGNhbGxiYWNrKFN0cmluZyhtX3dyaXRlci0+bWltZVR5cGUoKSksIG1fd3JpdGVyLT5hdWRpb0Jp
dFJhdGUoKSwgbV93cml0ZXItPnZpZGVvQml0UmF0ZSgpKTsKIH0KIAotdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1w
bGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0Zy
YW1lVGltZU1ldGFkYXRhKQogewogICAgIGlmIChzaG91bGRNdXRlVmlkZW8oKSkgewogICAgICAg
ICBpZiAoIW1fYmxhY2tGcmFtZSkgewotICAgICAgICAgICAgYXV0byBzaXplID0gc2FtcGxlLnBy
ZXNlbnRhdGlvblNpemUoKTsKLSAgICAgICAgICAgIG1fYmxhY2tGcmFtZSA9IFZpZGVvRnJhbWVD
Vjo6Y3JlYXRlKHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb01pcnJvcmVk
KCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgICAgICAgICBhdXRvIHNpemUgPSB2aWRlb0Zy
YW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAgICAgIG1fYmxhY2tGcmFtZSA9IFZpZGVv
RnJhbWVDVjo6Y3JlYXRlKHZpZGVvRnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb0ZyYW1l
LmlzTWlycm9yZWQoKSwgdmlkZW9GcmFtZS5yb3RhdGlvbigpLCBjcmVhdGVCbGFja1BpeGVsQnVm
ZmVyKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICB9CiAgICAgICAgIG1f
d3JpdGVyLT5hcHBlbmRWaWRlb0ZyYW1lKCptX2JsYWNrRnJhbWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgbV9ibGFja0ZyYW1lID0gbnVsbHB0cjsKLSAgICBtX3dyaXRlci0+YXBw
ZW5kVmlkZW9GcmFtZShWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGlt
ZSgpLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBzYW1w
bGUucGl4ZWxCdWZmZXIoKSkpOworICAgIG1fd3JpdGVyLT5hcHBlbmRWaWRlb0ZyYW1lKHZpZGVv
RnJhbWUpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6YXVkaW9TYW1w
bGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24s
IHNpemVfdCBzYW1wbGVDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
CmluZGV4IDk1N2Y1ZDA4Nzc5ZmE5YzM5Mjc3ZTkxNTkzYzU2Mzk2OGNkNzg4MjYuLjEyODk3MzU5
Y2RiZDcwODFlNTljOTFkOGVkYmYwYjVjMDVkNTgxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI+JiYpOwogCiAgICAgLy8gTWVkaWFSZWNvcmRlclByaXZhdGUKLSAgICB2b2lkIHZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7
CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGlt
ZU1ldGFkYXRhKSBmaW5hbDsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdD
YWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRl
eCAwNjE3NmM3NDAwMWVmZGY2ZjQ1OTFmNjhkMmUwMGUxMGE3Y2MwZjhhLi43ZjZkYjNjN2IwNzM3
ZmFmMGNlYjlhYTY5ZThkMGRlMzhkZDBiNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZU1vY2suY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2Nr
OjpyZXN1bWVSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZp
ZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX2J1ZmZlckxvY2sgfTsKICAgICBtX2J1ZmZlci5hcHBlbmQoIlZpZGVvIFRyYWNrIElEOiAi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oCmluZGV4IDcyOTY0NjI1NTM2YzZmMTIw
OTIwMzA4MmZmM2UwYjZhN2EzNzcyN2EuLmY5MzU5MGE4MDg2NzVmZDgzM2RkMjQ0YTI4ZjM3YjU1
ZjA1ODgwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gTWVkaWFSZWNvcmRlclByaXZhdGUKLSAg
ICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVN
ZXRhZGF0YSkgZmluYWw7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUm
LCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKICAgICB2b2lkIGZldGNoRGF0YShGZXRj
aERhdGFDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCBhZGNlNDgzMDJmNWRhOWY3
MzA1ZjlkZjJmNGJiYjA4YzBjZDFlZGYwLi5mYWFjNmM5ODhjZTZhMzcxZWYyNTNlYThmYjlmOTVl
ZTYxZDkzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaApAQCAtMTMyLDcgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hh
c0VuY29kZWRWaWRlb1NhbXBsZXMgeyBmYWxzZSB9OwogCiAgICAgUmV0YWluUHRyPFdlYkFWQXNz
ZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0ZXJEZWxlZ2F0ZTsKLSAgICBEZXF1ZTxSZXRhaW5QdHI8
Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlOworICAgIERlcXVl
PFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+IG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZTsK
ICAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3BlbmRpbmdBdWRpb1Nh
bXBsZVF1ZXVlOwogCiAgICAgYm9vbCBtX2lzRmx1c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpp
bmRleCAzMTY2ZTgxNDYyOWU5MDQ4ZTEwZDRjODkwYjg5YTJhN2U2MjBjMjUzLi4wMjRmMDlkZmU3
Y2U5ZjlmZjE5YzJlODBhMDA1YTAwOGY3YTU5YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJv
b2wgaGFzQXVkaW8sIGJvb2wgaGFzVmkKIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogewogICAgIG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVl
dWUuY2xlYXIoKTsKLSAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7CisgICAg
bV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFyKCk7CiAgICAgaWYgKG1fd3JpdGVyKSB7CiAg
ICAgICAgIFttX3dyaXRlciBjYW5jZWxXcml0aW5nXTsKICAgICAgICAgbV93cml0ZXIuY2xlYXIo
KTsKQEAgLTI4MywxNSArMjgzLDE1IEBAIGJvb2wgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcklmUG9zc2libGUoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9pc0ZsdXNoaW5nU2FtcGxlcykgewotICAgICAgICBt
X3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAg
ICBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9TYW1w
bGVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JN
b3JlTWVkaWFEYXRhXSkKLSAgICAgICAgYXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVy
KG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUudGFrZUZpcnN0KCkuZ2V0KCkpOworICAgIHdoaWxl
ICghbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmlzRW1wdHkoKSAmJiBbbV92aWRlb0Fzc2V0V3Jp
dGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQorICAgICAgICBhcHBlbmRDb21wcmVz
c2VkVmlkZW9TYW1wbGVCdWZmZXIobV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgp
LmdldCgpKTsKIAogICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JN
b3JlTWVkaWFEYXRhXSkgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
MzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1w
bGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVySW5wdXQgKmFzCiB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBib29sIGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMgPSAh
bV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCk7Ci0gICAgYm9vbCBoYXNQZW5kaW5n
VmlkZW9TYW1wbGVzID0gIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpOworICAg
IGJvb2wgaGFzUGVuZGluZ1ZpZGVvU2FtcGxlcyA9ICFtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUu
aXNFbXB0eSgpOwogCiAgICAgaWYgKG1faGFzRW5jb2RlZFZpZGVvU2FtcGxlcykgewogICAgICAg
ICBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzIHw9ICFbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNS
ZWFkeUZvck1vcmVNZWRpYURhdGFdOwpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoRnVuY3Rpb248
dm9pZCgpPiYmCiAKICAgICBBU1NFUlQoIW1faXNGbHVzaGluZ1NhbXBsZXMpOwogICAgIG1faXNG
bHVzaGluZ1NhbXBsZXMgPSB0cnVlOwotICAgIGF1dG8gYmxvY2sgPSBtYWtlQmxvY2tQdHIoW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMs
IGhhc1BlbmRpbmdWaWRlb1NhbXBsZXMsIGF1ZGlvU2FtcGxlUXVldWUgPSBXVEZNb3ZlKG1fcGVu
ZGluZ0F1ZGlvU2FtcGxlUXVldWUpLCB2aWRlb1NhbXBsZVF1ZXVlID0gV1RGTW92ZShtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJsb2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBoYXNQZW5kaW5nQXVkaW9TYW1wbGVzLCBoYXNQZW5kaW5nVmlkZW9T
YW1wbGVzLCBhdWRpb1NhbXBsZVF1ZXVlID0gV1RGTW92ZShtX3BlbmRpbmdBdWRpb1NhbXBsZVF1
ZXVlKSwgdmlkZW9TYW1wbGVRdWV1ZSA9IFdURk1vdmUobV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVl
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTM4Niw5ICszODYsOSBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjph
cHBlbmRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIGZyYW1lKQogICAgIGlmICghbV9maXJzdFZpZGVv
RnJhbWUpIHsKICAgICAgICAgbV9maXJzdFZpZGVvRnJhbWUgPSB0cnVlOwogICAgICAgICBtX3Jl
c3VtZWRWaWRlb1RpbWUgPSBQQUw6OkNNQ2xvY2tHZXRUaW1lKFBBTDo6Q01DbG9ja0dldEhvc3RU
aW1lQ2xvY2soKSk7Ci0gICAgICAgIGlmIChmcmFtZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfHwgZnJhbWUudmlkZW9NaXJyb3JlZCgpKSB7Ci0g
ICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRp
b24oc3RhdGljX2Nhc3Q8aW50PihmcmFtZS52aWRlb1JvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7
Ci0gICAgICAgICAgICBpZiAoZnJhbWUudmlkZW9NaXJyb3JlZCgpKQorICAgICAgICBpZiAoZnJh
bWUucm90YXRpb24oKSAhPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB8fCBmcmFtZS5pc01p
cnJvcmVkKCkpIHsKKyAgICAgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxpbnQ+KGZyYW1lLnJvdGF0aW9uKCkpICogTV9Q
SSAvIDE4MCk7CisgICAgICAgICAgICBpZiAoZnJhbWUuaXNNaXJyb3JlZCgpKQogICAgICAgICAg
ICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxlKCptX3ZpZGVv
VHJhbnNmb3JtLCAtMSwgMSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CmluZGV4IDRhOTU3OTg3MmE3NzE1ZTU0MDQzOTVkMDU3NGRjNGRkNzFlZmIyMzkuLjZmYTNiMWUw
MWQ0ODg5NGM1YTU0NzU3ZjVkMTA2N2RmZWU0YTUxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
CkBAIC03NSwxOCArNzUsMTggQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVBdWRp
b1NhbXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2JzZXJ2ZXImIG9ic2VydmUKICAgICBtX2F1ZGlv
U2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOwogfQogCi12b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYgb2Jz
ZXJ2ZXIpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZFZpZGVvRnJhbWVPYnNlcnZlcihW
aWRlb0ZyYW1lT2JzZXJ2ZXImIG9ic2VydmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0g
ICAgbV92aWRlb1NhbXBsZU9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9jayB9OworICAgIG1fVmlkZW9GcmFtZU9ic2Vy
dmVycy5hZGQoJm9ic2VydmVyKTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1v
dmVWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2FtcGxlT2JzZXJ2ZXImIG9ic2VydmVyKQordm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFt
ZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayB9OwotICAgIG1fdmlk
ZW9TYW1wbGVPYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fVmlkZW9GcmFtZU9ic2VydmVyc0xvY2sgfTsKKyAgICBtX1ZpZGVvRnJhbWVPYnNlcnZlcnMu
cmVtb3ZlKCZvYnNlcnZlcik7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2Jz
ZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6dXBkYXRlSGFzU3RhcnRlZFByb2R1Y2luZ0RhdGEoKQogICAgIH0pOwog
fQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiBtZWRpYVNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKK3Zv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2
aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQogewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICsrbV9mcmFtZUNvdW50OwpAQCAtMjEwLDkgKzIxMCw5IEBA
IHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1w
bGUmIG1lZGlhU2FtcGxlLCBWaWRlb0ZyCiAKICAgICB1cGRhdGVIYXNTdGFydGVkUHJvZHVjaW5n
RGF0YSgpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2Nr
IH07Ci0gICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMpCi0g
ICAgICAgIG9ic2VydmVyLT52aWRlb1NhbXBsZUF2YWlsYWJsZShtZWRpYVNhbXBsZSwgbWV0YWRh
dGEpOworICAgIExvY2tlciBsb2NrZXIgeyBtX1ZpZGVvRnJhbWVPYnNlcnZlcnNMb2NrIH07Cisg
ICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fVmlkZW9GcmFtZU9ic2VydmVycykKKyAgICAgICAg
b2JzZXJ2ZXItPnZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQog
CiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggNzM0ODM1MmJlMjUxOTM1OGI1NDZkZTY4ZDBjM2I4
OTJhOWY0NGU0ZS4uMWE4OTk4ZGUzYjc5ZWM0MDZjOTZhZDBhM2Y0OTM2MzJlNzc4MzhhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaApAQCAtMzgsMTAgKzM4LDEwIEBACiAjaW5jbHVkZSAiQ2FwdHVyZURl
dmljZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5o
IgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgog
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNp
bmNsdWRlICJWaWRlb0ZyYW1lVGltZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTk4LDEyICs5OCwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIE1heSBiZSBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4K
ICAgICAgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRp
bWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mLCBzaXplX3QgLypudW1iZXJPZkZyYW1lcyovKSA9IDA7CiAgICAgfTsKLSAgICBjbGFzcyBW
aWRlb1NhbXBsZU9ic2VydmVyIHsKKyAgICBjbGFzcyBWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAg
IHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+VmlkZW9TYW1wbGVPYnNlcnZlcigpID0gZGVmYXVs
dDsKKyAgICAgICAgdmlydHVhbCB+VmlkZW9GcmFtZU9ic2VydmVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgICAgIC8vIE1heSBiZSBjYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmlkZW9GcmFtZUF2YWls
YWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgPSAwOwogICAgIH07CiAK
ICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNlKCkgPSBkZWZhdWx0OwpAQCAtMTQ3LDgg
KzE0Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEF1ZGlvU2FtcGxl
T2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZlcihBdWRpb1NhbXBsZU9ic2VydmVyJik7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNl
cnZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZl
cihWaWRlb1NhbXBsZU9ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaWRl
b0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2VydmVyJik7CiAKICAg
ICBjb25zdCBJbnRTaXplIHNpemUoKSBjb25zdDsKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50
U2l6ZSYpOwpAQCAtMjUwLDcgKzI1MCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxp
emVTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKSB7IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7
IH0KICAgICB2b2lkIGluaXRpYWxpemVFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxh
dGlvbikgeyBtX2VjaG9DYW5jZWxsYXRpb24gPSBlY2hvQ2FuY2VsbGF0aW9uOyB9CiAKLSAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRh
ZGF0YSk7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0Zy
YW1lVGltZU1ldGFkYXRhKTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpOwogCiAgICAgdm9pZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgRnVu
Y3Rpb248dm9pZChPYnNlcnZlciYpPiYpOwpAQCAtMjg5LDggKzI4OSw4IEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSBMb2NrIG1fYXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrOwogICAgIEhhc2hTZXQ8
QXVkaW9TYW1wbGVPYnNlcnZlcio+IG1fYXVkaW9TYW1wbGVPYnNlcnZlcnMgV1RGX0dVQVJERURf
QllfTE9DSyhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CiAKLSAgICBtdXRhYmxlIExvY2sg
bV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2s7Ci0gICAgSGFzaFNldDxWaWRlb1NhbXBsZU9ic2Vy
dmVyKj4gbV92aWRlb1NhbXBsZU9ic2VydmVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fdmlkZW9T
YW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBtdXRhYmxlIExvY2sgbV9WaWRlb0ZyYW1lT2JzZXJ2
ZXJzTG9jazsKKyAgICBIYXNoU2V0PFZpZGVvRnJhbWVPYnNlcnZlcio+IG1fVmlkZW9GcmFtZU9i
c2VydmVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fVmlkZW9GcmFtZU9ic2VydmVyc0xvY2spOwog
CiAgICAgLy8gU2V0IG9uIHRoZSBtYWluIHRocmVhZCBmcm9tIGNvbnN0cmFpbnRzLgogICAgIElu
dFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXgg
OWE3MTA1NWQ4NmIzZTEwOWZmMjkxNzg3MmNmYmIwYjI0ODRjZGJmYS4uMjczNmE0M2U3NmU5OTVk
ZWQ4NjAwYjc0MWQ4NTdkMDhlZTk5YTFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlOjpvYnNlcnZlU291cmNlKCkKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp1
bm9ic2VydmVTb3VyY2UoKQogewogICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKLSAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2Vy
dmVyKCp0aGlzKTsKKyAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1l
T2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiBuZXdTb3VyY2UpCkBAIC0x
MTQsMTMgKzExNCwxMyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RvcCgp
CiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6dXBkYXRlQmxhY2tGcmFtZXNTZW5k
aW5nKCkKIHsKICAgICBpZiAoIW1fbXV0ZWQgJiYgbV9lbmFibGVkKSB7Ci0gICAgICAgIG1fdmlk
ZW9Tb3VyY2UtPnNvdXJjZSgpLmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAg
ICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5hZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwog
ICAgICAgICBpZiAobV9ibGFja0ZyYW1lVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgICAgIG1f
YmxhY2tGcmFtZVRpbWVyLnN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
dmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOwor
ICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhp
cyk7CiAgICAgc2VuZEJsYWNrRnJhbWVzSWZOZWVkZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2UuaAppbmRleCBiMmFjMTY5MDBhM2I1NmJmNzZhMGE1YzEyMGY4ZGQyMWZi
N2M5NmU4Li4zMGUyZjkzN2IyNGE1NGM1NDY3YjQ4Mjk1YmRjMGJmOWE0YjAwODBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2UKICAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1h
aW4+CiAgICAgLCBwdWJsaWMgd2VicnRjOjpWaWRlb1RyYWNrU291cmNlSW50ZXJmYWNlCiAgICAg
LCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlcgotICAgICwgcHJpdmF0
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwcml2YXRl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlcgogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgpAQCAtMTM0LDgg
KzEzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgaW5pdGlhbGl6ZUZyb21Tb3VyY2UoKTsgfQogICAg
IHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQogCi0g
ICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRh
ZGF0YSkgb3ZlcnJpZGUgeyB9CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFt
ZU9ic2VydmVyIEFQSQorICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJpZGUgeyB9CiAKICAgICBSZWY8TWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU+IG1fdmlkZW9Tb3VyY2U7CiAgICAgVGltZXIgbV9ibGFja0ZyYW1lVGlt
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggNTc5OWQwMDM4OTEy
NWU0Y2ZiYjliZTljYTNhYTA1ZGNhMWY1ZmMzNy4uZWQ3ZDU2NGE5OTgxYWEwNmIxNmRkZmJjYTEx
NDg3MTFjZDc5N2ViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAt
MzY1LDkgKzM2NSw5IEBAIHZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVB
bmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzCiAgICAgc2V0RnJhbWVSYXRl
KG1hdGNoLT5yZXF1ZXN0ZWRGcmFtZVJhdGUpOwogfQogCi12b2lkIFJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlOjpkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmIHNh
bXBsZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVh
bHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3BhdGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFZp
ZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0
YWRhdGEpCiB7Ci0gICAgTWVkaWFUaW1lIHNhbXBsZVRpbWUgPSBzYW1wbGUucHJlc2VudGF0aW9u
VGltZSgpOworICAgIE1lZGlhVGltZSBzYW1wbGVUaW1lID0gdmlkZW9GcmFtZS5wcmVzZW50YXRp
b25UaW1lKCk7CiAKICAgICBhdXRvIGZyYW1lVGltZSA9IHNhbXBsZVRpbWUudG9Eb3VibGUoKTsK
ICAgICBtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBzLmFwcGVuZChmcmFtZVRpbWUpOwpAQCAtMzc5
LDcgKzM3OSw3IEBAIHZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3BhdGNoTWVk
aWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYgc2FtCiAgICAgaWYgKGludGVydmFsID4g
MSkKICAgICAgICAgbV9vYnNlcnZlZEZyYW1lUmF0ZSA9IChtX29ic2VydmVkRnJhbWVUaW1lU3Rh
bXBzLnNpemUoKSAvIGludGVydmFsKTsKIAotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBs
ZSwgbWV0YWRhdGEpOworICAgIHZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRh
dGEpOwogfQogCiB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVk
U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVy
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCA0ZTA5YWUyMWY0NTgzYWJmNDczMjY3ODljZmJmMmIy
N2VjMzlkOTYyLi4wYmRjMGQ1NjQ0MTcwM2ZmYzgzODcwNzk0Yjc1NjIzMDI4YjU3ZTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVv
Q2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJN
ZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRl
ICJWaWRlb1ByZXNldC5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC00Niw3ICs0NSw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9u
YWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxk
b3VibGU+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVQcmVzZXRzKCkgPSAw
OwotICAgIHZpcnR1YWwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb24o
KSBjb25zdCB7IHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQorICAg
IHZpcnR1YWwgVmlkZW9GcmFtZTo6Um90YXRpb24gdmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7IH0KIAogICAgIGRvdWJsZSBvYnNl
cnZlZEZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRGcmFtZVJhdGU7IH0KICAg
ICBWZWN0b3I8VmlkZW9QcmVzZXREYXRhPiBwcmVzZXRzRGF0YSgpOwpAQCAtNzMsNyArNzIsNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzJik7CiAKLSAgICB2b2lkIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09i
c2VydmVycyhNZWRpYVNhbXBsZSYsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOwor
ICAgIHZvaWQgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9PYnNlcnZlcnMoVmlkZW9GcmFtZSYsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpOwogCiAgICAgc3RhdGljIFNwYW48Y29uc3QgSW50U2l6ZT4gc3Rh
bmRhcmRWaWRlb1NpemVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggYTIzNWQ0MjNm
MjkxMDRjNTk0OTI4NTRmMGY3NTdhZjA3ZjkyNGEyOC4uZjllODRmN2I1NzQwODhmMGNkZjY5YTVm
OTU0ODQ4NjA3ZDdiYTQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6UmVhbHRpbWVWaWRlb1NvdXJjZShSZWY8UmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U+JiYgc291cmMKIAogUmVhbHRpbWVWaWRlb1NvdXJjZTo6flJlYWx0
aW1lVmlkZW9Tb3VyY2UoKQogewotICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2Vy
dmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlz
KTsKICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQogCkBAIC02OSwxOCAr
NjksMTggQEAgdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp3aGVuUmVhZHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxiYWNrKQogdm9pZCBSZWFsdGltZVZpZGVvU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewogICAgIG1fc291cmNlLT5zdGFydCgpOwotICAgIG1f
c291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+YWRk
VmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogdm9pZCBSZWFsdGltZVZpZGVvU291cmNl
OjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIo
KnRoaXMpOwogICAgIG1fc291cmNlLT5zdG9wKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6ZW5kUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2
ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5yZXF1ZXN0VG9FbmQoKnRoaXMpOwogfQogCkBAIC0x
MjUsMTIgKzEyNSwxMiBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hh
bmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c291cmNlU2V0dGluZ3NDaGFuZ2Vk
KCkKIHsKLSAgICBhdXRvIHJvdGF0aW9uID0gbV9zb3VyY2UtPnNhbXBsZVJvdGF0aW9uKCk7Cisg
ICAgYXV0byByb3RhdGlvbiA9IG1fc291cmNlLT52aWRlb0ZyYW1lUm90YXRpb24oKTsKICAgICBh
dXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAg
ICBzaXplID0gbV9zb3VyY2UtPnNpemUoKTsKIAotICAgIGlmIChyb3RhdGlvbiA9PSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgaWYgKHJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpMZWZ0IHx8IHJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAg
ICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKIAogICAgIG1fY3VycmVudFNldHRp
bmdzLnNldFdpZHRoKHNpemUud2lkdGgoKSk7CkBAIC0xNzIsMTAgKzE3MiwxMCBAQCB2b2lkIFJl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVN0b3BwZWQoKQogfQogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi1SZWZQdHI8TWVkaWFTYW1wbGU+IFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFkYXB0VmlkZW9G
cmFtZShNZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSkKK1JlZlB0cjxWaWRlb0ZyYW1lPiBSZWFsdGlt
ZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsK
LSAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
bi0+cGl4ZWxGb3JtYXQoKSAhPSB2aWRlb0ZyYW1lLnZpZGVvUGl4ZWxGb3JtYXQoKSkKLSAgICAg
ICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0
ZSh2aWRlb0ZyYW1lLnZpZGVvUGl4ZWxGb3JtYXQoKSwgbV9zaG91bGRVc2VJT1N1cmZhY2UpOwor
ICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9u
LT5waXhlbEZvcm1hdCgpICE9IHZpZGVvRnJhbWUucGl4ZWxGb3JtYXQoKSkKKyAgICAgICAgbV9p
bWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRl
b0ZyYW1lLnBpeGVsRm9ybWF0KCksIG1fc2hvdWxkVXNlSU9TdXJmYWNlKTsKIAogICAgIEFTU0VS
VChtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKTsKICAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Np
b24pCkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVv
U291cmNlOjphZGFwdFZpZGVvRnJhbWUoTWVkaWFTYW1wbGUmIHZpZGVvRnJhbWUKIH0KICNlbmRp
ZgogCi12b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQordm9p
ZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7CiAgICAgaWYgKG1f
ZnJhbWVEZWNpbWF0aW9uID4gMSAmJiArK21fZnJhbWVEZWNpbWF0aW9uQ291bnRlciAlIG1fZnJh
bWVEZWNpbWF0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCB2b2lk
IFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2
aWRlb0ZyYW1lLCBWaWRlb0ZyYQogICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBp
ZiAoIXNpemUuaXNFbXB0eSgpICYmIHNpemUgIT0gZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUu
cHJlc2VudGF0aW9uU2l6ZSgpKSkgewogICAgICAgICBpZiAoYXV0byBuZXdWaWRlb0ZyYW1lID0g
YWRhcHRWaWRlb0ZyYW1lKHZpZGVvRnJhbWUpKSB7Ci0gICAgICAgICAgICBSZWFsdGltZU1lZGlh
U291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgqbmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOwor
ICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSgqbmV3
VmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCiAKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWls
YWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlk
ZW9GcmFtZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7CiB9CiAKIFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiBSZWFsdGltZVZpZGVvU291cmNlOjpjbG9uZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNl
LmgKaW5kZXggYTcxOTQ5Nzg5ZTRlMDVhOTBhODlmYzE0MDNiYjgwODhjZmZiZjhhOC4uNjQ2ZDU4
YTIyMzdjYWM2NWM5MGVkMjY0MjgwMzEyZTc5MmZiZWY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOwogY2xhc3MgUmVh
bHRpbWVWaWRlb1NvdXJjZSBmaW5hbAogICAgIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UK
ICAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgotICAgICwgcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgICwgcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxSZWFsdGltZVZpZGVvU291cmNlPiBjcmVhdGUoUmVmPFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlPiYmIHNvdXJjZSwgYm9vbCBzaG91bGRVc2VJT1N1cmZhY2UgPSB0cnVlKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1lVmlkZW9Tb3VyY2UoV1RGTW92ZShzb3VyY2Up
LCBzaG91bGRVc2VJT1N1cmZhY2UpKTsgfQogCkBAIC03MSwxMSArNzEsMTEgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5hbDsKICAgICBib29sIHByZXZlbnRTb3VyY2VG
cm9tU3RvcHBpbmcoKSBmaW5hbDsKIAotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
U2FtcGxlT2JzZXJ2ZXIKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxl
JiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyCisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZp
ZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gYWRhcHRWaWRlb0ZyYW1lKE1lZGlhU2Ft
cGxlJik7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+IGFkYXB0VmlkZW9GcmFtZShWaWRlb0ZyYW1l
Jik7CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKaW5kZXggZjgwY2NlZWRk
YTc2MGZlZmI3ZTdmZjM5YTBjOWNkNzdhOGIwYThmYy4uNmNkMjkwNzNiZjAxY2UyZjQ1Y2MyMTk1
MWJiYTU2NmQ1NTc3MWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vVmlkZW9QcmVzZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9WaWRlb1ByZXNldC5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiTWVkaWFTYW1w
bGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA2ZWU5NGEwZmE0YmY3ZDBkZDVkYzQ4OGI4MDBkMWVh
MGE1M2FkZDEyLi40MDMwNGFiZTY5MDZjYjFmMzRjNzBhZDJjNjBkNDA4ZjZiYjdiOTg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcApAQCAtMjkzLDM1ICsy
OTMsMzUgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUoKQogICAg
ICAgICB1cGRhdGVGcmFtZVNpemUoKTsKICAgICB9CiAKLSAgICBhdXRvIHNhbXBsZSA9IFdURjo6
c3dpdGNoT24oZnJhbWUsCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8SU9T
dXJmYWNlUmVmPiYgc3VyZmFjZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgYXV0byB2
aWRlb0ZyYW1lID0gV1RGOjpzd2l0Y2hPbihmcmFtZSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRp
bWVdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiBzdXJmYWNlKSAtPiBSZWZQdHI8VmlkZW9GcmFt
ZT4gewogICAgICAgICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3Jl
YXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKHN1
cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0
aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPE1l
ZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1h
Z2U+JiBpbWFnZSkgLT4gUmVmUHRyPFZpZGVvRnJhbWU+IHsKICAgICAgICAgICAgIGlmICghaW1h
Z2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVy
biBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZS0+cGxhdGZv
cm1JbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOworICAgICAgICAgICAgcmV0dXJu
IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZVZpZGVvRnJhbWUoaW1hZ2UtPnBsYXRmb3Jt
SW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAgICAgfSwKLSAgICAgICAg
W3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4mIHNhbXBsZSkg
LT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiBzYW1wbGUpIC0+IFJlZlB0cjxWaWRlb0ZyYW1lPiB7
CiAgICAgICAgICAgICBpZiAoIXNhbXBsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1l
ZGlhU2FtcGxlKHNhbXBsZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAg
IHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKHNhbXBsZS5n
ZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAgICAgICAgfQogICAgICk7CiAKLSAgICBpZiAo
IXNhbXBsZSkgeworICAgIGlmICghdmlkZW9GcmFtZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEgbWV0YWRhdGE7CiAgICAgbWV0YWRhdGEuY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpz
YW1wbGUuZ2V0KCksIG1ldGFkYXRhKTsKKyAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKCp2aWRlb0Zy
YW1lLmdldCgpLCBtZXRhZGF0YSk7CiB9CiAKIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6Y2FwdHVyZXJDb25maWd1cmF0aW9uQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hLmgKaW5kZXggYjllYjA4NWQ0NzQ5MzRjNWUwNTFhNzVhYjFkZDAzY2M1
NGU3Zjg1Mi4uNDQ4NjJkNWM5NjRmY2VkOTYzMmU2NGI2MTM1NzlkM2U3MDQ5OGNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRl
IDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTM2LDEwICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotCi10eXBlZGVmIHN0cnVj
dCBDR0ltYWdlICpDR0ltYWdlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhl
bEJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7Cit1
c2luZyBDR0ltYWdlUmVmID0gQ0dJbWFnZSo7Cit1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3Ry
dWN0IF9fQ1ZCdWZmZXIqOwordXNpbmcgSU9TdXJmYWNlUmVmID0gc3RydWN0IF9fSU9TdXJmYWNl
KjsKK3VzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0gc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVy
KjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNZWRpYVRpbWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAppbmRleCA2YWIxYWFhMTE1MThh
M2I3OTc1N2QwMWRmMmE2OWFmYjY2MzY2MGVkLi5iYmM4ZDI2MjI5NGMyNmU5NTEwZTdhMjgzZTQ5
OWRjNDI0NWI4YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0
cmVhbVNvdXJjZS5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRNZWRp
YVN0cmVhbVNyY0Vuc3VyZVN0cmVhbUNvbGxlY3Rpb25Qb3N0ZWQoV2ViS2l0TWVkaWFTdHJlYW1T
cgogCiBjbGFzcyBJbnRlcm5hbFNvdXJjZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6T2JzZXJ2ZXIsCiAgICAgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
U2FtcGxlT2JzZXJ2ZXIsCi0gICAgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2Ft
cGxlT2JzZXJ2ZXIgeworICAgIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1l
T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIElu
dGVybmFsU291cmNlKEdzdEVsZW1lbnQqIHBhcmVudCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
IHRyYWNrLCBjb25zdCBTdHJpbmcmIHBhZE5hbWUpCkBAIC0xNzUsNyArMTc1LDcgQEAgcHVibGlj
OgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRpbygpKQogICAgICAgICAgICAgbV90cmFjay5z
b3VyY2UoKS5hZGRBdWRpb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAo
bV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5hZGRWaWRl
b1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fdHJhY2suc291cmNlKCkuYWRk
VmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV9pc09ic2VydmluZyA9IHRydWU7
CiAgICAgfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV90cmFj
ay5oYXNBdWRpbygpKQogICAgICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5yZW1vdmVBdWRpb1Nh
bXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygp
KQotICAgICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICAgICAgICAgIG1fdHJhY2suc291cmNlKCkucmVtb3ZlVmlkZW9GcmFtZU9i
c2VydmVyKCp0aGlzKTsKICAgICAgICAgbV90cmFjay5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAg
ICAgfQogCkBAIC0yNjYsMTMgKzI2NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsCisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZp
ZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsCiAgICAg
ewogICAgICAgICBpZiAoIW1fcGFyZW50IHx8ICFtX2lzT2JzZXJ2aW5nKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGF1dG8gc2FtcGxlU2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25T
aXplKCk7Ci0gICAgICAgIEludFNpemUgY2FwdHVyZVNpemUoc2FtcGxlU2l6ZS53aWR0aCgpLCBz
YW1wbGVTaXplLmhlaWdodCgpKTsKKyAgICAgICAgYXV0byB2aWRlb0ZyYW1lU2l6ZSA9IHZpZGVv
RnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAgICBJbnRTaXplIGNhcHR1cmVTaXplKHZp
ZGVvRnJhbWVTaXplLndpZHRoKCksIHZpZGVvRnJhbWVTaXplLmhlaWdodCgpKTsKIAogICAgICAg
ICBhdXRvIHNldHRpbmdzID0gbV90cmFjay5zZXR0aW5ncygpOwogICAgICAgICBtX2NvbmZpZ3Vy
ZWRTaXplLnNldFdpZHRoKHNldHRpbmdzLndpZHRoKCkpOwpAQCAtMjgzLDggKzI4Myw4IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCFtX2NvbmZpZ3VyZWRTaXplLmhlaWdodCgpKQogICAgICAgICAg
ICAgbV9jb25maWd1cmVkU2l6ZS5zZXRIZWlnaHQoY2FwdHVyZVNpemUuaGVpZ2h0KCkpOwogCi0g
ICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHNhbXBsZS52aWRlb1JvdGF0aW9uKCk7Ci0gICAg
ICAgIGJvb2wgdmlkZW9NaXJyb3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVkKCk7CisgICAgICAg
IGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHZpZGVvRnJhbWUucm90YXRpb24oKTsKKyAgICAgICAgYm9v
bCB2aWRlb01pcnJvcmVkID0gdmlkZW9GcmFtZS5pc01pcnJvcmVkKCk7CiAgICAgICAgIGlmICht
X3ZpZGVvUm90YXRpb24gIT0gdmlkZW9Sb3RhdGlvbiB8fCBtX3ZpZGVvTWlycm9yZWQgIT0gdmlk
ZW9NaXJyb3JlZCkgewogICAgICAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gdmlkZW9Sb3RhdGlv
bjsKICAgICAgICAgICAgIG1fdmlkZW9NaXJyb3JlZCA9IHZpZGVvTWlycm9yZWQ7CkBAIC0yOTUs
NyArMjk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHBhZC5n
ZXQoKSwgZ3N0X2V2ZW50X25ld190YWcoZ3N0X3RhZ19saXN0X25ldyhHU1RfVEFHX0lNQUdFX09S
SUVOVEFUSU9OLCBvcmllbnRhdGlvbi51dGY4KCkuZGF0YSgpLCBudWxscHRyKSkpOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byogdmlkZW9GcmFtZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVH
U3RyZWFtZXIqPigmc2FtcGxlKTsKKyAgICAgICAgYXV0byogdmlkZW9GcmFtZSA9IHN0YXRpY19j
YXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmdmlkZW9GcmFtZSk7CiAgICAgICAgIGF1dG8qIGdz
dFNhbXBsZSA9IHZpZGVvRnJhbWUtPnNhbXBsZSgpOwogICAgICAgICBpZiAoIW1fY29uZmlndXJl
ZFNpemUuaXNFbXB0eSgpICYmIG1fbGFzdEtub3duU2l6ZSAhPSBtX2NvbmZpZ3VyZWRTaXplKSB7
CiAgICAgICAgICAgICBtX2xhc3RLbm93blNpemUgPSBtX2NvbmZpZ3VyZWRTaXplOwpAQCAtMzc4
LDcgKzM3OCw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbmZpZ3VyZWRTaXplOwogICAg
IEludFNpemUgbV9sYXN0S25vd25TaXplOwogICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBtX2JsYWNr
RnJhbWU7Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3Rh
dGlvbiBtX3ZpZGVvUm90YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAg
IGJvb2wgbV92aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDQw
MWU0YTE0OTdhYzIxYTA5OTFjNmU1OTkxNTQzZDViOTVhMWYyYWUuLjUwYjM5ZTUxMWMwNDliNmVj
NDdmNjJmZGQ0ZjdiNjdhMmJhMTJkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNjksMjQgKzY5LDI0IEBA
IE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6TW9ja0Rpc3BsYXlDYXB0dXJlU291
cmNlR1N0cmVhbWVyKFJlYWx0aW1lTWVkCiAgICAgLCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkp
CiAgICAgLCBtX2RldmljZVR5cGUoZGV2aWNlVHlwZSkKIHsKLSAgICBtX3NvdXJjZS0+YWRkVmlk
ZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9zb3VyY2UtPmFkZFZpZGVvRnJhbWVPYnNl
cnZlcigqdGhpcyk7CiB9CiAKIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6fk1v
Y2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcigpCiB7Ci0gICAgbV9zb3VyY2UtPnJlbW92
ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0Zy
YW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdT
dHJlYW1lcjo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIG1fc291cmNlLT5yZW1vdmVWaWRl
b1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9i
c2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+c3RvcCgpOwogfQogCiB2b2lkIE1vY2tEaXNw
bGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6cmVxdWVzdFRvRW5kKE9ic2VydmVyJiBjYWxsaW5n
T2JzZXJ2ZXIpCiB7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFRvRW5kKGNhbGxp
bmdPYnNlcnZlcik7Ci0gICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRo
aXMpOworICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAg
IG1fc291cmNlLT5yZXF1ZXN0VG9FbmQoY2FsbGluZ09ic2VydmVyKTsKIH0KIApAQCAtOTYsOSAr
OTYsOSBAQCB2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6c2V0TXV0ZWQo
Ym9vbCBpc011dGVkKQogICAgIG1fc291cmNlLT5zZXRNdXRlZChpc011dGVkKTsKIH0KIAotdm9p
ZCBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCit2
b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6dmlkZW9GcmFtZUF2YWlsYWJs
ZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRh
KQogewotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBs
ZSwgbWV0YWRhdGEpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvRnJhbWVBdmFpbGFi
bGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OmNhcGFiaWxp
dGllcygpCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdT
dHJlYW1lcjo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBtZXRhZGF0YS0+Y2FwdHVyZVRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwogICAgIGF1dG8gcHJl
c2VudGF0aW9uVGltZSA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUo
KSArIDEwMF9tcykuc2Vjb25kcygpKTsKICAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1l
R1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBw
cmVzZW50YXRpb25UaW1lLCBzaXplKCksIGZyYW1lUmF0ZSgpLCBzYW1wbGVSb3RhdGlvbigpLCBm
YWxzZSwgV1RGTW92ZShtZXRhZGF0YSkpOwotICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2Vy
dmVycyh2aWRlb0ZyYW1lLmdldCgpLCB7IH0pOworICAgIGRpc3BhdGNoVmlkZW9GcmFtZVRvT2Jz
ZXJ2ZXJzKHZpZGVvRnJhbWUuZ2V0KCksIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0
cmVhbWVyLmgKaW5kZXggMzE2MTdlMzhhNjM1ZGE5ZDRhZGQ2NDRlYTA4NjY3YWViZmI5NjZmYi4u
MDFjM2I1ODEyNjI3MjYyYzBmZTMzYzc2OGVmY2M3YWY5Mzk0MTYzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblJlc2l6ZVZpZGVvRnJhbWVzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotY2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJl
U291cmNlR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworY2xhc3MgTW9ja0Rpc3BsYXlD
YXB0dXJlU291cmNlR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2Us
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiwg
U3RyaW5nJiYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKIApAQCAtNDksOCArNDksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRNdXRlZChib29sIGlzTXV0ZWQpIGZpbmFsOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgotICAg
IHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhKSBmaW5hbDsKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2Jz
ZXJ2ZXIKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIE1vY2tEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUdTdHJlYW1lcihSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBSZWY8TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI+JiYsIFN0cmluZyYmLCBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KaW5kZXggMzViOTcwZDYw
OGUzOGUzNTU2N2M5MzMzNTk3NmZlOGJjNWZhNWYxMy4uNTNiZTVkZGQwMTgzNmZkOWJjM2M5ZWQ0
YjU4MjEwZmExNDQ2YWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KQEAg
LTE1Niw3ICsxNTYsNyBAQCBib29sIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnN0YXJ0KCkKICAg
ICB9KTsKIAogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXJdKE5TRXJyb3IgKiBfTnVs
bGFibGUgZXJyb3IpIHsKLSAgICAgICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBzYWZlIHRvIGNh
bGwgYHZpZGVvU2FtcGxlQXZhaWxhYmxlYCBmcm9tIGFueSB0aHJlYWQuIFRlc3QgdGhpcyBhbmQg
Z2V0IHJpZCBvZiB0aGlzIG1haW4gdGhyZWFkIGhvcC4KKyAgICAgICAgLy8gRklYTUU6IEl0IHNo
b3VsZCBiZSBzYWZlIHRvIGNhbGwgYHZpZGVvRnJhbWVBdmFpbGFibGVgIGZyb20gYW55IHRocmVh
ZC4gVGVzdCB0aGlzIGFuZCBnZXQgcmlkIG9mIHRoaXMgbWFpbiB0aHJlYWQgaG9wLgogICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzLCBlcnJvciA9IHJldGFp
blB0cihlcnJvciksIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICFlcnJvcikKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxp
YldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAKaW5kZXggZWY4NzAwMjBjOWI5NjI1NTc3MjlkZjdj
MWU0YzU4NmU1ZmEzN2Y3OC4uYTJmMTBjNDRmOGRhZDY5OGE1YjVmZDllNjk3ZTFjMzQzMGQzNmIy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcApAQCAtMzMsMTIg
KzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFZpZGVvRnJhbWVMaWJXZWJS
VEM+IFZpZGVvRnJhbWVMaWJXZWJSVEM6OmNyZWF0ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxi
YWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQorUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IFZpZGVv
RnJhbWVMaWJXZWJSVEM6OmNyZWF0ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBp
c01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
VmlkZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNp
b25DYWxsYmFjaykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lTGliV2Vi
UlRDKHByZXNlbnRhdGlvblRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uLCBXVEZNb3ZlKGJ1ZmZl
ciksIFdURk1vdmUoY29udmVyc2lvbkNhbGxiYWNrKSkpOwogfQogCi1WaWRlb0ZyYW1lTGliV2Vi
UlRDOjpWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29s
IGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBDb252ZXJzaW9uQ2FsbGJhY2smJiBj
b252ZXJzaW9uQ2FsbGJhY2spCitWaWRlb0ZyYW1lTGliV2ViUlRDOjpWaWRlb0ZyYW1lTGliV2Vi
UlRDKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9u
IHJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYm
IGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQogICAgIDog
VmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBpc01pcnJvcmVkLCByb3RhdGlvbikKICAgICAs
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICAsIG1fc2l6ZShtX2J1ZmZlci0+d2lkdGgo
KSwgIG1fYnVmZmVyLT5oZWlnaHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJU
Qy5oCmluZGV4IDNhNjYzOTA3YTQ2YjhmNzkzZDc1MDg4ZDg4YmM0OTY1OWMzNjJlNDQuLjRjOWU1
YTZjYzUyM2ZmMDg3ZjFmMDYwYjBhZmY1MTRlNTNhYWM1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1Zp
ZGVvRnJhbWVMaWJXZWJSVEMuaApAQCAtNDIsMTYgKzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFZpZGVvRnJhbWVMaWJXZWJSVEMgZmluYWwgOiBwdWJsaWMgVmlkZW9GcmFtZSB7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQ29udmVyc2lvbkNhbGxiYWNrID0gRnVuY3Rpb248UmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+KHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYpPjsKLSAgICBz
dGF0aWMgUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IGNyZWF0ZShNZWRpYVRpbWUsIGJvb2wgaXNN
aXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOworICAgIHN0YXRpYyBSZWY8Vmlk
ZW9GcmFtZUxpYldlYlJUQz4gY3JlYXRlKE1lZGlhVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3Rh
dGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiwgQ29u
dmVyc2lvbkNhbGxiYWNrJiYpOwogCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4gYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogcHJpdmF0ZToK
LSAgICBWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRl
b1JvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYm
LCBDb252ZXJzaW9uQ2FsbGJhY2smJik7CisgICAgVmlkZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRp
bWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlZpZGVvRnJhbWVCdWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKIAogICAgIC8vIFZp
ZGVvRnJhbWUKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fc2l6ZTsgfQotICAgIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3ZpZGVvUGl4ZWxGb3JtYXQ7IH0KKyAgICB1aW50MzJfdCBwaXhlbEZv
cm1hdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdmlkZW9QaXhlbEZvcm1hdDsgfQogICAgIENW
UGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIGNvbnN0IHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IG1fYnVmZmVyOwpAQCAt
NjcsNyArNjcsNiBAQCBwcml2YXRlOgogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlZpZGVvRnJhbWVMaWJXZWJSVEMpCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZpZGVvRnJhbWUpIHsgcmV0dXJuIHZpZGVvRnJhbWUuaXNM
aWJXZWJSVEMoKTsgfQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRp
YVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1l
ZGlhU2FtcGxlKSAmJiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lTGliV2ViUlRDPihkb3duY2FzdDxX
ZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcAppbmRleCA3ZDk1MGY2NzgwMDY1
YjJlOWU1NzZkNDZjNTU2YTEzYTc1M2M1MGU5Li5jZjAyZTljMzYxNjYxYTE4YmRmYjI5ZTEwZTc4
ZDQyYjhkYWM0OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldl
YlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCkBA
IC02MSwxMSArNjEsMTEgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJS
VEM6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmEKICAgICBhdXRvIHByZXNl
bnRhdGlvblRpbWUgPSBmcm9tR3N0Q2xvY2tUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpKTsKICAg
ICBpZiAoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUoKSA9PSB3ZWJydGM6OlZpZGVv
RnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKICAgICAgICAgYXV0byogZnJhbWVidWZmZXIg
PSBzdGF0aWNfY2FzdDxHU3RyZWFtZXJWaWRlb0ZyYW1lTGliV2ViUlRDKj4oZnJhbWUudmlkZW9f
ZnJhbWVfYnVmZmVyKCkuZ2V0KCkpOwotICAgICAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZShWaWRl
b0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2FtcGxlKGZyYW1lYnVmZmVyLT5nZXRTYW1w
bGUoKSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24+KGZyYW1lLnJvdGF0aW9uKCkpKSwgeyB9KTsKKyAgICAgICAgdmlkZW9GcmFtZWVBdmFp
bGFibGUoVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlV3JhcHBlZFNhbXBsZShmcmFtZWJ1ZmZl
ci0+Z2V0U2FtcGxlKCksIHByZXNlbnRhdGlvblRpbWUsIHN0YXRpY19jYXN0PFZpZGVvRnJhbWU6
OlJvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSksIHsgfSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgYXV0byBnc3RTYW1wbGUgPSBjb252ZXJ0TGliV2ViUlRDVmlkZW9GcmFtZVRvR1N0cmVhbWVy
U2FtcGxlKGZyYW1lKTsKICAgICAgICAgYXV0byBtZXRhZGF0YSA9IHN0ZDo6bWFrZV9vcHRpb25h
bChtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKGZyYW1lKSk7Ci0gICAgICAgIHZpZGVvU2FtcGxlQXZh
aWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKGdzdFNhbXBsZSksIHsg
fSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24+KGZyYW1lLnJvdGF0aW9uKCkpLCBmYWxzZSwgV1RGTW92ZShtZXRhZGF0YSkpLCB7IH0pOwor
ICAgICAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZShX
VEZNb3ZlKGdzdFNhbXBsZSksIHsgfSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nhc3Q8Vmlk
ZW9GcmFtZTo6Um90YXRpb24+KGZyYW1lLnJvdGF0aW9uKCkpLCBmYWxzZSwgV1RGTW92ZShtZXRh
ZGF0YSkpLCB7IH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJS
VEMuY3BwCmluZGV4IGM2ZGNhZDc1MjVlZGJlNjhkMTEwYWUwMjEyNTcxY2IzNmI0Zjg2ZmIuLjBk
MTU3MzAwNzA1MTI2MWZmNzQ1MzkzODViYmY3ODM4MzYxYTkzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKQEAgLTUwLDE5ICs1MCwxOSBAQCBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEM6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldl
YlJUQyhSZWY8TQogewogfQogCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldl
YlJUQzo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRD
Ojp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVU
aW1lTWV0YWRhdGEpCiB7Ci0gICAgc3dpdGNoIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSB7Ci0g
ICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICBzd2l0Y2ggKHZp
ZGVvRnJhbWUucm90YXRpb24oKSkgeworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5v
bmU6CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8w
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpV
cHNpZGVEb3duOgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd246CiAg
ICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0
OgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAgICBtX2N1cnJl
bnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6CisgICAgY2FzZSBWaWRl
b0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDoKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJy
dGM6OmtWaWRlb1JvdGF0aW9uXzI3MDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1l
ci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlTGliV2ViUlRDLmgKaW5kZXggN2IxZGVkYzE4OGUzMzVhNWE4ZDA2MmZlMmYw
M2ExZGFmMTUzNGM5ZS4uNzAyNDgxNGFhYWY2YjdiZjFmYjRmZjE5YmJhODFmZjMzZmQ2YjVkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oCkBAIC00MSw4ICs0MSw4IEBAIHBy
aXZhdGU6CiAKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVy
PiBjcmVhdGVCbGFja0ZyYW1lKHNpemVfdCwgc2l6ZV90KSBmaW5hbDsKIAotICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgQVBJCi0gICAgdm9pZCB2aWRlb1Nh
bXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFs
OworICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciBBUEkKKyAg
ICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UuaAppbmRleCAyNGUxMWFlMTNmYmJlN2MxYzg2ZmZhNmE4ZjcwYjI0ZGY2MWZl
NmExLi41ODBjY2JiZjU1NDQxMTJjMzZiM2YxMzg2ZDM1ZjlmZmJlYWU5NWYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZW
aWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYTsgfQogICAgIGJvb2wgaW50ZXJydXB0ZWQo
KSBjb25zdCBmaW5hbDsKIAotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHNhbXBsZVJv
dGF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zYW1wbGVSb3RhdGlvbjsgfQorICAgIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHZpZGVvRnJhbWVSb3RhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdmlkZW9GcmFtZVJvdGF0aW9uOyB9CiAgICAgdm9pZCBzZXRGcmFtZVJhdGVXaXRoUHJl
c2V0KGRvdWJsZSwgUmVmUHRyPFZpZGVvUHJlc2V0PikgZmluYWw7CiAgICAgYm9vbCBwcmVmZXJz
UHJlc2V0KFZpZGVvUHJlc2V0JikgZmluYWw7CiAgICAgdm9pZCBnZW5lcmF0ZVByZXNldHMoKSBm
aW5hbDsKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0U2Vzc2lvblNp
emVBbmRGcmFtZVJhdGUoKTsKICAgICBib29sIHNldFByZXNldChOU1N0cmluZyopOwotICAgIHZv
aWQgY29tcHV0ZVNhbXBsZVJvdGF0aW9uKCk7CisgICAgdm9pZCBjb21wdXRlVmlkZW9GcmFtZVJv
dGF0aW9uKCk7CiAgICAgQVZGcmFtZVJhdGVSYW5nZSogZnJhbWVEdXJhdGlvbkZvckZyYW1lUmF0
ZShkb3VibGUpOwogCiAgICAgLy8gT3JpZW50YXRpb25Ob3RpZmllcjo6T2JzZXJ2ZXIgQVBJCkBA
IC0xMTgsMTMgKzExOCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVmVyaWZ5Q2FwdHVy
aW5nVGltZXIoKTsKICAgICB2b2lkIHZlcmlmeUlzQ2FwdHVyaW5nKCk7CiAKLSAgICBSZWZQdHI8
TWVkaWFTYW1wbGU+IG1fYnVmZmVyOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiBtX2J1ZmZlcjsK
ICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3ZpZGVvT3V0cHV0Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNm
ZXJTZXNzaW9uOwogCiAgICAgaW50IG1fc2Vuc29yT3JpZW50YXRpb24geyAwIH07CiAgICAgaW50
IG1fZGV2aWNlT3JpZW50YXRpb24geyAwIH07Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24gbV9zYW1wbGVSb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07
CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gbV92aWRlb0ZyYW1lUm90YXRpb24geyBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogCiAgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwogICAgIHN0ZDo6b3B0aW9uYWw8UmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMzc4YzlhZjk3ZDc1MjVjZGZjMjg1NWZlMTg0MGE5Njg2
MWFkYzE3ZS4uMmJjNjJmZTg1NDU3YzUzNjNiNGIwNThiZmNjY2FkNzEzMzA2OTJmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0
dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjUxLDcgKzI1MSw3IEBAIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkK
ICAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUoZnJhbWVSYXRlKCkpOwogCiAgICAgYXV0byBzaXpl
ID0gdGhpcy0+c2l6ZSgpOwotICAgIGlmIChtX3NhbXBsZVJvdGF0aW9uID09IE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IG1fc2FtcGxlUm90YXRpb24gPT0gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIGlmIChtX3ZpZGVvRnJhbWVSb3RhdGlvbiA9PSBW
aWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCB8fCBtX3ZpZGVvRnJhbWVSb3RhdGlvbiA9PSBWaWRl
b0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9zZWRT
aXplKCk7CiAgICAgCiAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKQEAgLTQ5
Niw3ICs0OTYsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNz
aW9uKCkKICAgICBzZXRTZXNzaW9uU2l6ZUFuZEZyYW1lUmF0ZSgpOwogCiAgICAgbV9zZW5zb3JP
cmllbnRhdGlvbiA9IHNlbnNvck9yaWVudGF0aW9uRnJvbVZpZGVvT3V0cHV0KG1fdmlkZW9PdXRw
dXQuZ2V0KCkpOwotICAgIGNvbXB1dGVTYW1wbGVSb3RhdGlvbigpOworICAgIGNvbXB1dGVWaWRl
b0ZyYW1lUm90YXRpb24oKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTIxLDM4ICs1MjEs
MzggQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6b3JpZW50YXRpb25DaGFuZ2VkKGludCBv
cmllbnRhdGlvbikKIHsKICAgICBBU1NFUlQob3JpZW50YXRpb24gPT0gMCB8fCBvcmllbnRhdGlv
biA9PSA5MCB8fCBvcmllbnRhdGlvbiA9PSAtOTAgfHwgb3JpZW50YXRpb24gPT0gMTgwKTsKICAg
ICBtX2RldmljZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247Ci0gICAgY29tcHV0ZVNhbXBsZVJv
dGF0aW9uKCk7Ci0gICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwg
InJvdGF0aW9uID0gIiwgbV9zYW1wbGVSb3RhdGlvbiwgIiwgb3JpZW50YXRpb24gPSAiLCBtX2Rl
dmljZU9yaWVudGF0aW9uKTsKKyAgICBjb21wdXRlVmlkZW9GcmFtZVJvdGF0aW9uKCk7CisgICAg
QUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgInJvdGF0aW9uID0gIiwg
bV92aWRlb0ZyYW1lUm90YXRpb24sICIsIG9yaWVudGF0aW9uID0gIiwgbV9kZXZpY2VPcmllbnRh
dGlvbik7CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNvbXB1dGVTYW1wbGVSb3Rh
dGlvbigpCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjb21wdXRlVmlkZW9GcmFtZVJvdGF0
aW9uKCkKIHsKICAgICBib29sIGZyb250Q2FtZXJhID0gW2RldmljZSgpIHBvc2l0aW9uXSA9PSBB
VkNhcHR1cmVEZXZpY2VQb3NpdGlvbkZyb250OwotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHNhbXBsZVJvdGF0aW9uOworICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHZpZGVvRnJhbWVS
b3RhdGlvbjsKICAgICBzd2l0Y2ggKG1fc2Vuc29yT3JpZW50YXRpb24gLSBtX2RldmljZU9yaWVu
dGF0aW9uKSB7CiAgICAgY2FzZSAwOgotICAgICAgICBzYW1wbGVSb3RhdGlvbiA9IE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgICAgICB2aWRlb0ZyYW1lUm90YXRpb24gPSBW
aWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAxODA6
CiAgICAgY2FzZSAtMTgwOgotICAgICAgICBzYW1wbGVSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOworICAgICAgICB2aWRlb0ZyYW1lUm90YXRpb24gPSBW
aWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSA5MDoKICAgICBjYXNlIC0yNzA6Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9uID0gZnJvbnRDYW1l
cmEgPyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCA6IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpSaWdodDsKKyAgICAgICAgdmlkZW9GcmFtZVJvdGF0aW9uID0gZnJvbnRDYW1l
cmEgPyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCA6IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpS
aWdodDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAtOTA6CiAgICAgY2FzZSAyNzA6Ci0gICAg
ICAgIHNhbXBsZVJvdGF0aW9uID0gZnJvbnRDYW1lcmEgPyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6UmlnaHQgOiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAgICAgICAg
dmlkZW9GcmFtZVJvdGF0aW9uID0gZnJvbnRDYW1lcmEgPyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6
UmlnaHQgOiBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDsKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHNhbXBsZVJv
dGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CisgICAgICAgIHZpZGVv
RnJhbWVSb3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogICAgIH0KLSAgICBp
ZiAoc2FtcGxlUm90YXRpb24gPT0gbV9zYW1wbGVSb3RhdGlvbikKKyAgICBpZiAodmlkZW9GcmFt
ZVJvdGF0aW9uID09IG1fdmlkZW9GcmFtZVJvdGF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3NhbXBsZVJvdGF0aW9uID0gc2FtcGxlUm90YXRpb247CisgICAgbV92aWRlb0ZyYW1lUm90
YXRpb24gPSB2aWRlb0ZyYW1lUm90YXRpb247CiAgICAgbm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VP
YnNlcnZlcnMoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KTsKIH0KIApAQCAtNTYxLDEy
ICs1NjEsMTIgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERpZE91
dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2EKICAgICBpZiAoKyttX2ZyYW1lc0Nv
dW50IDw9IGZyYW1lc1RvRHJvcFdoZW5TdGFydGluZykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCBbY2Fw
dHVyZUNvbm5lY3Rpb24gaXNWaWRlb01pcnJvcmVkXSwgbV9zYW1wbGVSb3RhdGlvbik7CisgICAg
YXV0byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlQnVmZmVyLCBbY2Fw
dHVyZUNvbm5lY3Rpb24gaXNWaWRlb01pcnJvcmVkXSwgbV92aWRlb0ZyYW1lUm90YXRpb24pOwog
ICAgIG1fYnVmZmVyID0gJnZpZGVvRnJhbWUuZ2V0KCk7CiAgICAgc2V0SW50cmluc2ljU2l6ZShl
eHBhbmRlZEludFNpemUodmlkZW9GcmFtZS0+cHJlc2VudGF0aW9uU2l6ZSgpKSk7CiAgICAgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YTsKICAgICBtZXRhZGF0YS5jYXB0dXJlVGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCk7Ci0gICAgZGlzcGF0Y2hN
ZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKFdURk1vdmUodmlkZW9GcmFtZSksIG1ldGFkYXRhKTsKKyAg
ICBkaXNwYXRjaFZpZGVvRnJhbWVUb09ic2VydmVycyhXVEZNb3ZlKHZpZGVvRnJhbWUpLCBtZXRh
ZGF0YSk7CiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNS
dW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW0KaW5kZXggMDM1MzI1OGFiNjFmNDJkYTQyM2MxNjU3NTQxYzA4NzAzNTNiZGRk
NC4uYzA1NWQzYzYzM2RkMGVmMDYxNGFlZjNjYmNkMDc5MTljNDc5MWQxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtOTMsMTYgKzkzLDE2IEBAIHZvaWQg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYg
KGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5hdGl2ZUltYWdl
KCkpCiAgICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgp
OwogCi0gICAgYXV0byBzYW1wbGVUaW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChl
bGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNvbmRzKCkpOwotICAgIGF1dG8gc2FtcGxlQnVmZmVy
ID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUocGxhdGZvcm1JbWFn
ZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3RhdGlvbigpKTsKLSAgICBpZiAo
IXNhbXBsZUJ1ZmZlcikKKyAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7CisgICAg
YXV0byB2aWRlb0ZyYW1lID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlVmlkZW9GcmFt
ZShwbGF0Zm9ybUltYWdlLmdldCgpLCBwcmVzZW50YXRpb25UaW1lLCBzaXplKCksIHZpZGVvRnJh
bWVSb3RhdGlvbigpKTsKKyAgICBpZiAoIXZpZGVvRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8gY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VF
cG9jaCgpOwotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHNhbXBsZUJ1ZmZlciA9IFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgY2Fw
dHVyZVRpbWVdKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdmlkZW9GcmFtZSA9IFdURk1vdmUodmlkZW9G
cmFtZSksIGNhcHR1cmVUaW1lXSgpIG11dGFibGUgewogICAgICAgICBWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhIG1ldGFkYXRhOwogICAgICAgICBtZXRhZGF0YS5jYXB0dXJlVGltZSA9IGNhcHR1cmVU
aW1lOwotICAgICAgICBkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoKnNhbXBsZUJ1ZmZl
ciwgbWV0YWRhdGEpOworICAgICAgICBkaXNwYXRjaFZpZGVvRnJhbWVUb09ic2VydmVycygqdmlk
ZW9GcmFtZSwgbWV0YWRhdGEpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCmluZGV4IDkyYzJmZWM2ODJkZDZhZTc2NGZiYjI5
MDRjYWM4ZmVmYTQ5NjczNGYuLjFlOTEzM2U5ZjVjOTRmNDIyZTQ4MjI2YzVmYjNiY2YyNjViZTk4
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5o
CkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4m
JiwgU3RyaW5nJiYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZl
ckZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOwogICAgIENWUGl4ZWxC
dWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IHdlYnJ0Yzo6QnVmZmVyVHlwZSk7Ci0gICAgUmVmUHRyPFZpZGVvRnJhbWU+IHRvVmlkZW9GcmFt
ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7
Ci0gICAgUmVmPFZpZGVvRnJhbWU+IGNyZWF0ZVZpZGVvU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIo
Q1ZQaXhlbEJ1ZmZlclJlZiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGludDY0X3QpOwor
ICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiB0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0Zy
YW1lJiwgVmlkZW9GcmFtZTo6Um90YXRpb24pOworICAgIFJlZjxWaWRlb0ZyYW1lPiBjcmVhdGVW
aWRlb1NhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIFZpZGVvRnJhbWU6
OlJvdGF0aW9uLCBpbnQ2NF90KTsKIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCiAg
ICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IGVlMjgy
M2MxZWE3Mzg1ZDlhMTg0MDE5NmM3ZGNiYjZiMzEwNDFiMDUuLmUwMmY4MzAzOGE1YzFhYmFlMjgx
MzBmYWQ0OTQxNTQ2ZDNiZmMyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTkxLDEyICs5MSwxMiBAQCBDVlBpeGVsQnVmZmVyUG9v
bFJlZiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJQb29sKHNp
emVfdCB3aQogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyUG9vbC5nZXQoKTsKIH0KIAotUmVmPFZp
ZGVvRnJhbWU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpjcmVhdGVWaWRlb1Nh
bXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBpbnQ2NF90IHRpbWVTdGFtcCkKK1JlZjxW
aWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y3JlYXRlVmlkZW9T
YW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBWaWRl
b0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgaW50NjRfdCB0aW1lU3RhbXApCiB7CiAgICAgcmV0
dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKE1lZGlhVGltZSh0aW1lU3RhbXAsIDEwMDAwMDApLCBm
YWxzZSwgcm90YXRpb24sIHBpeGVsQnVmZmVyKTsKIH0KIAotUmVmUHRyPFZpZGVvRnJhbWU+IFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRj
OjpWaWRlb0ZyYW1lJiBmcmFtZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24p
CitSZWZQdHI8VmlkZW9GcmFtZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnRv
VmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBWaWRlb0ZyYW1lOjpS
b3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBpZiAobXV0ZWQoKSkgewogICAgICAgICBpZiAoIW1f
YmxhY2tGcmFtZSB8fCBtX2JsYWNrRnJhbWVXaWR0aCAhPSBmcmFtZS53aWR0aCgpIHx8IG1fYmxh
Y2tGcmFtZUhlaWdodCAhPSBmcmFtZS5oZWlnaHQoKSkgewpAQCAtMTQ0LDIwICsxNDQsMjAgQEAg
dm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShjb25zdCB3ZWJy
dGM6OlZpZGVvRnJhbWUmIHdlYnJ0Y1YKICAgICB1bnNpZ25lZCB3aWR0aCA9IHdlYnJ0Y1ZpZGVv
RnJhbWUud2lkdGgoKTsKICAgICB1bnNpZ25lZCBoZWlnaHQgPSB3ZWJydGNWaWRlb0ZyYW1lLmhl
aWdodCgpOwogCi0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb247CisgICAg
VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb247CiAgICAgc3dpdGNoICh3ZWJydGNWaWRlb0Zy
YW1lLnJvdGF0aW9uKCkpIHsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDoKLSAg
ICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAg
ICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDoKLSAgICAgICAgcm90YXRpb24g
PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsKKyAgICAgICAgcm90YXRp
b24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOgotICAgICAgICByb3RhdGlvbiA9IE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDsKKyAgICAgICAgcm90YXRpb24gPSBWaWRl
b0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ7CiAgICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDoK
LSAgICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAg
ICAgICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDsKICAgICAgICAgc3Rk
Ojpzd2FwKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNzEsNyAr
MTcxLDcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShj
b25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIHdlYnJ0Y1YKICAgICAgICAgcmV0dXJuOwogCiAgICAg
c2V0SW50cmluc2ljU2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICB2aWRlb1NhbXBs
ZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFGcm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRl
b0ZyYW1lKSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFG
cm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
Y3BwCmluZGV4IDNhM2ZjYmY5NmVmODIwMWY5MGJjZTg3ZTVlMmRlYmMxZGQxY2Q2MDYuLmJjZWY2
YTE1MDYxZDAyYTYyNTg2ODMzNTI1ZDJmOGUyYTliYjQ3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcApAQCAtNjMsNDYgKzYzLDQ2IEBA
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlCiB7CiB9CiAKLXZvaWQgUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2E6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUs
IFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZUNvY29hOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpCiB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYg
KCEoKyttX251bWJlck9mRnJhbWVzICUgNjApKQogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJmcmFtZSAiLCBtX251bWJlck9mRnJhbWVzKTsKICNlbmRpZgogCi0gICAgc3dpdGNo
IChzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSB7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbjo6Tm9uZToKKyAgICBzd2l0Y2ggKHZpZGVvRnJhbWUucm90YXRpb24oKSkgeworICAg
IGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6CiAgICAgICAgIG1fY3VycmVudFJvdGF0
aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgIGNhc2UgVmlkZW9G
cmFtZTo6Um90YXRpb246OlVwc2lkZURvd246CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0g
d2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90
YXRpb246OlJpZ2h0OgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVv
Um90YXRpb25fOTA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb246OkxlZnQ6CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDoKICAg
ICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRBcHBseVJvdGF0aW9uID0gbV9z
aG91bGRBcHBseVJvdGF0aW9uICYmIG1fY3VycmVudFJvdGF0aW9uICE9IHdlYnJ0Yzo6a1ZpZGVv
Um90YXRpb25fMDsKLSAgICBpZiAoIXNob3VsZEFwcGx5Um90YXRpb24gJiYgaXM8VmlkZW9GcmFt
ZT4oc2FtcGxlKSkgewotICAgICAgICBpZiAoZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKS5p
c1JlbW90ZVByb3h5KCkpIHsKLSAgICAgICAgICAgIFJlZiB2aWRlb0ZyYW1lIHsgZG93bmNhc3Q8
VmlkZW9GcmFtZT4oc2FtcGxlKSB9OwotICAgICAgICAgICAgYXV0byBzaXplID0gc2FtcGxlLnBy
ZXNlbnRhdGlvblNpemUoKTsKLSAgICAgICAgICAgIHNlbmRGcmFtZSh3ZWJydGM6OnRvV2ViUlRD
VmlkZW9GcmFtZUJ1ZmZlcigmdmlkZW9GcmFtZS5sZWFrUmVmKCksCisgICAgaWYgKCFzaG91bGRB
cHBseVJvdGF0aW9uKSB7CisgICAgICAgIGlmICh2aWRlb0ZyYW1lLmlzUmVtb3RlUHJveHkoKSkg
eworICAgICAgICAgICAgUmVmIHJlbW90ZVZpZGVvRnJhbWUgeyB2aWRlb0ZyYW1lIH07CisgICAg
ICAgICAgICBhdXRvIHNpemUgPSB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICAg
ICAgICAgIHNlbmRGcmFtZSh3ZWJydGM6OnRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlcigmcmVtb3Rl
VmlkZW9GcmFtZS5sZWFrUmVmKCksCiAgICAgICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHBvaW50ZXIpLT5waXhlbEJ1ZmZlcigp
OyB9LAogICAgICAgICAgICAgICAgIFtdKGF1dG8qIHBvaW50ZXIpIHsgc3RhdGljX2Nhc3Q8Vmlk
ZW9GcmFtZSo+KHBvaW50ZXIpLT5kZXJlZigpOyB9LAogICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4oc2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCgpKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChkb3duY2FzdDxW
aWRlb0ZyYW1lPihzYW1wbGUpLmlzTGliV2ViUlRDKCkpIHsKLSAgICAgICAgICAgIHNlbmRGcmFt
ZShkb3duY2FzdDxWaWRlb0ZyYW1lTGliV2ViUlRDPihzYW1wbGUpLmJ1ZmZlcigpKTsKKyAgICAg
ICAgaWYgKHZpZGVvRnJhbWUuaXNMaWJXZWJSVEMoKSkgeworICAgICAgICAgICAgc2VuZEZyYW1l
KGRvd25jYXN0PFZpZGVvRnJhbWVMaWJXZWJSVEM+KHZpZGVvRnJhbWUpLmJ1ZmZlcigpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gcGl4ZWxCdWZm
ZXIgPSBzYW1wbGUucGl4ZWxCdWZmZXIoKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gdmlkZW9G
cmFtZS5waXhlbEJ1ZmZlcigpOwogICAgIGF1dG8gcGl4ZWxGb3JtYXRUeXBlID0gQ1ZQaXhlbEJ1
ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7CiAKICAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gY29udmVydGVkQnVmZmVyID0gcGl4ZWxCdWZmZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oCmluZGV4IGZlN2RkZDEwODY2
Yzc3OTU5Y2YwMjczMmM3M2ExZGVlMmJlNjQxYmQuLmJmY2JhZmQyYWM0NDRiMjc1ZDE2ZDlkZDYx
ZThiNWYzZTk3MWZhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5oCkBAIC00NCw4ICs0NCw4IEBAIHByaXZhdGU6CiAKICAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBjcmVhdGVCbGFja0ZyYW1lKHNpemVf
dCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgZmluYWw7CiAKLSAgICAvLyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIEFQSQotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAgICAvLyBS
ZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgQVBJCisgICAgdm9pZCB2aWRl
b0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5h
bDsKIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0VG9ZVVYoQ1ZQaXhl
bEJ1ZmZlclJlZik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZVBpeGVs
QnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggMzliOTk4
ZDRmNTQ1OWI5OTI0MjA1NTYzYjk2ZjdkZDJiMjU0ZDgxZC4uZDQ3OGUxMzk3NWU2ZDdkN2U3NWQy
YzE0YjRhNzMzMDM4YzFmNDdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQWZmaW5lVHJh
bnNmb3JtLmgiCiAjaW1wb3J0ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCiAjaW1wb3J0ICJM
b2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJD
b25mb3JtZXJDVi5oIgogI2ltcG9ydCAiUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIgogI2ltcG9y
dCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDNjZjc0
NjBjODBlM2JlMWQ1YmEzZjBjZWQ3YzE5YjI1ZGYyOWFiZjIuLjRmZWM0ZDkzOWJiMjkyZDY0NjQ5
Zjk1ZGUyZDc3ZTk3Mjg2ODA3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xODAsNyArMTgwLDcg
QEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c2V0dGluZ3MoKQogICAgIHNldHRpbmdzLnNldEZyYW1lUmF0ZShmcmFtZVJhdGUoKSk7
CiAgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIGlmIChtb2NrQ2FtZXJhKCkpIHsK
LSAgICAgICAgaWYgKG1fZGV2aWNlT3JpZW50YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb246OkxlZnQgfHwgbV9kZXZpY2VPcmllbnRhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbjo6UmlnaHQpCisgICAgICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9uID09IFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IG1fZGV2aWNlT3JpZW50YXRpb24gPT0gVmlkZW9GcmFt
ZTo6Um90YXRpb246OlJpZ2h0KQogICAgICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNp
emUoKTsKICAgICB9CiAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgpKTsKQEAgLTQ5
NiwxNiArNDk2LDE2IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Om9yaWVudGF0aW9u
Q2hhbmdlZChpbnQgb3JpZW50YXRpb24pCiAgICAgYXV0byBkZXZpY2VPcmllbnRhdGlvbiA9IG1f
ZGV2aWNlT3JpZW50YXRpb247CiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewogICAgIGNhc2Ug
MDoKLSAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uOjpOb25lOworICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gVmlkZW9GcmFtZTo6Um90
YXRpb246Ok5vbmU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgOTA6Ci0gICAgICAgIG1fZGV2
aWNlT3JpZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAg
ICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgLTkwOgotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9u
ID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ7CisgICAgICAgIG1fZGV2aWNlT3Jp
ZW50YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSAxODA6Ci0gICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9
IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBm
YzVmYzdhYTFjYjc2ZmE2ZDk3MzkwNTg2NWJmYWZlY2VkZTM2YmM3Li5kOGJhYzU2MWRhNGIxM2Zj
MzcyMWRjMDg0NDVjNTQyZDE0OWQwNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC02Miw3ICs2Miw3IEBA
IHByb3RlY3RlZDoKIAogICAgIFNlY29uZHMgZWxhcHNlZFRpbWUoKTsKICAgICB2b2lkIHNldHRp
bmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+
KSBvdmVycmlkZTsKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBzYW1wbGVSb3RhdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb247IH0KKyAgICBWaWRl
b0ZyYW1lOjpSb3RhdGlvbiB2aWRlb0ZyYW1lUm90YXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2RldmljZU9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBnZW5lcmF0ZVByZXNldHMoKSBvdmVy
cmlkZTsKIAogICAgIEludFNpemUgY2FwdHVyZVNpemUoKSBjb25zdDsKQEAgLTEyMiw3ICsxMjIs
NyBAQCBwcml2YXRlOgogICAgIENvbG9yIG1fZmlsbENvbG9yIHsgQ29sb3I6OmJsYWNrIH07CiAg
ICAgTW9ja01lZGlhRGV2aWNlIG1fZGV2aWNlOwogICAgIFJlZlB0cjxWaWRlb1ByZXNldD4gbV9w
cmVzZXQ7Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV9kZXZpY2VPcmllbnRhdGlv
biB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgVmlkZW9GcmFtZTo6
Um90YXRpb24gbV9kZXZpY2VPcmllbnRhdGlvbiB7IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25l
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggMTgzY2NlMTk3NjM4MjAxYmU3YjRlYmNkNDc4NzkzMTYyZTYxNDYzZC4u
ODMzZmRkYzg2MDVlNjE0Y2Q4OTM5NDkyMWViZGM4ODQxZWU5NzYzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTUwMSw3ICs1NTAxLDcgQEAgdm9pZCBJbnRlcm5hbHM6
OnN0b3BPYnNlcnZpbmdSZWFsdGltZU1lZGlhU291cmNlKCkKICAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OlZpZGVvOgogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6U2NyZWVuOgogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6V2luZG93Ogot
ICAgICAgICBtX3RyYWNrU291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsK
KyAgICAgICAgbV90cmFja1NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25l
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1MjgsNyArNTUyOCw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpvYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0
cmFjaykKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvOgogICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6U2NyZWVuOgogICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6V2luZG93OgotICAgICAgICBtX3RyYWNrU291cmNlLT5hZGRWaWRl
b1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgbV90cmFja1NvdXJjZS0+YWRkVmlkZW9G
cmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTU1NDUsMTMgKzU1NDUsMTMgQEAgdm9pZCBJbnRlcm5hbHM6Om1lZGlhU3RyZWFtVHJhY2tWaWRl
b0ZyYW1lUm90YXRpb24oRE9NUHJvbWlzZURlZmVycmVkPElETFNob3J0PiYKICAgICBwcm9taXNl
LnJlc29sdmUobV90cmFja1ZpZGVvUm90YXRpb24pOwogfQogCi12b2lkIEludGVybmFsczo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRh
ZGF0YSkKK3ZvaWQgSW50ZXJuYWxzOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2FtcGxlID0gUmVmIHsgc2Ft
cGxlIH1dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCB2aWRlb0ZyYW1lID0gUmVmIHsgdmlkZW9GcmFtZSB9XSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fdHJhY2tWaWRlb1Nh
bXBsZUNvdW50Kys7Ci0gICAgICAgIG1fdHJhY2tWaWRlb1JvdGF0aW9uID0gc3RhdGljX2Nhc3Q8
aW50PihzYW1wbGUtPnZpZGVvUm90YXRpb24oKSk7CisgICAgICAgIG1fdHJhY2tWaWRlb1JvdGF0
aW9uID0gc3RhdGljX2Nhc3Q8aW50Pih2aWRlb0ZyYW1lLT5yb3RhdGlvbigpKTsKICAgICAgICAg
aWYgKCFtX25leHRUcmFja0ZyYW1lUHJvbWlzZSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
NTU1OSw3ICs1NTU5LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEKICAgICAgICAgaWYgKCF2
aWRlb1NldHRpbmdzLndpZHRoKCkgfHwgIXZpZGVvU2V0dGluZ3MuaGVpZ2h0KCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byByZ2JhID0gc2FtcGxlLT5nZXRSR0JBSW1hZ2VE
YXRhKCk7CisgICAgICAgIGF1dG8gcmdiYSA9IHZpZGVvRnJhbWUtPmdldFJHQkFJbWFnZURhdGEo
KTsKICAgICAgICAgaWYgKCFyZ2JhKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCBmMmI4ZmQ1MGRjMTYzZGNjNmYwMTI2ODE2OWJhOGFiNGU1
Zjg4MTRmLi5hNzQ2MDg0Y2NlMzE5ZWEyOWIzMWVmZmFlZjM1ZDEzZjY0YTQzNDcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBjbGFzcyBJbnRlcm5h
bHMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcm5hbHM+LCBwcml2YXRlIENvbnRleHRE
ZXN0cnVjdGlvbgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBwdWJsaWMgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICAgICAsIHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvRnJhbWVPYnNlcnZlcgogI2VuZGlmCiAgICAgewogcHVibGljOgpAQCAtMTI5NCw3ICsx
Mjk0LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWls
YWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIHZv
aWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkgZmluYWw7CiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZl
ciBBUEkKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBz
aXplX3QpIGZpbmFsIHsgbV90cmFja0F1ZGlvU2FtcGxlQ291bnQrKzsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggMGUxNmRiYWY4MDc1NTM3YzE0NzQzNjdlMzk5
ZWVmNWYzNGU4MmYyNC4uYjNhMTk4MGUzN2YyMzFmYjkxMjE4MmEwMDc2ZjA3YWVlMzE4YjFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtNTYsMTMgKzU2LDkgQEAg
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29weVRleHR1cmVGcm9tVmlkZW9GcmFtZShX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWUKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIE5vdGU6IFRoaXMgZXh0cmEgY2FzdGlu
ZyBpcyBuZWVkZWQgc2luY2UgVmlkZW9GcmFtZXMgYXJlIHN0aWxsIE1lZGlhU2FtcGxlcy4KLSAg
ICBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiB2aWRlb0ZyYW1lQ1Y7Ci0gICAgaWYgKGlz
PFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4oKnZpZGVvRnJhbWUpKQotICAgICAgICB2aWRlb0ZyYW1l
Q1YgPSAmZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPigqdmlkZW9GcmFtZSk7Ci0gICAg
ZWxzZSBpZiAoaXM8V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDPigqdmlkZW9GcmFtZSkpCi0g
ICAgICAgIHZpZGVvRnJhbWVDViA9IGRvd25jYXN0PFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2Jq
Qz4oKnZpZGVvRnJhbWUpLnZpZGVvRnJhbWUoKTsKLSAgICBlbHNlIHsKKworICAgIGF1dG8gdmlk
ZW9GcmFtZUNWID0gdmlkZW9GcmFtZS0+YXNWaWRlb0ZyYW1lQ1YoKTsKKyAgICBpZiAoIXZpZGVv
RnJhbWVDVikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gUHJvZ3JhbW1pbmcg
ZXJyb3IsIG5vdCBhIElQQyBhdHRhY2suCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKaW5kZXggMDhiODBh
NThmZWY5NWQyYWFjNzBjZWNkZTljZTY3MjBhNTdhNzk5Mi4uNGJhYzliMzY4NTMzZWEwOTcxNTIz
ZDEzMjQ3NWZkMjQ0YTMwZjRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1ZpZGVvRnJhbWVDVi5oPgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oPgogI2VuZGlmCkBAIC04NCw3ICs4Myw3IEBAIHZvaWQgUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXA6OmNsb3NlKCkKICAgICAvLyBUT0RPOiBhZGQgY2FuIGhhcHBlbiBhZnRlciBzdG9wcGlu
Zy4KIH0KIAotUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwOjphZGQoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZyYW1lKQorUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
OjphZGQoUmVmPFdlYkNvcmU6OlZpZGVvRnJhbWU+JiYgZnJhbWUpCiB7CiAgICAgYXV0byB3cml0
ZSA9IFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZTo6Z2VuZXJhdGVGb3JBZGQoKTsKICAg
ICBhdXRvIG5ld0ZyYW1lUmVmZXJlbmNlID0gd3JpdGUucmV0aXJlZFJlZmVyZW5jZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuaAppbmRleCA1M2VkNTZlMGFlMGRlZWY2MTU0YzhjZTA0YTliMTZjZjE1
MGU2OGIwLi5jMDhhNWE0Yzc3ZjYwNTIxNjYyN2M1MGIxMGE0MTFlZjFhYjkyYzAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVj
dEhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJUaHJlYWRT
YWZlT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1ZpZGVvRnJhbWUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1
ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgogICAgIH5S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOwogCiAgICAgdm9pZCBjbG9zZSgpOwotICAgIFJl
bW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBhZGQoUmVmPFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlPiYmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGdldChSZW1vdGVWaWRl
b0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJlYWQpIHsgcmV0dXJuIG1faGVhcC5yZXRpcmUoV1RGTW92
ZShyZWFkKSwgMF9zKTsgfQorICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBh
ZGQoUmVmPFdlYkNvcmU6OlZpZGVvRnJhbWU+JiYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRl
b0ZyYW1lPiBnZXQoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiByZWFkKSB7IHJldHVy
biBtX2hlYXAucmV0aXJlKFdURk1vdmUocmVhZCksIDBfcyk7IH0KIAogICAgIHZvaWQgc3RvcExp
c3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYpIHsgY2xvc2Uo
KTsgfQogCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGNvbnN0IFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICBUaHJlYWRTYWZlT2JqZWN0SGVh
cDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
Pj4gbV9oZWFwOworICAgIFRocmVhZFNhZmVPYmplY3RIZWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVu
dGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZT4+IG1faGVhcDsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIG1fc2hhcmVkVmlkZW9GcmFtZVdy
aXRlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggZDhhMjkyMjY2MTZiMjY0N2YxMWY4NDU2
MDI5ZjNkZWRlZTIzZTIxNC4uMGY4MmQ5NDU1YTk5NTRlYjMwZWI2ZTNhYTFmZjEwZjNhNjc5MjJm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldl
YlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC05Nyw3ICs5Nyw3IEBAIGF1dG8gTGliV2ViUlRDQ29kZWNz
UHJveHk6OmNyZWF0ZURlY29kZXJDYWxsYmFjayhSVENEZWNvZGVySWRlbnRpZmllciBpZGVudGlm
aWVyCiAgICAgaWYgKHVzZVJlbW90ZUZyYW1lcykKICAgICAgICAgdmlkZW9GcmFtZU9iamVjdEhl
YXAgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLnB0cigpOwogICAgIHJldHVybiBbaWRlbnRpZmll
ciwgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbiwgcmVzb3VyY2VPd25lciA9IG1fcmVzb3VyY2VP
d25lciwgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBXVEZNb3ZlKHZpZGVvRnJhbWVPYmplY3RIZWFw
KV0gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1
aW50MzJfdCB0aW1lU3RhbXApIG11dGFibGUgewotICAgICAgICBhdXRvIHZpZGVvRnJhbWUgPSBX
ZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShNZWRpYVRpbWUodGltZVN0YW1wTnMsIDEpLCBm
YWxzZSwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIHBpeGVsQnVm
ZmVyKTsKKyAgICAgICAgYXV0byB2aWRlb0ZyYW1lID0gV2ViQ29yZTo6VmlkZW9GcmFtZUNWOjpj
cmVhdGUoTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSwgZmFsc2UsIFdlYkNvcmU6OlZpZGVvRnJh
bWU6OlJvdGF0aW9uOjpOb25lLCBwaXhlbEJ1ZmZlcik7CiAgICAgICAgIGlmIChyZXNvdXJjZU93
bmVyKQogICAgICAgICAgICAgdmlkZW9GcmFtZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkocmVzb3Vy
Y2VPd25lcik7CiAgICAgICAgIGlmICh2aWRlb0ZyYW1lT2JqZWN0SGVhcCkgewpAQCAtMjE1LDE2
ICsyMTUsMTYgQEAgTGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVj
c1Byb3h5OjpmaW5kRW5jb2RlcihSVENFbmNvZGVySWRlbnQKICAgICByZXR1cm4gJml0ZXJhdG9y
LT52YWx1ZTsKIH0KIAotc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJS
VENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0
aW9uKQorc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1Jv
dGF0aW9uKFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHN3
aXRjaCAocm90YXRpb24pIHsKLSAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpOb25lOgorICAgIGNhc2UgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246Ok5v
bmU6CiAgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjoKKyAgICBjYXNl
IFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgogICAgICAgICByZXR1
cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1l
OjpSb3RhdGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9u
XzkwOwotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6
CisgICAgY2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDoKICAgICAgICAg
cmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcwOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDUyZjYxOGEzODZjMzBlYWY2ZGJlMDg4MDE2
NGY0YzlmMzI2OThiMTEuLmJmMGI5NDJlNDYxMzUzNGQwYTlmYTgzYmM4ODgyNGFmYmExMWM5MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVy
TwogICAgIG1fd3JpdGVyLT5hcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcigqbV9hdWRpb0J1ZmZlckxp
c3QsIG1fZGVzY3JpcHRpb24sIHRpbWUsIG51bWJlck9mRnJhbWVzKTsKIH0KIAotdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYg
c2hhcmVkVmlkZW9GcmFtZSkKK3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9GcmFtZUF2
YWlsYWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYgc2hhcmVkVmlkZW9GcmFtZSkKIHsKICAgICBpZiAo
YXV0byBmcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5yZWFkKFdURk1vdmUoc2hhcmVk
VmlkZW9GcmFtZSkpKQogICAgICAgICBtX3dyaXRlci0+YXBwZW5kVmlkZW9GcmFtZSgqZnJhbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuaAppbmRleCAxY2MxYmIzYmZhMDA4MjAwMTFiMDc1OWJiMjcwZWRjM2U1MzU0MTU2
Li4zZjgxZWZiNDM0NTcxNWU4N2VjYzVlYTA1YTA4NDgwODY0YzA4OTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaApA
QCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2
NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRp
YVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZh
aWxhYmxlKFNoYXJlZFZpZGVvRnJhbWUmJik7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxl
KFNoYXJlZFZpZGVvRnJhbWUmJik7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJik7CiAgICAgdm9pZCBzdG9w
UmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBwYXVzZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmlu
CmluZGV4IDliN2Q5NmY2M2RkNDI4ZjJhMGRjY2ZiNjU4ZTJlODlhOWM2ZjYwMDcuLjEyYmM4MDUw
YjY0NWUzYjA4MzgzY2ZkYmJhM2U2YmQzYjg0MjBmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVjb3Jk
ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQog
ICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpCi0gICAgVmlkZW9TYW1wbGVBdmFpbGFibGUoc3RydWN0IFdlYktpdDo6U2hhcmVk
VmlkZW9GcmFtZSBmcmFtZSkKKyAgICBWaWRlb0ZyYW1lQXZhaWxhYmxlKHN0cnVjdCBXZWJLaXQ6
OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUpCiAgICAgRmV0Y2hEYXRhKCkgLT4gKElQQzo6RGF0YVJl
ZmVyZW5jZSBidWZmZXIsIGRvdWJsZSB0aW1lQ29kZSkKICAgICBTdG9wUmVjb3JkaW5nKCkgLT4g
KCkKICAgICBQYXVzZSgpIC0+ICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAK
aW5kZXggOGQwNGYyY2M1YTc4OWE3YTRlOTU4NzQwYzdiNjhiNTM5M2U1YmE0Yi4uMWQ3YWRhYjU2
OTM5MzJlZDhkM2QzOThhNDA0ZGQ5M2U2NDAyMTg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6dXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHRyYQog
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVSb290TGF5ZXJBZmZpbmVUcmFu
c2Zvcm0odHJhbnNmb3JtKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFdlYkNv
cmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLT51cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihib3VuZHMsIHJv
dGF0aW9uLCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2hvdWxkVXBkYXRlUm9vdExh
eWVyOjpZZXMpOwogfQpAQCAtMTE2LDE1ICsxMTYsMTUgQEAgdm9pZCBSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+
cGF1c2UoKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWUoU2hhcmVkVmlkZW9GcmFtZSYmIGZyYW1lKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVWaWRlb0ZyYW1lKFNoYXJlZFZpZGVvRnJhbWUmJiBmcmFtZSkKIHsK
ICAgICBpZiAoYXV0byB2aWRlb0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnJlYWQo
V1RGTW92ZShmcmFtZSkpKQotICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5x
dWV1ZSh2aWRlb0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25U
aW1lKCkpOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5xdWV1ZUJ1ZmZl
cih2aWRlb0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1l
KCkpOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1
ZXVlZFNhbXBsZXMoKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFy
VmlkZW9GcmFtZXMoKQogewotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5jbGVhckVu
cXVldWVkU2FtcGxlcygpOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5jbGVhclZp
ZGVvRnJhbWVzKCk7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaAppbmRleCAxNjFmM2M5NTllZDNjYmE3YjM4MmNlMjJmNTI0OGI2ZDFi
Y2IyNDhmLi41OTc2ODg4OTczZDEyZjlkZTZkZWVkNmY1M2IyYzIwZDY4NzE5Y2FkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTcwLDEzICs3MCwxMyBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIs
IGJvb2wgaGlkZVJvb3RMYXllcik7CiAgICAgdm9pZCB1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dB
ZmZpbmVUcmFuc2Zvcm0pOwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
LCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CisgICAgdm9pZCB1cGRhdGVC
b3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uKTsK
ICAgICB2b2lkIGZsdXNoKCk7CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCk7CiAgICAg
dm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwotICAgIHZvaWQgZW5xdWV1ZShTaGFyZWRW
aWRlb0ZyYW1lJiYpOwotICAgIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKTsKKyAgICB2b2lk
IGVucXVldWVWaWRlb0ZyYW1lKFNoYXJlZFZpZGVvRnJhbWUmJik7CisgICAgdm9pZCBjbGVhclZp
ZGVvRnJhbWVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6
U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeShjb25zdCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLm1lc3NhZ2VzLmluCmluZGV4IDczMTBlYmFmOWEyZjkxNTgwZTFmZDgxY2Q5ZGEy
YjY2OTgwZWZhNzUuLjUyNGY0NWViNmYwNWNlNWFhZmJlMTEyNmZhNmY2NWRmZGY3ZjM5MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCkBAIC0y
OSwxMSArMjksMTEgQEAgbWVzc2FnZXMgLT4gUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAgICAgVXBkYXRlRGlzcGxheU1vZGUoYm9vbCBoaWRl
RGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpCiAgICAgVXBkYXRlQWZmaW5lVHJhbnNm
b3JtKENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSkKLSAgICBVcGRhdGVCb3VuZHNBbmRQb3Np
dGlvbihDR1JlY3QgYm91bmRzLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBy
b3RhdGlvbikKKyAgICBVcGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikKICAgICBGbHVzaCgpCiAgICAgRmx1
c2hBbmRSZW1vdmVJbWFnZSgpCi0gICAgRW5xdWV1ZShzdHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRl
b0ZyYW1lIGZyYW1lKQotICAgIENsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKKyAgICBFbnF1ZXVlVmlk
ZW9GcmFtZShzdHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1lIGZyYW1lKQorICAgIENsZWFy
VmlkZW9GcmFtZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKICAgICBTZXRTaGFyZWRWaWRl
b0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5jcHAKaW5kZXggMmQ0NTNlNGRhNzljMmQ4MmQxYTkxZDA0MmYzNDUxZWI4ZWRkYzUw
Yi4uZmM1NzQ4MjQ1YzFlNDIzN2EyMmVmNTMxODI4YzA1NDVkZDc3ZTUzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQcm94eQogICAg
IDogcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgogICAgICwgcHJpdmF0ZSBS
ZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb1NhbXBsZU9ic2VydmVyCi0gICAgLCBwcml2YXRlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgICwgcHJpdmF0ZSBS
ZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNvdXJjZVByb3h5KFJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFByb2Nl
c3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNv
dXJjZSwgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHZpZGVvRnJhbWVPYmpl
Y3RIZWFwKQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6U2NyZWVuOgogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6
OldpbmRvdzoKLSAgICAgICAgICAgIG1fc291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0
aGlzKTsKKyAgICAgICAgICAgIG1fc291cmNlLT5hZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6Tm9uZToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTEsNyAr
OTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW86CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6U2NyZWVuOgog
ICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OldpbmRvdzoKLSAgICAgICAg
ICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAg
ICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZToK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTc4LDE2ICsxNzgsMTYgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fY2FwdHVyZVNlbWFwaG9yZS0+c2lnbmFsKCk7CiAgICAg
fQogCi0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiByb3RhdGVWaWRlb0ZyYW1lSWZOZWVkZWQoTWVk
aWFTYW1wbGUmIHNhbXBsZSkKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gcm90YXRlVmlkZW9GcmFt
ZUlmTmVlZGVkKFZpZGVvRnJhbWUmIGZyYW1lKQogICAgIHsKLSAgICAgICAgaWYgKG1fc2hvdWxk
QXBwbHlSb3RhdGlvbiAmJiBzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpOb25lKSB7Ci0gICAgICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gcm90
YXRlUGl4ZWxCdWZmZXIoc2FtcGxlKTsKLSAgICAgICAgICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6
OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgp
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgV1RGTW92ZShwaXhlbEJ1ZmZlcikp
OworICAgICAgICBpZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIGZyYW1lLnJvdGF0aW9uKCkg
IT0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUpIHsKKyAgICAgICAgICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihmcmFtZSk7CisgICAgICAgICAgICByZXR1cm4gVmlk
ZW9GcmFtZUNWOjpjcmVhdGUoZnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCBmcmFtZS5pc01pcnJv
cmVkKCksIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSk7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICZzYW1wbGU7CisgICAgICAgIHJldHVybiAmZnJh
bWU7CiAgICAgfQogCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYg
ZnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpIGZpbmFsCisgICAgdm9pZCB2
aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIGZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhIG1ldGFkYXRhKSBmaW5hbAogICAgIHsKICAgICAgICAgYXV0byB2aWRlb0ZyYW1lID0gcm90
YXRlVmlkZW9GcmFtZUlmTmVlZGVkKGZyYW1lKTsKICAgICAgICAgaWYgKCF2aWRlb0ZyYW1lKQpA
QCAtMTk1LDM1ICsxOTUsMzUgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1fcmVzb3VyY2VPd25l
cikKICAgICAgICAgICAgIHZpZGVvRnJhbWUtPnNldE93bmVyc2hpcElkZW50aXR5KG1fcmVzb3Vy
Y2VPd25lcik7CiAgICAgICAgIGlmICghbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCkgewotICAgICAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlcjo6VmlkZW9GcmFtZUF2YWlsYWJsZUNWKG1faWQsIHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVy
KCksIHZpZGVvRnJhbWUtPnZpZGVvUm90YXRpb24oKSwgdmlkZW9GcmFtZS0+dmlkZW9NaXJyb3Jl
ZCgpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCksIG1ldGFkYXRhKSwgMCk7CisgICAg
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyOjpWaWRlb0ZyYW1lQXZhaWxhYmxlQ1YobV9pZCwgdmlkZW9GcmFtZS0+cGl4ZWxCdWZm
ZXIoKSwgdmlkZW9GcmFtZS0+cm90YXRpb24oKSwgdmlkZW9GcmFtZS0+aXNNaXJyb3JlZCgpLCB2
aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCksIG1ldGFkYXRhKSwgMCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0gbV92aWRlb0Zy
YW1lT2JqZWN0SGVhcC0+YWRkKCp2aWRlb0ZyYW1lKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6VmlkZW9GcmFtZUF2YWls
YWJsZShtX2lkLCBwcm9wZXJ0aWVzLCBtZXRhZGF0YSksIDApOwogICAgIH0KIAotICAgIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihNZWRpYVNhbXBsZSYgc2Ft
cGxlKQorICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihW
aWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JvdGF0aW9uU2Vz
c2lvbikKICAgICAgICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUPigpOwogCiAgICAgICAgIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJv
dGF0aW9uUHJvcGVydGllcyByb3RhdGlvbjsKLSAgICAgICAgc3dpdGNoIChzYW1wbGUudmlkZW9S
b3RhdGlvbigpKSB7Ci0gICAgICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5v
bmU6CisgICAgICAgIHN3aXRjaCAodmlkZW9GcmFtZS5yb3RhdGlvbigpKSB7CisgICAgICAgIGNh
c2UgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIHJvdGF0aW9uLmFuZ2xlID0gMDsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3du
OgorICAgICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgogICAgICAg
ICAgICAgcm90YXRpb24uYW5nbGUgPSAxODA7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAgICAgIGNhc2UgVmlk
ZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAgICAgICAgcm90YXRpb24uYW5nbGUgPSA5
MDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpMZWZ0OgorICAgICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0Ogog
ICAgICAgICAgICAgcm90YXRpb24uYW5nbGUgPSAyNzA7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24tPnJvdGF0ZShzYW1wbGUs
IHJvdGF0aW9uLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpO
byk7CisgICAgICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHZpZGVvRnJhbWUs
IHJvdGF0aW9uLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpO
byk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3Jh
Z2UsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXpl
X3QgZnJhbWVDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAppbmRleCBhYjhmNjkyOGFlZjcz
M2U1OTBlN2FkOWZkODBmNDliNDA2ODI4MzgxLi5lODFiMjNmOTBiNTE3YzE1MjgzYzc1MTYzNzVh
N2IxYzAxYTA1ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBAIC00MiwxNSArNDIsMTUg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVy
dGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRl
b0ZyYW1lUmVmZXJlbmNlJiYgcmVmZXJlbmNlLCBjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYg
bWVkaWFTYW1wbGUpCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5j
ZSYmIHJlZmVyZW5jZSwgY29uc3QgV2ViQ29yZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsK
ICAgICByZXR1cm4gewogICAgICAgICBXVEZNb3ZlKHJlZmVyZW5jZSksCi0gICAgICAgIG1lZGlh
U2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwKLSAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9NaXJy
b3JlZCgpLAotICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1JvdGF0aW9uKCksCi0gICAgICAgIGV4
cGFuZGVkSW50U2l6ZShtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25TaXplKCkpLAotICAgICAgICBt
ZWRpYVNhbXBsZS52aWRlb1BpeGVsRm9ybWF0KCkKKyAgICAgICAgdmlkZW9GcmFtZS5wcmVzZW50
YXRpb25UaW1lKCksCisgICAgICAgIHZpZGVvRnJhbWUuaXNNaXJyb3JlZCgpLAorICAgICAgICB2
aWRlb0ZyYW1lLnJvdGF0aW9uKCksCisgICAgICAgIGV4cGFuZGVkSW50U2l6ZSh2aWRlb0ZyYW1l
LnByZXNlbnRhdGlvblNpemUoKSksCisgICAgICAgIHZpZGVvRnJhbWUucGl4ZWxGb3JtYXQoKQog
ICAgIH07CiB9CiAKQEAgLTk0LDcgKzk0LDcgQEAgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVu
Y2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpuZXdSZWFkUmVmZXJlbmNlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLnJlYWQoKTsKIH0KIAotdWludDMyX3QgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3VpbnQzMl90IFJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BpeGVs
Rm9ybWF0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKaW5kZXggY2U0MDcxMGQ3MWUwNDJjY2IxNzc5
YmNjM2U0NWIzYmFiMmYzNDEyNi4uZTQ0ZDI5ZmVlMzZhOTA0Zjc3NDU1ZjY3MjA0NDZjZWExMWE4
ZmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlIHJlZmVyZW5jZTsKICAgICAg
ICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWU7CiAgICAgICAgIGJvb2wgaXNNaXJyb3JlZCB7
IGZhbHNlIH07Ci0gICAgICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24geyBWaWRlb1JvdGF0aW9u
OjpOb25lIH07CisgICAgICAgIFJvdGF0aW9uIHJvdGF0aW9uIHsgUm90YXRpb246Ok5vbmUgfTsK
ICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOwogICAgICAgICB1aW50MzJfdCBwaXhlbEZv
cm1hdCB7IDAgfTsKIApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3BlcnRpZXM+IGRlY29k
ZShEZWNvZGVyJik7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMo
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlh
U2FtcGxlJik7CisgICAgc3RhdGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhXZWJLaXQ6OlJlbW90
ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiwgY29uc3QgV2ViQ29yZTo6VmlkZW9GcmFtZSYpOwogCiAg
ICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IGNyZWF0ZShJUEM6OkNvbm5lY3Rp
b24mLCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5JiwgUHJvcGVydGllcyYmKTsKIApA
QCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJDb3JlOjpWaWRlb0ZyYW1lIG92
ZXJyaWRlcy4KICAgICBXZWJDb3JlOjpGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQo
KSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29u
c3QgZmluYWw7CkBAIC0xMTYsMTIgKzExNiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcz4gUmVtbwog
ICAgIGF1dG8gcmVmZXJlbmNlID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8UmVtb3RlVmlkZW9G
cmFtZVJlZmVyZW5jZT4oKTsKICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBkZWNvZGVyLnRl
bXBsYXRlIGRlY29kZTxNZWRpYVRpbWU+KCk7CiAgICAgYXV0byBpc01pcnJvcmVkID0gZGVjb2Rl
ci50ZW1wbGF0ZSBkZWNvZGU8Ym9vbD4oKTsKLSAgICBhdXRvIHZpZGVvUm90YXRpb24gPSBkZWNv
ZGVyLnRlbXBsYXRlIGRlY29kZTxWaWRlb1JvdGF0aW9uPigpOworICAgIGF1dG8gcm90YXRpb24g
PSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSb3RhdGlvbj4oKTsKICAgICBhdXRvIHNpemUgPSBk
ZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxXZWJDb3JlOjpJbnRTaXplPigpOwogICAgIGF1dG8gcGl4
ZWxGb3JtYXQgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTx1aW50MzJfdD4oKTsKICAgICBpZiAo
IWRlY29kZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJl
dHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSwgV1RGTW92ZSgqcHJlc2VudGF0
aW9uVGltZSksICppc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiwgKnNpemUsICpwaXhlbEZvcm1h
dCB9OworICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSwgV1RGTW92
ZSgqcHJlc2VudGF0aW9uVGltZSksICppc01pcnJvcmVkLCAqcm90YXRpb24sICpzaXplLCAqcGl4
ZWxGb3JtYXQgfTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29u
c3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJik7CkBAIC0xMjksNyArMTI5LDcg
QEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpQcm9wZXJ0aWVzJik7CiB9CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gaXM8V2Vi
Q29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpICYmIGRvd25jYXN0PFdlYkNvcmU6OlZpZGVv
RnJhbWU+KG1lZGlhU2FtcGxlKS5pc1JlbW90ZVByb3h5KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlk
ZW9GcmFtZS5pc1JlbW90ZVByb3h5KCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBmZDEyMmRiZTU3M2NhYWE5Yjk0NGM4NjU3YTQ1
NDVhMGRhNWM1YjY2Li42ZDNhZTBlMDViNDhiYzZlOGZlZWE0MWIyZWY3MWQxYjAzMjJkMmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVEND
b2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldl
YlJUQ0NvZGVjcy5jcHAKQEAgLTEwMiwyMCArMTAyLDIwIEBAIHN0YXRpYyBpbnQzMl90IGluaXRp
YWxpemVWaWRlb0VuY29kZXIod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5jb2RlciwgY29u
c3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDQ29kZWNzKCku
aW5pdGlhbGl6ZUVuY29kZXIoKnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+
KGVuY29kZXIpLCBjb2RlYy53aWR0aCwgY29kZWMuaGVpZ2h0LCBjb2RlYy5zdGFydEJpdHJhdGUs
IGNvZGVjLm1heEJpdHJhdGUsIGNvZGVjLm1pbkJpdHJhdGUsIGNvZGVjLm1heEZyYW1lcmF0ZSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gdG9NZWRpYVNh
bXBsZVZpZGVvUm90YXRpb24od2VicnRjOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQorc3RhdGlj
IGlubGluZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbiB0b1ZpZGVvUm90YXRpb24od2VicnRjOjpWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHN3aXRjaCAocm90YXRpb24pIHsKICAgICBjYXNl
IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDoKLSAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpOb25lOworICAgICAgICByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246
Ok5vbmU7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDoKLSAgICAgICAgcmV0
dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOworICAgICAgICByZXR1
cm4gVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd247CiAgICAgY2FzZSB3ZWJydGM6OmtW
aWRlb1JvdGF0aW9uXzkwOgotICAgICAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246OlJpZ2h0OworICAgICAgICByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0Owog
ICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA6Ci0gICAgICAgIHJldHVybiBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAgICAgICAgcmV0dXJuIFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpMZWZ0OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CisgICAgcmV0dXJuIFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpOb25lOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBmb3JtYXRO
YW1lRnJvbVdlYlJUQ0NvZGVjVHlwZSh3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIHR5cGUpCkBAIC00
OTQsNyArNDk0LDcgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKIAotICAgIFNoYXJlZFZp
ZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFtZSB7IE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMo
KSAqIDEwMDAsIDEwMDAwMDApLCBmYWxzZSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24oZnJh
bWUucm90YXRpb24oKSksIFdURk1vdmUoKmJ1ZmZlcikgfTsKKyAgICBTaGFyZWRWaWRlb0ZyYW1l
IHNoYXJlZFZpZGVvRnJhbWUgeyBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkgKiAxMDAw
LCAxMDAwMDAwKSwgZmFsc2UsIHRvVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSwgV1RG
TW92ZSgqYnVmZmVyKSB9OwogICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVudGlmaWVyLCBz
aGFyZWRWaWRlb0ZyYW1lLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFt
ZSB9LCAwKTsKICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuY3BwCmluZGV4IDA0ODUwNjU0ZGExOTM1NmE0ZTExZjY1ODg1OTM1ZDMyMTk3ZjZk
OTcuLjg1ODUyNjQ1ZDI1N2JhYmM1NjBiZDQ1N2FkMTYwMDQwZjgzY2YxNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5jcHAKQEAgLTkyLDI1ICs5MiwyNSBAQCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6
fk1lZGlhUmVjb3JkZXJQcml2YXRlKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKLXZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGU6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBz
YW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
Ojp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVU
aW1lTWV0YWRhdGEpCiB7CiAgICAgaWYgKHNob3VsZE11dGVWaWRlbygpKSB7CiAgICAgICAgIGlm
ICghbV9ibGFja0ZyYW1lU2l6ZSkgewotICAgICAgICAgICAgYXV0byBzaXplID0gc2FtcGxlLnBy
ZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAgICAgIGF1dG8gc2l6ZSA9IHZpZGVvRnJhbWUucHJl
c2VudGF0aW9uU2l6ZSgpOwogICAgICAgICAgICAgbV9ibGFja0ZyYW1lU2l6ZSA9IFdlYkNvcmU6
OkludFNpemUgeyBzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZS5oZWlnaHQoKSkgfTsKICAgICAgICAgfQotICAgICAgICBTaGFyZWRWaWRlb0ZyYW1l
IHNoYXJlZFZpZGVvRnJhbWUgeyBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlk
ZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCAqbV9ibGFja0ZyYW1lU2l6ZSB9
OwotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgc2hhcmVkVmlkZW9GcmFtZSB9LCBtX2lkZW50aWZp
ZXIpOworICAgICAgICBTaGFyZWRWaWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUgeyB2aWRlb0Zy
YW1lLnByZXNlbnRhdGlvblRpbWUoKSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJh
bWUucm90YXRpb24oKSwgKm1fYmxhY2tGcmFtZVNpemUgfTsKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb0ZyYW1lQXZhaWxhYmxl
IHsgc2hhcmVkVmlkZW9GcmFtZSB9LCBtX2lkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgbV9ibGFja0ZyYW1lU2l6ZSA9IHsgfTsKLSAgICBhdXRvIHNoYXJlZFZpZGVv
RnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUoc2FtcGxlLAorICAgIGF1dG8g
c2hhcmVkVmlkZW9GcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZSh2aWRlb0Zy
YW1lLAogICAgICAgICBbdGhpc10oYXV0byYgc2VtYXBob3JlKSB7IG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFw
aG9yZSB7IHNlbWFwaG9yZSB9LCBtX2lkZW50aWZpZXIpOyB9LAogICAgICAgICBbdGhpc10oYXV0
byYgaGFuZGxlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNv
cmRlcjo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGhhbmRsZSB9LCBtX2lkZW50aWZpZXIp
OyB9CiAgICAgKTsKICAgICBpZiAoc2hhcmVkVmlkZW9GcmFtZSkKLSAgICAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb1NhbXBsZUF2YWls
YWJsZSB7IFdURk1vdmUoKnNoYXJlZFZpZGVvRnJhbWUpIH0sIG1faWRlbnRpZmllcik7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6Vmlk
ZW9GcmFtZUF2YWlsYWJsZSB7IFdURk1vdmUoKnNoYXJlZFZpZGVvRnJhbWUpIH0sIG1faWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRp
b0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qg
bnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA3MjEwYzBjZWIxMDdjYjdk
N2U0MTZmYjY4MzJmMzhmMjI2OGI5YzQ4Li5lMjRlYWJlMGViYjI1YjliODJlM2Q1Yjc5MWVlMmZj
ODQ2MjQ4N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlCi0gICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWls
YWJsZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFy
dFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5j
cHAKaW5kZXggNzE5OTJmMDRmMjliNGIwZWQ1NjViMzNiOTk2NGFmODM2NzgwMTJkOC4uNzQ1Y2Zm
NmM3MzIwMjhiZWUxMTI5ZmM1ODU2NDhjZjliNGViYThjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OnVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0K
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6VXBkYXRlQWZmaW5lVHJhbnNmb3JtIHsgdHJhbnNmb3JtIH0sIG1faWRlbnRpZmll
cik7CiB9CiAKLXZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQ
b3NpdGlvbihDR1JlY3QgYm91bmRzLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlv
bikKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlv
bihDR1JlY3QgYm91bmRzLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6VXBkYXRlQm91bmRzQW5kUG9zaXRpb24geyBib3VuZHMsIHJvdGF0aW9uIH0sIG1faWRlbnRp
Zmllcik7CiB9CkBAIC0xMjcsMjQgKzEyNywyNCBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6cGF1c2UoKQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpQYXVzZSB7IH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBz
YW1wbGUpCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVZpZGVvRnJhbWUo
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gc2hhcmVkVmlkZW9GcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVdy
aXRlci53cml0ZShzYW1wbGUsCisgICAgYXV0byBzaGFyZWRWaWRlb0ZyYW1lID0gbV9zaGFyZWRW
aWRlb0ZyYW1lV3JpdGVyLndyaXRlKHZpZGVvRnJhbWUsCiAgICAgICAgIFt0aGlzXShhdXRvJiBz
ZW1hcGhvcmUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBzZW1hcGhvcmUg
fSwgbV9pZGVudGlmaWVyKTsgfSwKICAgICAgICAgW3RoaXNdKGF1dG8mIGhhbmRsZSkgeyBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGhhbmRsZSB9LCBtX2lkZW50aWZpZXIpOyB9CiAg
ICAgKTsKICAgICBpZiAoIXNoYXJlZFZpZGVvRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpFbnF1ZXVlIHsgKnNoYXJlZFZpZGVvRnJhbWUgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6RW5xdWV1ZVZpZGVvRnJhbWUgeyAqc2hhcmVkVmlkZW9GcmFtZSB9LCBtX2lkZW50aWZpZXIp
OwogfQogCi12b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBs
ZXMoKQordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQog
ewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpDbGVhckVucXVldWVkU2FtcGxlcyB7IH0sIG1faWRlbnRpZmllcik7CisgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OkNsZWFyVmlkZW9GcmFtZXMgeyB9LCBtX2lkZW50aWZpZXIpOwogfQogCiBQbGF0Zm9ybUxh
eWVyKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJvb3RMYXllcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oCmluZGV4IDVlODQzNGE5ZjQyNDQ4MGQxMDIyZTQ1YWU4Yjg2OTkzMzQ2NzEz
Y2MuLjA3NDAxZjY0NzE3OTVmNWZkYzFlZDJmNTlkY2JmZDU4YzEzNWNlOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oCkBAIC02MiwxMyArNjIsMTMgQEAgcHJpdmF0ZToKICAgICBib29s
IGRpZEZhaWwoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wg
aGlkZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKSBmaW5hbDsKICAgICB2b2lkIHVw
ZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCwgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24pIGZpbmFsOwogICAgIHZvaWQgZmx1c2go
KSBmaW5hbDsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5hbDsKICAgICB2b2lk
IHBsYXkoKSBmaW5hbDsKICAgICB2b2lkIHBhdXNlKCkgZmluYWw7Ci0gICAgdm9pZCBlbnF1ZXVl
U2FtcGxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJikgZmluYWw7Ci0gICAgdm9pZCBjbGVhckVucXVl
dWVkU2FtcGxlcygpIGZpbmFsOworICAgIHZvaWQgZW5xdWV1ZVZpZGVvRnJhbWUoV2ViQ29yZTo6
VmlkZW9GcmFtZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygpIGZpbmFsOwog
ICAgIFBsYXRmb3JtTGF5ZXIqIHJvb3RMYXllcigpIGZpbmFsOwogCiAgICAgLy8gR1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAppbmRleCBjZThlYzVmY2RjNzJkMjU3
ZjBkOTRjZWIyODhiZmJiM2JiYWIzZWNlLi4zOWI3NGJmNDZkZWJkYTVkYjY5ZjY3ZmIyYmM2YThk
ZThmZDRlOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcApAQCAtOTMsMTUgKzkzLDE1IEBAIGJvb2wgU2hh
cmVkVmlkZW9GcmFtZVdyaXRlcjo6cHJlcGFyZVdyaXRpbmcoY29uc3QgU2hhcmVkVmlkZW9GcmFt
ZUluZm8mIGluZm8sIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hh
cmVkVmlkZW9GcmFtZT4gU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d3JpdGUoTWVkaWFTYW1wbGUm
IGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhv
cmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCitzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJh
bWU+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKFZpZGVvRnJhbWUmIGZyYW1lLCBjb25z
dCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywg
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3
TWVtb3J5Q2FsbGJhY2spCiB7CiAgICAgYXV0byBidWZmZXIgPSB3cml0ZUJ1ZmZlcihmcmFtZSwg
bmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZSB7IGZy
YW1lLnByZXNlbnRhdGlvblRpbWUoKSwgZnJhbWUudmlkZW9NaXJyb3JlZCgpLCBmcmFtZS52aWRl
b1JvdGF0aW9uKCksIFdURk1vdmUoKmJ1ZmZlcikgfTsKKyAgICByZXR1cm4gU2hhcmVkVmlkZW9G
cmFtZSB7IGZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwgZnJhbWUuaXNNaXJyb3JlZCgpLCBmcmFt
ZS5yb3RhdGlvbigpLCBXVEZNb3ZlKCpidWZmZXIpIH07CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hh
cmVkVmlkZW9GcmFtZTo6QnVmZmVyPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZUJ1ZmZl
cihNZWRpYVNhbXBsZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUm
KT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3N0ZDo6b3B0aW9uYWw8
U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZUJ1
ZmZlcihWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9y
ZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQogewogICAgIGlmIChp
czxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KGZyYW1lKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0
PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oZnJhbWUpLm5ld1JlYWRSZWZlcmVuY2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJh
bWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJh
bWUuaAppbmRleCBmYTNkODNjNWQ5NGI4YWZkMGU1ZDc5YzAwZGRjZDM5ZGZlM2EzMzM3Li5hMTUw
MWU3NWE2NGYyMTM3ZmE1YzE2OTE2NTJjNDEwMmNiOGZmOTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCkBAIC01
NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwogc3RydWN0IFNo
YXJlZFZpZGVvRnJhbWUgewogICAgIE1lZGlhVGltZSB0aW1lOwogICAgIGJvb2wgbWlycm9yZWQg
eyBmYWxzZSB9OwotICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0
aW9uIHsgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBX
ZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiB7IFdlYkNvcmU6OlZpZGVvRnJh
bWU6OlJvdGF0aW9uOjpOb25lIH07CiAgICAgdXNpbmcgQnVmZmVyID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSwgTWFjaFNlbmRSaWdo
dCwgV2ViQ29yZTo6SW50U2l6ZT47CiAgICAgQnVmZmVyIGJ1ZmZlcjsKIApAQCAtNjgsNyArNjgs
NyBAQCBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIHsKIHB1YmxpYzoKICAgICBTaGFyZWRW
aWRlb0ZyYW1lV3JpdGVyKCk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+
IHdyaXRlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNl
bWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmKT4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IHdyaXRlKFdl
YkNvcmU6OlZpZGVvRnJhbWUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+
JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYp
OwogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3cml0ZUJ1ZmZl
cihDVlBpeGVsQnVmZmVyUmVmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+
JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYs
IGJvb2wgY2FuU2VuZElPU3VyZmFjZSA9IHRydWUpOwogI2lmIFVTRShMSUJXRUJSVEMpCiAgICAg
c3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IHdyaXRlQnVmZmVyKGNvbnN0
IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUm
KT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+
Jik7CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvY2F0ZVN0b3JhZ2Uo
c2l6ZV90LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
Jik+Jik7CiAgICAgYm9vbCBwcmVwYXJlV3JpdGluZyhjb25zdCBXZWJDb3JlOjpTaGFyZWRWaWRl
b0ZyYW1lSW5mbyYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CiAKLSAg
ICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gd3JpdGVCdWZmZXIoV2Vi
Q29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+
JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYp
OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3cml0ZUJ1ZmZl
cihXZWJDb3JlOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9y
ZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
KT4mKTsKICNpZiBVU0UoTElCV0VCUlRDKQogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9G
cmFtZTo6QnVmZmVyPiB3cml0ZUJ1ZmZlcih3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXImLCBjb25z
dCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyLmNwcAppbmRleCA3NjRlYzBkNWY3N2JkM2VlMDUyNDUwMzg3ZTRmODFkZWY2ZDZhYWU5
Li5mZmJmYTMxZmVhMGQyMThjOGNiNTUwNzQ1OTQxMjQ3NWQyNjhmNzE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5jcHAKQEAgLTE1OSwxMSArMTU5LDEwIEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXI6OnZpZGVvRnJhbWVBdmFpbGFibGUoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBmaW5kIHNv
dXJjZSAlbGx1IGZvciB2aWRlb0ZyYW1lQXZhaWxhYmxlIiwgaWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIHZpZGVvRnJhbWVTaXplID0gdmlk
ZW9GcmFtZS0+c2l6ZSgpOwotICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9GcmFtZUF2YWlsYWJs
ZShXVEZNb3ZlKHZpZGVvRnJhbWUpLCB2aWRlb0ZyYW1lU2l6ZSwgbWV0YWRhdGEpOworICAgIGl0
ZXJhdG9yLT52YWx1ZS0+cmVtb3RlVmlkZW9GcmFtZUF2YWlsYWJsZShXVEZNb3ZlKHZpZGVvRnJh
bWUpLCBtZXRhZGF0YSk7CiB9CiAKLXZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZp
ZGVvRnJhbWVBdmFpbGFibGVDVihSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlh
VGltZSBwcmVzZW50YXRpb25UaW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1l
dGFkYXRhKQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9GcmFtZUF2YWls
YWJsZUNWKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpS
b3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7CiAgICAgQVNT
RVJUKCFXVEY6OmlzTWFpblJ1bkxvb3AoKSk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fdmlkZW9T
b3VyY2VzLmZpbmQoaWRlbnRpZmllcik7CkBAIC0xNzMsOCArMTcyLDcgQEAgdm9pZCBSZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9GcmFtZUF2YWlsYWJsZUNWKFJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGkKICAgICB9CiAKICAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6
OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lLCBtaXJyb3JlZCwgcm90YXRpb24sIFdURk1vdmUocGl4
ZWxCdWZmZXIpKTsKLSAgICBhdXRvIHNpemUgPSB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25TaXpl
KCk7Ci0gICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUu
Z2V0KCksIHsgc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+
KHNpemUuaGVpZ2h0KCkpIH0sIG1ldGFkYXRhKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnJlbW90
ZVZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZS5nZXQoKSwgbWV0YWRhdGEpOwogfQogCiBS
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlQXVkaW86OlJlbW90ZUF1ZGlvKFJlZjxS
ZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlPiYmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgK
aW5kZXggM2VjOTJiNWRlMDg4NWQyNzM1YjEyYzE4NjQ2ODcxZWUwZjhmYWIzYS4uNWUzZjgzNDA3
NjhiYmU4YTljYjg5YzQ4MjdhMzJhOTE3ZTkzODdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgTWVkaWFUaW1lLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXMmJiwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CiAgICAgLy8g
RklYTUU6IFdpbGwgYmUgcmVtb3ZlZCBvbmNlIFJlbW90ZVZpZGVvRnJhbWVQcm94eSBwcm92aWRl
cnMgYXJlIHRoZSBvbmx5IG9uZXMgc2VuZGluZyBkYXRhLgotICAgIHZvaWQgdmlkZW9GcmFtZUF2
YWlsYWJsZUNWKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRh
ZGF0YSk7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmLCBXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lLCBXZWJD
b3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKIAogICAgIHZvaWQgc2V0Q29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb24qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2Vz
LmluCmluZGV4IDcxYjM0NzA4NTMyNjMwYWM3ZmEzMWZhYTdkYmYxZDIzYjM1MTA4ZmIuLmU1Y2Rm
YzI1M2Y0MTMxYWEwZGY1NzFhMmY0NmJlNDNmYmYyNTFhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU3RvcmFn
ZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcywg
SVBDOjpTZW1hcGhvcmUgY2FwdHVyZVNlbWFwaG9yZSwgTWVkaWFUaW1lIG1lZGlhVGltZSwgc2l6
ZV90IGZyYW1lQ2h1bmtTaXplKTsKICAgICBWaWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6UHJvcGVydGllcyBzYW1wbGUsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhIG1ldGFkYXRhKQotICAgIFZpZGVvRnJhbWVBdmFpbGFibGVDVihXZWJDb3JlOjpSZWFs
dGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlv
biwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIHN0cnVjdCBXZWJD
b3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQorICAgIFZpZGVvRnJhbWVBdmFp
bGFibGVDVihXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpS
b3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRp
bWUsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQogCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFs
dGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
UmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IGU2ZWIzMmI5ZjM5ODBjYThhNDQ4NDJhNWJlZjUx
NmFkYjQzZGEzZDUuLmQxYjg1OTk1ZjM5ZDZhODRjZDQxYjc0MDdlODQ2MjMzOWYwNTg3NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZp
ZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJl
YWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNhcHR1cmVTdG9wcGVkKGJvb2wgZGlkRmFpbCk7CiAKLSAgICB2b2lkIHZpZGVvRnJhbWVBdmFp
bGFibGUoV2ViQ29yZTo6VmlkZW9GcmFtZSYgZnJhbWUsIFdlYkNvcmU6OkludFNpemUsIFdlYkNv
cmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpIHsgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoZnJhbWUsIG1ldGFkYXRhKTsgfQorICAgIHZvaWQgcmVtb3RlVmlkZW9GcmFtZUF2YWlsYWJs
ZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRh
ZGF0YSBtZXRhZGF0YSkgeyB2aWRlb0ZyYW1lQXZhaWxhYmxlKGZyYW1lLCBtZXRhZGF0YSk7IH0K
ICAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZChib29sIHZhbHVlLCBib29sIGludGVycnVwdGVk
KTsKIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455234</attachid>
            <date>2022-03-21 05:22:51 -0700</date>
            <delta_ts>2022-03-21 05:59:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237884-20220321132246.patch</filename>
            <type>text/plain</type>
            <size>178790</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwOTYzNDY1YjQzZGFi
MWFlNjkyYjg2YWRmODMzYjliN2FhMmZhZi4uMzgzMmQ4MmI2MWI5M2ZhZTZmNjYxZmRlNGVmZDlj
ZmE5YjBlZWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlIHRvIFZp
ZGVvRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yaW5nIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC0gUmVuYW1pbmcgb2Yg
VmlkZW9TYW1wbGVPYnNlcnZlciB0byBWaWRlb0ZyYW1lT2JzZXJ2ZXIsIHZpZGVvU2FtcGxlQXZh
aWxhYmxlIHRvIHZpZGVvRnJhbWVBdmFpbGFibGUuLi4KKyAgICAgICAgLSB2aWRlb0ZyYW1lQXZh
aWxhYmxlIHRha2VzIGEgVmlkZW9GcmFtZSBpbnN0ZWFkIG9mIGEgTWVkaWFTYW1wbGUKKyAgICAg
ICAgLSBVc2UgVmlkZW9GcmFtZTo6cm90YXRpb24gYW5kIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQu
CisgICAgICAgIC0gVXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uIGluc3RlYWQgb2YgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24KKyAgICAgICAgVXBkYXRlIGNvZGUgYWNjb3JkaW5nIHRoaXMgcmVu
YW1pbmcuCisgICAgICAgIE1vdmUgZnJvbSB1c2luZyBNZWRpYVNhbXBsZSB0byBWaWRlb0ZyYW1l
IHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAgIFByZXBhcmUgZm9yIHJlbW92YWwgb2Yg
TWVkaWFTYW1wbGUgYXMgcGFyZW50IGNsYXNzIG9mIFZpZGVvRnJhbWUuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
SW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9GcmFtZUNWLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b0ZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDIyLTAzLTIxICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0IGJlIGNhbGxlZCBpbiBzZXRSYW5nZVRleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODE4N2Y1MGI2MzM4NGMxZDA0ZDliZTNlZjM2NGUzNmQzMWYzMTljNy4uNDc3
NzlkYzZjNDFhNTEyN2Y2ZjlmMDM0NjZiOWZkMDQyNDczOTdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwzOSBAQAogMjAyMi0wMy0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
KyAgICAgICAgTW92ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZSB0byBWaWRlb0ZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGZyb20gdXNpbmcgTWVkaWFTYW1wbGUgdG8g
VmlkZW9GcmFtZSBkaXJlY3RseS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRW
aWRlb0ZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCisyMDIyLTAzLTE4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgdXNlIG9mIE1lZGlhU2FtcGxlQVZG
T2JqQyBmcm9tIFdlYlJUQyBwaXBlbGluZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzcwNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA0MjUz
OTE+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDhhMGQ0ZTQ0
MDkxM2Y1YzhiZmIyMWIxMjE2YTA0NzE5NThiM2U1ZDEuLjkxNWFlOGNkZjg4NjYzODczNDkwNjFi
NzM1MjlmNTc2MGRiZDRlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
azo6U291cmNlOjpjYXB0dXJlQ2FudmFzKCkKIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEg
bWV0YWRhdGE7CiAgICAgbWV0YWRhdGEuY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KS5zZWNvbmRzU2luY2VFcG9jaCgpOwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCp2aWRlb0Zy
YW1lLCBtZXRhZGF0YSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0
YWRhdGEpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2s6OmNsb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMjZkOTJlZDhiN2E5NzI3
ZDg5MTQ5ZmY0NjYzZDM0YzMyOTRhMTAzMC4uNzc4YjdkYTFlZGZjMTEwMjk5MWQzY2M3NGY3MGZm
OTYzNDI2YjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNywxMCArMTM3LDYgQEAKICNpbmNs
dWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgotI2VuZGlmCi0KICNpZiAhVVNFKEFOR0xFKQog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaWYgVVNFKE9QRU5HTF9FUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDY3NDYxOWZhNjIyZWFjOTk1
OGY1ZjQwOTU5NWM3ZWU4MDcxNDI2MGEuLjk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5MWM0OWIy
ZGUwMGEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMTE3LDkg
KzExNyw5IEBAIHB1YmxpYzoKICAgICAgICAgUmlnaHQgPSA5MCwKICAgICAgICAgTGVmdCA9IDI3
MCwKICAgICB9OwotICAgIHZpcnR1YWwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aWRl
b01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90
IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggZDViYzczMzZhZmJjMjBlZTE3NDhhZmZhYWRhMTIx
NDlmZWJlM2NmNS4uZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBN
ZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcHJlc2VudGF0aW9uVGltZTsKIH0KIAotTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gVmlk
ZW9GcmFtZTo6dmlkZW9Sb3RhdGlvbigpIGNvbnN0CitWaWRlb0ZyYW1lOjpSb3RhdGlvbiBWaWRl
b0ZyYW1lOjpyb3RhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcm90YXRpb247CiB9CiAK
LWJvb2wgVmlkZW9GcmFtZTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0Citib29sIFZpZGVvRnJhbWU6
OmlzTWlycm9yZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzTWlycm9yZWQ7CiB9CkBAIC0x
MzAsNyArMTMwLDcgQEAgUmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZTo6YXNWaWRlb0Zy
YW1lQ1YoKQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIHZpZGVvTWly
cm9yZWQoKSwgdmlkZW9Sb3RhdGlvbigpLCBidWZmZXIpOworICAgIHJldHVybiBWaWRlb0ZyYW1l
Q1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIGlzTWlycm9yZWQoKSwgcm90YXRpb24oKSwg
YnVmZmVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKaW5k
ZXggYWJhNGI2Y2NiOTJhMjdiMjQzNzI4NzRkMTkxMTI4OTUxYjY0MTk5Ny4uOGFhNDJlZWZmYWFm
NmFiNGQzN2U5YTg1NmEyNDU5N2NjYmE1NzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVv
RnJhbWUuaApAQCAtNDIsMTAgKzQyLDEyIEBAIGNsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVk
aWFTYW1wbGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CiAK
KyAgICB1c2luZyBSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOworCiAgICAg
Ly8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgogICAgIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKICAgICAvLyBGSVhNRTogV2hlbiBWaWRl
b0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgogICAg
IFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxh
dGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggODhmZjI3NWE0ODJjODM0MDY5MjNjOTQ4OWNlYzhh
NzRjNjVjYTkwNS4uNzk3OTg4NzY5OTlhNWYzZmMyMDEzYTI3YzNhOGY0OGFkY2MyYjgyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMjUsOCAr
MjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgVmlkZW9GcmFtZTsKIAog
Y2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHsKIHB1YmxpYzoKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVE
aXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpID0gMDsK
QEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVl
U2FtcGxlKE1lZGlhU2FtcGxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckVucXVldWVk
U2FtcGxlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9G
cmFtZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygpID0gMDsKIAog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApp
bmRleCBhNjZiMjczNWJjZWFlZGVjMzU2ZWM3ZjA4Mzc0MjM1NjU0ZWRiMjNkLi40OTQ2NTAzYzky
ZTIwMjY3YzZjNzk3MzQ4ZjlhNWQ5NTRlYTJkZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFJldGFpblB0
cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4mJiwgQ2xpZW50Jik7CiAgICAgfkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKKyAgICB2b2lkIGVucXVldWVCdWZmZXIoQ1ZQaXhl
bEJ1ZmZlclJlZiwgTWVkaWFUaW1lKTsKKwogICAgIC8vIEFQSSB1c2VkIGJ5IFdlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIKICAgICB2b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdl
KCk7CiAgICAgdm9pZCBsYXllckVycm9yRGlkQ2hhbmdlKCk7CkBAIC01NiwxMiArNTgsMTIgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm1MYXllciogZGlzcGxheUxheWVyKCk7CiAKLSAgICBQbGF0
Zm9ybUxheWVyKiByb290TGF5ZXIoKSBmaW5hbDsKLQogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBk
YXRlUm9vdExheWVyIHsgTm8sIFllcyB9OwotICAgIHZvaWQgdXBkYXRlUm9vdExheWVyQm91bmRz
QW5kUG9zaXRpb24oQ0dSZWN0LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgU2hvdWxkVXBk
YXRlUm9vdExheWVyKTsKKyAgICB2b2lkIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcik7CiAg
ICAgdm9pZCB1cGRhdGVSb290TGF5ZXJBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0p
OwogCisgICAgLy8gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorICAgIFBsYXRmb3JtTGF5ZXIq
IHJvb3RMYXllcigpIGZpbmFsOwogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5
ZXIsIEludFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBkaWRTdWNjZWVkKT4mJikg
ZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlm
aWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpIGZpbmFsIHsgbV9sb2dJZGVudGlmaWVyID0gV1RG
TW92ZShsb2dJZGVudGlmaWVyKTsgfQpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RM
YXllcikgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRy
YW5zZm9ybSkgIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCb3Vu
ZHNBbmRQb3NpdGlvbihDR1JlY3QsIFZpZGVvRnJhbWU6OlJvdGF0aW9uKSBmaW5hbDsKIAogICAg
IHZvaWQgZmx1c2goKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5h
bDsKQEAgLTc5LDE3ICs4MSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5KCkgZmluYWw7CiAg
ICAgdm9pZCBwYXVzZSgpIGZpbmFsOwogCi0gICAgdm9pZCBlbnF1ZXVlKENWUGl4ZWxCdWZmZXJS
ZWYsIE1lZGlhVGltZSk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJikgZmlu
YWw7Ci0gICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpIGZpbmFsOworICAgIHZvaWQgZW5x
dWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJWaWRlb0Zy
YW1lcygpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVuZGVyUG9saWN5KFJlbmRlclBvbGljeSkgZmlu
YWw7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1
ZSgpOwotICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmKTsKKwor
ICAgIHZvaWQgcmVtb3ZlT2xkVmlkZW9GcmFtZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CisgICAgdm9p
ZCBhZGRWaWRlb0ZyYW1lVG9QZW5kaW5nUXVldWUoUmVmPFZpZGVvRnJhbWU+JiYpOwogICAgIHZv
aWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgIHZvaWQg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgc2V0Um9vdExheWVy
Qm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOwor
ICAgIHZvaWQgc2V0Um9vdExheWVyQm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgVmlkZW9GcmFt
ZTo6Um90YXRpb24pOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBvbkly
cmVndWxhckZyYW1lUmF0ZU5vdGlmaWNhdGlvbihNb25vdG9uaWNUaW1lIGZyYW1lVGltZSwgTW9u
b3RvbmljVGltZSBsYXN0RnJhbWVUaW1lKTsKQEAgLTEwNCw4ICsxMDUsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcHJvY2Vzc2luZ1F1ZXVlOwogCiAgICAgLy8gT25seSBh
Y2Nlc3NlZCB0aHJvdWdoIG1fcHJvY2Vzc2luZ1F1ZXVlIG9yIGlmIG1fcHJvY2Vzc2luZ1F1ZXVl
IGlzIG51bGwuCi0gICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlh
U2FtcGxlPj47Ci0gICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVl
dWU7CisgICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPFZpZGVvRnJhbWU+
PjsKKyAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlOwogICAg
IAogICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IDFjY2Rk
ZmE4ODE1YTRmNzY0ZTI0OTFjNzA0NzViOGQyMGJkYzQ5MDQuLjQ1OGM1YTM5YWYwNWQ4YTBhMGUw
YmQ1NWMwYmZiMTAxYTEzZGQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMSw3ICszMSw2IEBACiAj
aW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiSW50U2l6ZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGll
cy5oIgogCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aD4KQEAgLTQyLDggKzQxLDkgQEAKICNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9N
ZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0
aW9uU1BJLmg+Ci0KKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtMTk4LDcgKzE5OCw3IEBAIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp+TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQogCiAgICAgW21fc3RhdHVzQ2hhbmdl
TGlzdGVuZXIgc3RvcF07CiAKLSAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7
CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFyKCk7CiAKICAgICBbbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaF07CkBAIC0yNjUsMjggKzI2NSwyOCBAQCB2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZp
bmVUcmFuc2Zvcm0gdHJhbgogICAgIH0pOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZpZGVvRnJh
bWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBv
c2l0aW9uKGJvdW5kcywgcm90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcjo6Tm8pOwogfQog
Ci12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJCb3VuZHNB
bmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24pCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJC
b3VuZHNBbmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24pCiB7CiAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IHsgYm91bmRzLnNpemUud2lkdGggLyAy
LCBib3VuZHMuc2l6ZS5oZWlnaHQgLyAyfTsKLSAgICBpZiAocm90YXRpb24gPT0gTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0IHx8IHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0KQorICAgIGlmIChyb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6UmlnaHQgfHwgcm90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQpCiAgICAg
ICAgIHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAog
ICAgIG1fcm9vdExheWVyLmdldCgpLnBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgbV9yb290TGF5
ZXIuZ2V0KCkuYm91bmRzID0gYm91bmRzOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRz
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgU2hvdWxkVXBkYXRlUm9vdExh
eWVyIHNob3VsZFVwZGF0ZVJvb3RMYXllcikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBTaG91bGRVcGRhdGVSb290TGF5ZXIgc2hvdWxk
VXBkYXRlUm9vdExheWVyKQogewogICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CiAgICAg
ICAgIGlmIChzaG91bGRVcGRhdGVSb290TGF5ZXIgPT0gU2hvdWxkVXBkYXRlUm9vdExheWVyOjpZ
ZXMpCiAgICAgICAgICAgICBzZXRSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbnMoYm91bmRzLCBy
b3RhdGlvbik7CiAKLSAgICAgICAgaWYgKHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpSaWdodCB8fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdCkKKyAgICAgICAgaWYgKHJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdo
dCB8fCByb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCkKICAgICAgICAgICAg
IHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAogICAg
ICAgICBDR1BvaW50IHBvc2l0aW9uID0geyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5z
aXplLmhlaWdodCAvIDJ9OwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQogCiBzdGF0aWMgY29uc3QgZG91
YmxlIHJlbmRlcmVyTGF0ZW5jeSA9IDAuMDI7CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECkBAIC0zMjEsMjIgKzMyMSwxNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZSA9
IFJlZiB7IHNhbXBsZSB9XSB7CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCB2aWRlb0ZyYW1lID0gUmVmIHsgdmlkZW9GcmFtZSB9XSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0p
IHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlICgle3B1YmxpY31zKSBub3QgcmVhZHkgZm9yIG1vcmUg
bWVkaWEgZGF0YSIsIG1fbG9nSWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7CisgICAgICAgICAgICBhZGRWaWRlb0Zy
YW1lVG9QZW5kaW5nUXVldWUoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiAgICAgICAgICAgICByZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihzYW1wbGUpOworICAg
ICAgICBlbnF1ZXVlQnVmZmVyKHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUt
PnByZXNlbnRhdGlvblRpbWUoKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
LXsKLSAgICBlbnF1ZXVlKHNhbXBsZS5waXhlbEJ1ZmZlcigpLCBzYW1wbGUucHJlc2VudGF0aW9u
VGltZSgpKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRp
YXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQogewogICAgIENGQXJyYXlSZWYg
YXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50
c0FycmF5KHNhbXBsZUJ1ZmZlciwgdHJ1ZSk7CkBAIC0zNDYsNyArMzQxLDcgQEAgc3RhdGljIHZv
aWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRpYXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyKQogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTM2MSw3ICsz
NTYsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlKENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIE1lZGlhVAogICAgIGNvbnN0ZXhwciBzaXplX3QgZnJh
bWVDb3VudFBlckxvZyA9IDE4MDA7IC8vIGxvZyBldmVyeSBtaW51dGUgYXQgMzAgZnBzCiAgICAg
aWYgKCEobV9mcmFtZVJhdGVNb25pdG9yLmZyYW1lQ291bnQoKSAlIGZyYW1lQ291bnRQZXJMb2cp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBtZXRyaWNzID0gW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIHZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzXSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdl
YlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICgle3B1YmxpY31zKSBtZXRyaWNz
LCB0b3RhbD0lbHUsIGRyb3BwZWQ9JWx1LCBjb3JydXB0ZWQ9JWx1LCBkaXNwbGF5LWNvbXBvc2l0
ZWQ9JWx1LCBub24tZGlzcGxheS1jb21wb3NpdGVkPSVsdSAocGVuZGluZz0lbHUpIiwgbV9sb2dJ
ZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIG1ldHJpY3MudG90YWxOdW1iZXJPZlZpZGVvRnJhbWVz
LCBtZXRyaWNzLm51bWJlck9mRHJvcHBlZFZpZGVvRnJhbWVzLCBtZXRyaWNzLm51bWJlck9mQ29y
cnVwdGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEaXNwbGF5Q29tcG9zaXRlZFZpZGVv
RnJhbWVzLCBtZXRyaWNzLm51bWJlck9mTm9uRGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcywg
bV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKCV7cHVibGljfXMpIG1l
dHJpY3MsIHRvdGFsPSVsdSwgZHJvcHBlZD0lbHUsIGNvcnJ1cHRlZD0lbHUsIGRpc3BsYXktY29t
cG9zaXRlZD0lbHUsIG5vbi1kaXNwbGF5LWNvbXBvc2l0ZWQ9JWx1IChwZW5kaW5nPSVsdSkiLCBt
X2xvZ0lkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgbWV0cmljcy50b3RhbE51bWJlck9mVmlkZW9G
cmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEcm9wcGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVy
T2ZDb3JydXB0ZWRWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJPZkRpc3BsYXlDb21wb3NpdGVk
VmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZOb25EaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJh
bWVzLCBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuc2l6ZSgpKTsKICAgICB9CiAgICAgbV9mcmFt
ZVJhdGVNb25pdG9yLnVwZGF0ZSgpOwogI2VuZGlmCkBAIC0zNzMsNDQgKzM2OCw0NCBAQCB2b2lk
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpvbklycmVndWxhckZyYW1lUmF0ZU5vdGlm
aWNhdGlvbihNb25vdG9uaWNUaQogICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lVGltZSA9IGZy
YW1lVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIGxhc3RGcmFtZVRpbWUgPSBsYXN0
RnJhbWVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgb2JzZXJ2ZWRGcmFtZVJhdGUg
PSBtX2ZyYW1lUmF0ZU1vbml0b3Iub2JzZXJ2ZWRGcmFtZVJhdGUoKSwgZnJhbWVDb3VudCA9IG1f
ZnJhbWVSYXRlTW9uaXRvci5mcmFtZUNvdW50KCksIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIgKCV7cHVibGljfXMpIGF0ICVmLCBwcmV2aW91cyBmcmFtZSB3YXMg
YXQgJWYsIG9ic2VydmVkIGZyYW1lIHJhdGUgaXMgJWYsIGRlbGF5IHNpbmNlIGxhc3QgZnJhbWUg
aXMgJWYgbXMsIGZyYW1lIGNvdW50IGlzICVsdSIsIHdlYWtUaGlzLT5tX2xvZ0lkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSwgZnJhbWVUaW1lLCBsYXN0RnJhbWVUaW1lLCBvYnNlcnZlZEZyYW1lUmF0
ZSwgKGZyYW1lVGltZSAtIGxhc3RGcmFtZVRpbWUpICogMTAwMCwgZnJhbWVDb3VudCk7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpl
bnF1ZXVlVmlkZW9GcmFtZSAoJXtwdWJsaWN9cykgYXQgJWYsIHByZXZpb3VzIGZyYW1lIHdhcyBh
dCAlZiwgb2JzZXJ2ZWQgZnJhbWUgcmF0ZSBpcyAlZiwgZGVsYXkgc2luY2UgbGFzdCBmcmFtZSBp
cyAlZiBtcywgZnJhbWUgY291bnQgaXMgJWx1Iiwgd2Vha1RoaXMtPm1fbG9nSWRlbnRpZmllci51
dGY4KCkuZGF0YSgpLCBmcmFtZVRpbWUsIGxhc3RGcmFtZVRpbWUsIG9ic2VydmVkRnJhbWVSYXRl
LCAoZnJhbWVUaW1lIC0gbGFzdEZyYW1lVGltZSkgKiAxMDAwLCBmcmFtZUNvdW50KTsKICAgICB9
KTsKIH0KICNlbmRpZgogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZW1v
dmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZW1vdmVPbGRWaWRlb0ZyYW1lc0Zyb21QZW5kaW5nUXVldWUoKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKG1fcGVuZGluZ1ZpZGVvU2FtcGxl
UXVldWUuaXNFbXB0eSgpKQorICAgIGlmIChtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9yZW5kZXJQb2xpY3kgPT0gUmVuZGVy
UG9saWN5OjpJbW1lZGlhdGVseSkgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KTsKLSAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
Zmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9G
cmFtZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuZmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOwogICAg
ICAgICBpZiAocHJlc2VudGF0aW9uVGltZS5pc1ZhbGlkKCkgJiYgcHJlc2VudGF0aW9uVGltZSA+
IG5vdykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1
ZXVlLnJlbW92ZUZpcnN0KCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5yZW1v
dmVGaXJzdCgpOwogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFZpZGVvRnJhbWVUb1BlbmRpbmdRdWV1ZShS
ZWY8VmlkZW9GcmFtZT4mJiB2aWRlb0ZyYW1lKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKTsKLSAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChzYW1wbGUpOworICAgIHJlbW92ZU9sZFZpZGVv
RnJhbWVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5h
cHBlbmQoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQogewogICAgIG1fcHJvY2Vzc2luZ1F1
ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
IH0pOwogfQogCkBAIC00MjQsMTMgKzQxOSwxMyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKICAg
ICAgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgICAgICBb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogCi0g
ICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9w
ZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBlbnF1
ZXVlU2FtcGxlQnVmZmVyKHNhbXBsZSk7CisgICAgICAgICAgICAgICAgYXV0byB2aWRlb0ZyYW1l
ID0gbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAg
IGVucXVldWVCdWZmZXIodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uVGltZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAyY2MxN2FkZjhkN2NiNGExZjNlM2M2NTU1MjY0NGRi
NzZjZjZlNTFiLi4xZDkzMWM2ZjlkNDVlZjMwODEwZWEzZjEzZDgwMDIyZWYxMTUzMDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3NTQsNyArMjc1NCw3IEBAIFJlZlB0cjxWaWRlb0Zy
YW1lPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb0ZyYW1lRm9yQ3Vy
cmVudFRpbWUoCiAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQ
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAg
cmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9
KTsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCA1YmU3MDgzZjU0ZjA4ODMzYTRhZmFmNGRlNjhiMTg1NzZhN2NiODRiLi45Yzkx
M2U0ZjQzZjczMDM4ZThjM2IwZDRjMjZjNWJhNTQ5NDJhNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC03NDcsNyArNzQ3LDcgQEAgUmVmUHRyPFZpZGVvRnJhbWU+IE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZW9GcmFtZUZvckN1cnJlbnRUaW0KICAg
ICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAgcmV0dXJuIFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9KTsKIH0KIAog
RGVzdGluYXRpb25Db2xvclNwYWNlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6Y29sb3JTcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDkyZGFkMzA5ZmJj
YWY5NDE2M2M3MzkwZTljZmRiNGMwNzY0MDI1ZmEuLjBlNzQxODdjMTMwZDVkYzZmZWNlZGY3ZjY3
ZThiMTkxMGJmMmMzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yOCw5ICsyOCw5
IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
IGZpbmFsCiAgICAgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAgICAgLCBw
cml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW9GcmFtZU9ic2VydmVyCiAgICAgLCBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpDbGllbnQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiB7CkBAIC0xMzYsOSArMTM2
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmx1c2hSZW5kZXJlcnMoKTsKIAotICAgIHZvaWQg
cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7Ci0gICAgdm9pZCBlbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmKTsK
LSAgICB2b2lkIHJlZW5xdWV1ZUN1cnJlbnRWaWRlb1NhbXBsZUlmTmVlZGVkKCk7CisgICAgdm9p
ZCBwcm9jZXNzTmV3VmlkZW9GcmFtZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7Cisg
ICAgdm9pZCByZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAKICAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMjEx
LDggKzIxMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKIAotICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgotICAgIHZvaWQgdmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAg
ICAvLyBSZWFsdGltZU1lZGlhU291Y2U6OlZpZGVvRnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlk
ZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CiAKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIAog
ICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7Ci0gICAgICAgIFJlZlB0cjxNZWRp
YVNhbXBsZT4gbWVkaWFTYW1wbGU7CisgICAgICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiB2aWRlb0Zy
YW1lOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gcGl4
ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKICAgICBDdXJyZW50RnJhbWVQYWludGVyIG1faW1h
Z2VQYWludGVyOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gV3JpdHRlbiBv
biBtYWluIHRocmVhZCwgcmVhZCBvbiBzYW1wbGUgdGhyZWFkLgogICAgIGJvb2wgbV9jYW5FbnF1
ZXVlRGlzcGxheUxheWVyIHsgZmFsc2UgfTsKICAgICAvLyBVc2VkIG9uIHNhbXBsZSB0aHJlYWQu
Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBt
X3ZpZGVvUm90YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wg
bV92aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9n
Z2VyOwpAQCAtMjcyLDggKzI3Miw4IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8V2ViUm9v
dFNhbXBsZUJ1ZmZlckJvdW5kc0NoYW5nZUxpc3RlbmVyPiBtX2JvdW5kc0NoYW5nZUxpc3RlbmVy
OwogCi0gICAgTG9jayBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2s7Ci0gICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBtX2N1cnJlbnRWaWRlb1NhbXBsZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY3VycmVu
dFZpZGVvU2FtcGxlTG9jayk7CisgICAgTG9jayBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jazsKKyAg
ICBSZWZQdHI8VmlkZW9GcmFtZT4gbV9jdXJyZW50VmlkZW9GcmFtZSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fY3VycmVudFZpZGVvRnJhbWVMb2NrKTsKIAogICAgIGJvb2wgbV9wbGF5aW5nIHsgZmFs
c2UgfTsKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IDRkZDgxYmFhZjk1ODkwNWU2YWI5NjkyMWZiZmRjZDU3ZGQwZDIwNDMuLmU0NjQ2
ZDZiM2RjNTg2NzkxYjViZmIxZDNkYWNhMTQ1YzFkZDJhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EuaCIKICNpbXBvcnQgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2ltcG9ydCAi
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMTYwLDcgKzE1OSw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQygpCiAgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKIAogICAgIGlmIChtX2FjdGl2ZVZpZGVvVHJhY2spCi0gICAgICAgIG1fYWN0aXZlVmlk
ZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICAgICAgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJj
ZSgpLnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAKICAgICBbbV9ib3VuZHNDaGFu
Z2VMaXN0ZW5lciBpbnZhbGlkYXRlXTsKIApAQCAtMjI5LDI5ICsyMjgsMjkgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1
cHBvcnRzVHlwZShjb24KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTYW1wbGVCdWZm
ZXIgTWV0aG9kcwogCi1zdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNm
b3JtYXRpb25NYXRyaXgoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3N0YXRpYyBpbmxpbmUgQ0dBZmZp
bmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChWaWRlb0ZyYW1lJiB2aWRlb0Zy
YW1lKQogewotICAgIGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAg
YXV0byBzaXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CiAgICAgc2l6ZV90IHdp
ZHRoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpOwogICAgIHNpemVfdCBoZWln
aHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUuaGVpZ2h0KCkpOwogICAgIGlmICghd2lkdGgg
fHwgIWhlaWdodCkKICAgICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CiAK
LSAgICBhdXRvIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24o
c3RhdGljX2Nhc3Q8aW50PihzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAxODApOwot
ICAgIGlmIChzYW1wbGUudmlkZW9NaXJyb3JlZCgpKQorICAgIGF1dG8gdmlkZW9UcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxpbnQ+KHZpZGVvRnJh
bWUucm90YXRpb24oKSkgKiBNX1BJIC8gMTgwKTsKKyAgICBpZiAodmlkZW9GcmFtZS5pc01pcnJv
cmVkKCkpCiAgICAgICAgIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh2
aWRlb1RyYW5zZm9ybSwgLTEsIDEpOwogCiAgICAgcmV0dXJuIHZpZGVvVHJhbnNmb3JtOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRh
ZGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBwcm9jZXNzTmV3VmlkZW9TYW1wbGUo
c2FtcGxlLCBtZXRhZGF0YSwgcHJlc2VudGF0aW9uVGltZSk7Ci0gICAgZW5xdWV1ZVZpZGVvU2Ft
cGxlKHNhbXBsZSk7CisgICAgcHJvY2Vzc05ld1ZpZGVvRnJhbWUodmlkZW9GcmFtZSwgbWV0YWRh
dGEsIHByZXNlbnRhdGlvblRpbWUpOworICAgIGVucXVldWVWaWRlb0ZyYW1lKHZpZGVvRnJhbWUp
OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSkKIHsKICAgICBpZiAoIW1faXNQYWdlVmlzaWJsZSB8fCAhbV9pc1Zpc2libGVJblZpZXdQ
b3J0KQogICAgICAgICByZXR1cm47CkBAIC0yNjMsNTIgKzI2Miw1MiBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU2Ft
cGxlJiBzYW1wbAogICAgIGlmICghbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyIHx8ICFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciB8fCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFp
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSAh
PSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWly
cm9yZWQpIHsKLSAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24o
KTsKLSAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVvTWlycm9yZWQoKTsKKyAg
ICBpZiAodmlkZW9GcmFtZS5yb3RhdGlvbigpICE9IG1fdmlkZW9Sb3RhdGlvbiB8fCB2aWRlb0Zy
YW1lLmlzTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQpIHsKKyAgICAgICAgbV92aWRlb1Jv
dGF0aW9uID0gdmlkZW9GcmFtZS5yb3RhdGlvbigpOworICAgICAgICBtX3ZpZGVvTWlycm9yZWQg
PSB2aWRlb0ZyYW1lLmlzTWlycm9yZWQoKTsKICAgICAgICAgbV9zaG91bGRVcGRhdGVEaXNwbGF5
TGF5ZXIgPSB0cnVlOwogICAgIH0KICAgICBpZiAobV9zaG91bGRVcGRhdGVEaXNwbGF5TGF5ZXIp
IHsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUFmZmluZVRyYW5z
Zm9ybSh2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSkpOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQWZmaW5lVHJhbnNmb3JtKHZpZGVvVHJhbnNmb3Jt
YXRpb25NYXRyaXgodmlkZW9GcmFtZSkpOwogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+dXBkYXRlQm91bmRzQW5kUG9zaXRpb24obV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PnJvb3RMYXllcigpLmJvdW5kcywgbV92aWRlb1JvdGF0aW9uKTsKICAgICAgICAgbV9zaG91bGRV
cGRhdGVEaXNwbGF5TGF5ZXIgPSBmYWxzZTsKICAgICB9CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShzYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLT5lbnF1ZXVlVmlkZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZW5xdWV1ZUN1cnJlbnRWaWRlb1Nh
bXBsZUlmTmVlZGVkKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpyZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fY3Vy
cmVudFZpZGVvU2FtcGxlTG9jay50cnlMb2NrKCkpCisgICAgaWYgKCFtX2N1cnJlbnRWaWRlb0Zy
YW1lTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
QWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgQWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jayB9OwogCi0gICAgaWYgKCFtX2N1
cnJlbnRWaWRlb1NhbXBsZSAmJiAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYg
KCFtX2N1cnJlbnRWaWRlb0ZyYW1lICYmICFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVmlkZW9TYW1wbGUobV9jdXJyZW50VmlkZW9TYW1w
bGUgPyAqbV9jdXJyZW50VmlkZW9TYW1wbGUgOiAqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
OworICAgIGVucXVldWVWaWRlb0ZyYW1lKG1fY3VycmVudFZpZGVvRnJhbWUgPyAqbV9jdXJyZW50
VmlkZW9GcmFtZSA6ICptX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhLCBTZWNv
bmRzIHByZXNlbnRhdGlvblRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSwgU2Vjb25kcyBwcmVzZW50YXRpb25UaW1lKQog
ewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fY3VycmVudFZpZGVvU2FtcGxlTG9jayB9OwotICAgICAgICAgICAgbV9j
dXJyZW50VmlkZW9TYW1wbGUgPSAmc2FtcGxlOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICBtX2N1cnJlbnRWaWRlb0Zy
YW1lID0gJnZpZGVvRnJhbWU7CiAgICAgICAgIH0KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWVd
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7CisgICAg
ICAgICAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdmlkZW9GcmFtZTsKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vha1RoaXMtPm1fY3VycmVudFZpZGVvU2Ft
cGxlTG9jayB9OwotICAgICAgICAgICAgICAgIHNhbXBsZSA9IFdURk1vdmUod2Vha1RoaXMtPm1f
Y3VycmVudFZpZGVvU2FtcGxlKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vh
a1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICAgICAgdmlkZW9G
cmFtZSA9IFdURk1vdmUod2Vha1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICBpZiAoIXZpZGVvRnJh
bWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB3ZWFrVGhpcy0+cHJv
Y2Vzc05ld1ZpZGVvU2FtcGxlKCpzYW1wbGUsIG1ldGFkYXRhLCBwcmVzZW50YXRpb25UaW1lKTsK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzTmV3VmlkZW9GcmFtZSgqdmlkZW9GcmFtZSwg
bWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTMxNiwxNiArMzE1LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhCiAg
ICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUgfHwgbV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFn
ZSkgewotICAgICAgICBtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSA9ICZzYW1wbGU7CisgICAg
aWYgKCFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lIHx8IG1fZGlzcGxheU1vZGUgIT0gUGF1c2Vk
SW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSA9ICZ2aWRlb0ZyYW1l
OwogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkK
ICAgICAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKICAgICB9CiAKICAgICBtX3ByZXNlbnRh
dGlvblRpbWUgPSBwcmVzZW50YXRpb25UaW1lOwotICAgIG1fdmlkZW9GcmFtZVNpemUgPSBzYW1w
bGUucHJlc2VudGF0aW9uU2l6ZSgpOwotICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpID09
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IHNhbXBsZS52aWRlb1JvdGF0aW9u
KCkgPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIG1fdmlkZW9GcmFt
ZVNpemUgPSB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICBpZiAodmlkZW9GcmFt
ZS5yb3RhdGlvbigpID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHZpZGVvRnJhbWUu
cm90YXRpb24oKSA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAgIG1fdmlk
ZW9GcmFtZVNpemUgPSB7IG1fdmlkZW9GcmFtZVNpemUuaGVpZ2h0KCksIG1fdmlkZW9GcmFtZVNp
emUud2lkdGgoKSB9OwogICAgIG1fc2FtcGxlTWV0YWRhdGEgPSBtZXRhZGF0YTsKICAgICArK21f
c2FtcGxlQ291bnQ7CkBAIC0zNjAsOCArMzU5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBp
ZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmRpZEZhaWwoKSkgewogICAgICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgICAgICBpZiAo
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCi0gICAgICAgICAgICBlbnF1ZXVlVmlkZW9TYW1w
bGUoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICAgICAgaWYgKG1faW1hZ2VQYWlu
dGVyLnZpZGVvRnJhbWUpCisgICAgICAgICAgICBlbnF1ZXVlVmlkZW9GcmFtZSgqbV9pbWFnZVBh
aW50ZXIudmlkZW9GcmFtZSk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiAgICAgfQog
fQpAQCAtNTY5LDcgKzU2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpwbGF5KCkKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAg
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wbGF5KCk7CiAgICAgdXBkYXRlRGlzcGxh
eU1vZGUoKTsKLSAgICByZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpOworICAg
IHJlZW5xdWV1ZUN1cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKTsKIAogICAgIHNjaGVkdWxlRGVm
ZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKQEAgLTY0MSw3
ICs2NDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
UGFnZUlzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKIAogICAgIG1faXNQYWdlVmlzaWJsZSA9IGlz
VmlzaWJsZTsKICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgIHJlZW5xdWV1ZUN1cnJlbnRWaWRl
b1NhbXBsZUlmTmVlZGVkKCk7CisgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJhbWVJZk5lZWRl
ZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlzaWJsZUZvckNhbnZhcyhib29sKQpAQCAtNjgxLDcgKzY4MCw3IEBAIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudFJl
YWR5U3RhdGUoCiAgICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVh
bVByaXZhdGUtPmFjdGl2ZSgpIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+aGFzVHJhY2tzKCkp
CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAK
LSAgICBib29sIHdhaXRpbmdGb3JJbWFnZSA9IGFjdGl2ZVZpZGVvVHJhY2soKSAmJiAhbV9pbWFn
ZVBhaW50ZXIubWVkaWFTYW1wbGU7CisgICAgYm9vbCB3YWl0aW5nRm9ySW1hZ2UgPSBhY3RpdmVW
aWRlb1RyYWNrKCkgJiYgIW1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWU7CiAgICAgaWYgKHdhaXRp
bmdGb3JJbWFnZSAmJiAoIW1faGF2ZVNlZW5NZXRhZGF0YSB8fCBtX3dhaXRpbmdGb3JGaXJzdElt
YWdlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGlu
ZzsKIApAQCAtNzQwLDcgKzczOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpzY2hlZHVsZVJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKICAgICBzY2hlZHVsZURl
ZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBt
X3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKLSAgICAgICAgcmVlbnF1ZXVlQ3VycmVu
dFZpZGVvU2FtcGxlSWZOZWVkZWQoKTsKKyAgICAgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJh
bWVJZk5lZWRlZCgpOwogICAgIH0pOwogfQogCkBAIC04OTQsNyArODkzLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNr
KCkKIAogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewogICAgICAgICBpZiAo
IW1fYWN0aXZlVmlkZW9UcmFjaykKLSAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5jbGVhckVucXVldWVkU2FtcGxlcygpOworICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmNsZWFyVmlkZW9GcmFtZXMoKTsKICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPnVwZGF0ZURpc3BsYXlNb2RlKGhpZGVWaWRlb0xheWVyIHx8IG1fZGlzcGxh
eU1vZGUgPCBQYXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigpKTsKICAgICB9CiAKQEAgLTkwMiwx
MSArOTAxLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
aGVja1NlbGVjdGVkVmlkZW9UcmFjaygpCiAKICAgICBpZiAob2xkVmlkZW9UcmFjayAhPSBtX2Fj
dGl2ZVZpZGVvVHJhY2spIHsKICAgICAgICAgaWYgKG9sZFZpZGVvVHJhY2spCi0gICAgICAgICAg
ICBvbGRWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgb2xkVmlkZW9UcmFjay0+c3RyZWFtVHJhY2so
KS5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAo
bV9hY3RpdmVWaWRlb1RyYWNrKSB7CiAgICAgICAgICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgJiYgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLmlz
Q2FwdHVyZVNvdXJjZSgpKQogICAgICAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5zZXRSZW5kZXJQb2xpY3koU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW5kZXJQb2xp
Y3k6OkltbWVkaWF0ZWx5KTsKLSAgICAgICAgICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFt
VHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAg
ICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb0Zy
YW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAib2JzZXJ2aW5nIHZpZGVvIHNvdXJjZSAiLCBtX2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRy
YWNrKCkubG9nSWRlbnRpZmllcigpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTk4Nyw3ICs5ODYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogewotICAgIGlmICht
X2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAg
ICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZl
ckNvbmZvcm1lcikKQEAgLTk5Nyw3ICs5OTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgIGlmICghbV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvIHBpeGVsQnVmZmVyID0gbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBpeGVs
QnVmZmVyKCkpCisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlUGFpbnRlci52aWRl
b0ZyYW1lLT5waXhlbEJ1ZmZlcigpKQogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+
Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIApAQCAtMTAwNiw3
ICsxMDA1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAobV9kaXNwbGF5TW9k
ZSA9PSBOb25lIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBQYWlu
dEl0QmxhY2sgJiYgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYgKG1fZGlzcGxh
eU1vZGUgIT0gUGFpbnRJdEJsYWNrICYmIG1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpCiAgICAg
ICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC0xMDE1LDEyICsxMDE0LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAg
IGlmICghbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5j
Z0ltYWdlOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIGlt
YWdlLT5zaXplKCkgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAg
QWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJp
eCgqbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSk7CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVk
RGVzdFJlY3QgPSB2YWx1ZU9yRGVmYXVsdCh2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5z
Zm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CkBAIC0xMDMyLDEyICsxMDMxLDcgQEAgUmVmUHRy
PFZpZGVvRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9G
cmFtZUZvckN1cnJlbnRUaW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKG1fZGlz
cGxheU1vZGUgPT0gUGFpbnRJdEJsYWNrKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpZiAoaXM8VmlkZW9GcmFtZT4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKSkKLSAg
ICAgICAgcmV0dXJuICZkb3duY2FzdDxWaWRlb0ZyYW1lPigqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwotICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSkpOwotICAgIHJldHVybiBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+
KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkudmlkZW9GcmFtZSgpOworICAgIHJldHVybiBt
X2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjb2xvclNwYWNlKCkKQEAgLTExMTEs
NyArMTEwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
Y2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogewog
ICAgIGNnSW1hZ2UgPSBudWxscHRyOwotICAgIG1lZGlhU2FtcGxlID0gbnVsbHB0cjsKKyAgICB2
aWRlb0ZyYW1lID0gbnVsbHB0cjsKICAgICBwaXhlbEJ1ZmZlckNvbmZvcm1lciA9IG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXgg
NWRjZmMwMmRhMWI4YjNmYzE2NDZjYjIyMWY5MTJmMTJiZDFlZDlmMi4uNmM1YWU1MzNiODdmMDA1
MzRhN2VlZTRlZGFlODVhY2FmMDZlMjNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmgKQEAgLTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+
PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRp
c3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBWaWRlb1JvdGF0aW9uIHZpZGVv
Um90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvdGF0aW9uOyB9Ci0gICAgYm9v
bCB2aWRlb01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3JlZDsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5h
bDsKKyAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbWlycm9yZWQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCBwaXhlbEZvcm1h
dCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVy
c2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggYTA0NTg3MGVkN2U2ODdk
MjFmMzM3OTE0MGIyODA0NjZlYTMxZjkyOC4uMTMxMWIzMzcxOGE4NGUzM2QxMzkzMTEzMDJkMDQ3
NWZkOTYzYzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQz
Ml90IE1lZGlhU2FtcGxlQVZGT2JqQzo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit1aW50MzJf
dCBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7CiAgICAgcmV0dXJuIENWUGl4ZWxC
dWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KaW5kZXggMDNmN2U0NTNjMmY0ZTFhOWM3ZDlmNTAyZmNmMjVmYTM1OGIzMzYz
OC4uNzE1NDJmNzliN2MyZDMzNjI5OWZjYzJhZDUyZTkzMWIyMGVkYzQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCkBAIC03ODEsNyArNzgxLDcgQEAgUmVmUHRyPFZpZGVvRnJh
bWU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb1ZpZGVv
RnJhbWUoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobV9yZXNvdXJjZU93bmVy
KQogICAgICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIobWVkaWFTYW1w
bGVQaXhlbEJ1ZmZlci5nZXQoKSwgbV9yZXNvdXJjZU93bmVyKTsKLSAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUoeyB9LCBmYWxzZSwgVmlkZW9GcmFtZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgV1RGTW92ZShtZWRpYVNhbXBsZVBpeGVsQnVmZmVyKSk7CisgICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKHsgfSwgZmFsc2UsIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBXVEZN
b3ZlKG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZU
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vz
c2lvblZULmgKaW5kZXggZDM4OTE5ODFlODVlODAzZGY4NGU1MDU3MGIyZDQwYWQ0MmVjMTU4Ny4u
NzM5MjQ0NmExMDUyMDIxZDg5ZDA0ZWNmYmI0ZmVjYmZhZDRiNjc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25T
ZXNzaW9uVlQuaApAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZm
ZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFZpZGVvRnJhbWU7CiAKIGNsYXNzIEltYWdlUm90YXRp
b25TZXNzaW9uVlQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTaXplJiByb3RhdGVkU2l6ZSgpIHsg
cmV0dXJuIG1fcm90YXRlZFNpemU7IH0KIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiByb3RhdGUoQ1ZQaXhlbEJ1ZmZlclJlZik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZShNZWRpYVNhbXBsZSYsIGNvbnN0IFJvdGF0aW9uUHJv
cGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGUoVmlkZW9GcmFtZSYsIGNvbnN0IFJvdGF0aW9u
UHJvcGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBGbG9hdFNpemUsIElzQ0dJbWFn
ZUNvbXBhdGlibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW0KaW5kZXggM2VhYjA2ODllOTA0
NTFhZDQ1OGNlZjM4OTY5NGZmOWU2OWIwNmY3Ni4uYTI2YWY4MWQ2MTk0MjZhYWVlOTczNzkxZjNm
MDUyOGE5Mzc3ZjM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW1wb3J0ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAi
VmlkZW9GcmFtZS5oIgogCiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCAi
VmlkZW9Ub29sYm94U29mdExpbmsuaCIKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoTWVkaWFTYW1wbGUmIHZpZGVv
RnJhbWUsIGNvbnN0IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBh
dGlibGUgY2dJbWFnZUNvbXBhdGlibGUpCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0
IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBhdGlibGUgY2dJbWFn
ZUNvbXBhdGlibGUpCiB7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHZpZGVvRnJhbWUucGl4ZWxC
dWZmZXIoKTsKICAgICBBU1NFUlQocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
CmluZGV4IGJhODEwNGQ2OTgxNGI0ZDgxYTJjNTk0MDllNWUyZGZmN2EzNTQ5YzcuLmQyMDUxMzQw
YThhMTU0OTczNDM0YmZmYmQyOGJmNGY2NzVlZTkwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4obmV3IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQo
cGl4ZWxGb3JtYXQsIHNob3VsZFVzZUlPU3VyZmFjZSkpOwogICAgIH0KIAotICAgIFJlZlB0cjxN
ZWRpYVNhbXBsZT4gY29udmVydFZpZGVvRnJhbWUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXpl
Jik7Ci0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVm
LCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9
IGZhbHNlKTsKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2Ft
cGxlQnVmZmVyUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9v
bCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY29udmVydFZpZGVv
RnJhbWUoVmlkZW9GcmFtZSYsIGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFt
ZT4gY3JlYXRlVmlkZW9GcmFtZShDR0ltYWdlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJ
bnRTaXplJiwgVmlkZW9GcmFtZTo6Um90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9u
ZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY3JlYXRl
VmlkZW9GcmFtZShDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50
U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUs
IGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShJ
T1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29s
IG1pcnJvcmVkID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0ZyYW1l
PiBjcmVhdGVWaWRlb0ZyYW1lKElPU3VyZmFjZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
SW50U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5v
bmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAjZW5kaWYKIAogICAgIHVpbnQzMl90IHBpeGVs
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0KaW5kZXggOGI2ZDc5NDU1YWI3MzMyYzM0Mzk5MjgxNDkzM2M2MDVmOTc5Y2M2ZC4u
YTczNTg2ZDlkNjljYzVmMTZlOTkzMTU2YTE3YzBkZGQyZmJlMmJiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVDTVNhbXBsZUJ1ZmZlcihJT1N1cmYK
IH0KICNlbmRpZgogCi1SZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNvbnZlcnRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBjb25zdCBJbnRTaXpl
JiBzaXplKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZl
cnRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgaWYgKHNpemUgPT0gZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0
aW9uU2l6ZSgpKSkKICAgICAgICAgcmV0dXJuICZ2aWRlb0ZyYW1lOwpAQCAtMjY0LDExICsyNjQs
MTEgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0
VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW8KICAgICBpZiAoIXJlc2l6ZWRCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRl
KHZpZGVvRnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb0ZyYW1lLnZpZGVvTWlycm9yZWQo
KSwgdmlkZW9GcmFtZS52aWRlb1JvdGF0aW9uKCksIFdURk1vdmUocmVzaXplZEJ1ZmZlcikpOwor
ICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRp
bWUoKSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgV1RG
TW92ZShyZXNpemVkQnVmZmVyKSk7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi1S
ZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2Ft
cGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNv
bnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBi
b29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNyZWF0ZVZpZGVvRnJhbWUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IE1lZGlhVGltZSYg
c2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVD
TVNhbXBsZUJ1ZmZlcihzdXJmYWNlLCBzYW1wbGVUaW1lLCBzaXplKTsKICAgICBpZiAoIXNhbXBs
ZUJ1ZmZlcikKQEAgLTI3OCw3ICsyNzgsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYQogfQog
I2VuZGlmCiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlTWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVU
aW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbiwgYm9vbCBtaXJyb3JlZCkKK1JlZlB0cjxWaWRlb0ZyYW1lPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGVWaWRlb0ZyYW1lKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IE1lZGlhVGlt
ZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24g
cm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVh
dGVDTVNhbXBsZUJ1ZmZlcihpbWFnZSwgc2FtcGxlVGltZSwgc2l6ZSk7CiAgICAgaWYgKCFzYW1w
bGVCdWZmZXIpCkBAIC0yODcsNyArMjg3LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmIGltYWdlLAogICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIG1pcnJvcmVk
LCByb3RhdGlvbik7CiB9CiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyLCBjb25zdCBN
ZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+
IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZVZpZGVvRnJhbWUoQ01TYW1wbGVCdWZmZXJS
ZWYgYnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNp
emUsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQogewogICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gY29udmVydENNU2FtcGxlQnVmZmVyKGJ1ZmZlciwgc2l6ZSwg
JnNhbXBsZVRpbWUpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAppbmRleCA5M2EzZTcxNTdl
NjFmNTA5MTA1MmJmM2Y1ZjQwNGNmMDkyNjgxYzg0Li4wY2QyZTEwOWJjNzg2MDM1YTVhZGYxOTY0
YzFjZTM5ZGYxZTY5Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlZpZGVv
RnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLXVzaW5nIENWUGl4ZWxCdWZm
ZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7Cit1c2luZyBDTVNhbXBsZUJ1ZmZlclJlZiA9IHN0
cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzksOCArMzksOCBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3MgVmlkZW9GcmFtZUNWIDog
cHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wg
aXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0ZyYW1lQ1Y+IGNyZWF0ZShNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFt
ZUNWPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24p
OwogICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GcmFtZUNWPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWVDVigpOwogCkBA
IC01MiwyNyArNTIsMjYgQEAgcHVibGljOgogCiAgICAgLy8gVmlkZW9GcmFtZSBvdmVycmlkZXMu
CiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUo
KSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB2aWRlb1BpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3QgcGl4ZWxGb3Jt
YXQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElk
ZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogICAgIGJvb2wgaXNDVigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpIGZpbmFsOwogCiBwcml2YXRlOgot
ICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZUNWKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4mJik7CiAKICAgICBjb25zdCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
bV9waXhlbEJ1ZmZlcjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVmlk
ZW9GcmFtZUNWOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1fcHJlc2VudGF0aW9uVGltZSA8PCBtX2lzTWlycm9yZWQgPDwgbV9yb3RhdGlvbiA8PCBt
X3BpeGVsQnVmZmVyOworICAgIGVuY29kZXIgPDwgcHJlc2VudGF0aW9uVGltZSgpIDw8IGlzTWly
cm9yZWQoKSA8PCByb3RhdGlvbigpIDw8IG1fcGl4ZWxCdWZmZXI7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFZpZGVvRnJhbWVDVj4+IFZpZGVv
RnJhbWVDVjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcmVzZW50YXRp
b25UaW1lID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8TWVkaWFUaW1lPigpOwogICAgIGF1dG8g
aXNNaXJyb3JlZCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPGJvb2w+KCk7Ci0gICAgYXV0byBy
b3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFZpZGVvUm90YXRpb24+KCk7CisgICAg
YXV0byByb3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFJvdGF0aW9uPigpOwogICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4+KCk7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSB8fCAhKnBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODMsNyArODIsNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxWaWRlb0ZyYW1l
Q1Y+PiBWaWRlb0ZyYW1lQ1Y6OmRlYwogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlZpZGVvRnJhbWVDVikKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlkZW9GcmFtZS5pc0NWKCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlh
U2FtcGxlKSB7IHJldHVybiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYg
aXM8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPihkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lPiht
ZWRpYVNhbXBsZSkpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFt
ZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNW
Lm1tCmluZGV4IGFiZDdlMmZjODk3YjA3MWJiMGI1ZmYzOTc2ZDk5ZjBjMTllMTQ0NmMuLmJmZmUy
YjRiZDZiNTU3YTI4Nzk4Y2IyZGVjMTJiYjlkNDg2M2M4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0Zy
YW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaXJy
b3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1JlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgYm9vbCBpc01pcnJv
cmVkLCBSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KHNhbXBsZUJ1ZmZlcikpOwogICAgIGF1dG8gdGltZVN0YW1wID0gUEFMOjpDTVNhbXBsZUJ1ZmZl
ckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOwpAQCAtNDQsNyAr
NDQsNyBAQCBSZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaQogICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6
OmNyZWF0ZShQQUw6OnRvTWVkaWFUaW1lKHRpbWVTdGFtcCksIGlzTWlycm9yZWQsIHJvdGF0aW9u
LCBwaXhlbEJ1ZmZlcik7CiB9CiAKLVJlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90
YXRpb24gcm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVy
KQorUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24sIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyKQogewogICAgIEFTU0VSVChwaXhlbEJ1
ZmZlcik7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUNWKHByZXNlbnRhdGlv
blRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uLCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSkpOwpAQCAt
NzMsMTAgKzczLDEwIEBAIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3JlYXRl
RnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7Ci0gICAg
cmV0dXJuIGNyZWF0ZSh7IH0sIGZhbHNlLCBWaWRlb1JvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKGN2
UGl4ZWxCdWZmZXIpKTsKKyAgICByZXR1cm4gY3JlYXRlKHsgfSwgZmFsc2UsIFJvdGF0aW9uOjpO
b25lLCBXVEZNb3ZlKGN2UGl4ZWxCdWZmZXIpKTsKIH0KIAotVmlkZW9GcmFtZUNWOjpWaWRlb0Zy
YW1lQ1YoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9S
b3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZm
ZXIpCitWaWRlb0ZyYW1lQ1Y6OlZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIpCiAgICAgOiBWaWRlb0ZyYW1lKHByZXNlbnRhdGlvblRp
bWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uKQogICAgICwgbV9waXhlbEJ1ZmZlcihXVEZNb3ZlKHBp
eGVsQnVmZmVyKSkKIHsKQEAgLTg5LDcgKzg5LDcgQEAgV2ViQ29yZTo6RmxvYXRTaXplIFZpZGVv
RnJhbWVDVjo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX3BpeGVsQnVmZmVyLmdldCgpKSksIHN0
YXRpY19jYXN0PGZsb2F0PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fcGl4ZWxCdWZmZXIuZ2V0
KCkpKSB9OwogfQogCi11aW50MzJfdCBWaWRlb0ZyYW1lQ1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBj
b25zdAordWludDMyX3QgVmlkZW9GcmFtZUNWOjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUobV9waXhlbEJ1ZmZlci5nZXQo
KSk7CiB9CkBAIC0xMDIsMjMgKzEwMiwxOCBAQCB2b2lkIFZpZGVvRnJhbWVDVjo6c2V0T3duZXJz
aGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogICAgIHNl
dE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihidWZmZXIsIHJlc291cmNlT3duZXIp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmFzVmlk
ZW9GcmFtZUNWKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQogSW1hZ2VPcmllbnRhdGlvbiBW
aWRlb0ZyYW1lQ1Y6Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICAvLyBTYW1wbGUgdHJhbnNm
b3JtIGZpcnN0IGZsaXBzIHgtY29vcmRpbmF0ZXMsIHRoZW4gcm90YXRlcy4KLSAgICBzd2l0Y2gg
KG1fcm90YXRpb24pIHsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
OgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2lu
VG9wUmlnaHQgOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OwotICAgIGNhc2UgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4gbV9pc01pcnJv
cmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5SaWdodFRvcDsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpVcHNpZGVEb3duOgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJp
Z2h0OwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6Ci0gICAgICAg
IHJldHVybiBtX2lzTWlycm9yZWQgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDog
SW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbTsKKyAgICBzd2l0Y2ggKHJvdGF0aW9u
KCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wUmlnaHQgOiBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRp
b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlv
bjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDsK
KyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IElt
YWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6
Um90YXRpb246OkxlZnQ6CisgICAgICAgIHJldHVybiBpc01pcnJvcmVkKCkgPyBJbWFnZU9yaWVu
dGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDogSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRv
bTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcAppbmRleCBl
OTU1ZTA0MmY4NWY5YzNjMTZmYjJkYTgzYjkzNWI3N2Q5Mzk0NTRmLi5iOWQzOGYwNDc0OGRkMTNi
M2Q0ZmQyZTMyNjcwODYzNTg1N2YyNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFt
ZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFZp
ZGVvRnJhbWVHU3RyZWFtZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1
ZmZlcihQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRh
dGlvblRpbWUsIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSwgZG91YmxlIGZyYW1lUmF0
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIHN0ZDo6
b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0YSkKK1JlZjxWaWRlb0Zy
YW1lR1N0cmVhbWVyPiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlciwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25U
aW1lLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUsIGRvdWJsZSBmcmFtZVJhdGUsIFJv
dGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxW
aWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogewogICAgIGVuc3VyZUdTdHJlYW1l
ckluaXRpYWxpemVkKCk7CiAKQEAgLTg1LDcgKzg1LDcgQEAgUmVmPFZpZGVvRnJhbWVHU3RyZWFt
ZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZl
ciYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lR1N0cmVhbWVyKFdURk1vdmUo
c2FtcGxlKSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBwcmVzZW50YXRpb25UaW1lLCB2aWRl
b1JvdGF0aW9uLCB2aWRlb01pcnJvcmVkLCBXVEZNb3ZlKG1ldGFkYXRhKSkpOwogfQogCi1WaWRl
b0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYm
IHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRp
bWUmIHByZXNlbnRhdGlvblRpbWUsIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiwgYm9vbCB2
aWRlb01pcnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0
YWRhdGEpCitWaWRlb0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBj
b25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24s
IGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
PiYmIG1ldGFkYXRhKQogICAgIDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCB2aWRlb01p
cnJvcmVkLCB2aWRlb1JvdGF0aW9uKQogICAgICwgbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQog
ICAgICwgbV9wcmVzZW50YXRpb25TaXplKHByZXNlbnRhdGlvblNpemUpCkBAIC05OCw3ICs5OCw3
IEBAIFZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoR1JlZlB0cjxHc3RT
YW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hCiAgICAgICAgIGJ1ZmZlciA9IHdlYmtpdEdzdEJ1
ZmZlclNldFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEoYnVmZmVyLCBXVEZNb3ZlKG1ldGFkYXRhKSk7
CiB9CiAKLVZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1Jl
ZlB0cjxHc3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGlt
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQorVmlkZW9GcmFtZUdTdHJlYW1lcjo6Vmlk
ZW9GcmFtZUdTdHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNhbXBsZSwgY29uc3Qg
TWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBSb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQogICAg
IDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBmYWxzZSwgdmlkZW9Sb3RhdGlvbikKICAg
ICAsIG1fc2FtcGxlKHNhbXBsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCmlu
ZGV4IDExYmY5MDJjMDBjMWE5MzIxM2E1OTA1Yjc4ZjI4OWI3M2Y4MTQ2MTMuLjFjODBjMjJlMDI2
NjU5NjZkMTdiOThhODZjMTI1MjZlMTZmYjkwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3Ry
ZWFtZXIuaApAQCAtMzAsMjYgKzMwLDI3IEBAIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBW
aWRlb0ZyYW1lR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0U2Ft
cGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBN
ZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIFZp
ZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlk
ZW9NaXJyb3JlZCA9IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+
JiYgbWV0YWRhdGEgPSBzdGQ6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hdFNp
emUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSA9
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFJvdGF0
aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUdTdHJlYW1lcihXVEZNb3ZlKHNh
bXBsZSksIHByZXNlbnRhdGlvblNpemUsIHByZXNlbnRhdGlvblRpbWUsIHZpZGVvUm90YXRpb24s
IHZpZGVvTWlycm9yZWQsIFdURk1vdmUobWV0YWRhdGEpKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0IEdSZWZQ
dHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUs
IFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpCisgICAg
c3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlv
blRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVHU3RyZWFtZXIoc2FtcGxlLCBw
cmVzZW50YXRpb25UaW1lLCB2aWRlb1JvdGF0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJl
ZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXIm
JiwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFt
ZVJhdGUgPSAxLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpO
b25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgUmVm
PFZpZGVvRnJhbWVHU3RyZWFtZXI+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYm
LCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCksIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSA9IHsgfSwgZG91YmxlIGZyYW1l
UmF0ZSA9IDEsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSwgYm9vbCB2
aWRlb01pcnJvcmVkID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0
YT4mJiBtZXRhZGF0YSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBHc3RTYW1wbGUqIHNhbXBsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9G
cmFtZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiwgY29uc3QgRmxvYXRTaXplJiBwcmVz
ZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCksIFZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBi
b29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKLSAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpOworICAgIFZpZGVvRnJhbWVHU3Ry
ZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9u
U2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQg
PSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmID0gc3RkOjpu
dWxsb3B0KTsKKyAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxl
PiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gPSBSb3RhdGlv
bjo6Tm9uZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3Qg
cGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAKICAgICBHUmVmUHRyPEdz
dFNhbXBsZT4gbV9zYW1wbGU7CiAgICAgRmxvYXRTaXplIG1fcHJlc2VudGF0aW9uU2l6ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAwMzgxODlmNzQ3ZGZiYjI4Zjg3NWY3ZTY3ZjViYzFm
YTMxNTg2Y2ZjLi44ZTc5ZjRiZWE4MzQwZGJkNjcxMWRkYzI4ZTJhNzA4ZWI5YTg2MjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6CiAg
ICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlKCk7CiAKQEAgLTExNiwxMiArMTE2LDEyIEBAIGlubGlu
ZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZXRBdWRpb1NvdXJjZShSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4mJiBhCiBpbmxpbmUgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2V0
VmlkZW9Tb3VyY2UoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgdmlkZW9Tb3VyY2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5yZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV92aWRlb1NvdXJjZSA9IFdURk1vdmUo
dmlkZW9Tb3VyY2UpOwogCiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9T
b3VyY2UtPmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291
cmNlLT5hZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiBpbmxpbmUgTWVkaWFSZWNv
cmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCkBAIC0xMzIsNyArMTMyLDcgQEAg
aW5saW5lIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp+TWVkaWFSZWNvcmRlclByaXZhdGUoKQogICAg
IGlmIChtX2F1ZGlvU291cmNlKQogICAgICAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVBdWRpb1Nh
bXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICBpZiAobV92aWRlb1NvdXJjZSkKLSAgICAgICAgbV92
aWRlb1NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1f
dmlkZW9Tb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNw
cAppbmRleCAxYzBkM2U1M2M2MWMyZjE2OGZhNWRjZmVmZTNkYTJjMzYzZDI5MmJkLi5hNzRlYmRk
OTM2YTQ1NTIzMTQxNjQ4MTVkMWQ5ODc4MTZkZWQ0NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC04MywxOSArODMsMTkgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2sm
JiBjYWxsYmEKICAgICBjYWxsYmFjayhTdHJpbmcobV93cml0ZXItPm1pbWVUeXBlKCkpLCBtX3dy
aXRlci0+YXVkaW9CaXRSYXRlKCksIG1fd3JpdGVyLT52aWRlb0JpdFJhdGUoKSk7CiB9CiAKLXZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVv
KCkpIHsKICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUpIHsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgICAgICBtX2JsYWNrRnJhbWUg
PSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUu
dmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBjcmVhdGVCbGFja1BpeGVs
QnVmZmVyKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgYXV0byBz
aXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBtX2JsYWNr
RnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRpbWUo
KSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgY3JlYXRl
QmxhY2tQaXhlbEJ1ZmZlcihzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAg
fQogICAgICAgICBtX3dyaXRlci0+YXBwZW5kVmlkZW9GcmFtZSgqbV9ibGFja0ZyYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fYmxhY2tGcmFtZSA9IG51bGxwdHI7Ci0gICAg
bV93cml0ZXItPmFwcGVuZFZpZGVvRnJhbWUoVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlLnBy
ZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxlLnZpZGVvUm90
YXRpb24oKSwgc2FtcGxlLnBpeGVsQnVmZmVyKCkpKTsKKyAgICBtX3dyaXRlci0+YXBwZW5kVmlk
ZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGwuaAppbmRleCA5NTdmNWQwODc3OWZhOWMzOTI3N2U5MTU5M2M1NjM5NjhjZDc4
ODI2Li4xMjg5NzM1OWNkYmQ3MDgxZTU5YzkxZDhlZGJmMGI1YzA1ZDU4MTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyPiYmKTsKIAogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCi0gICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0
YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
TW9jay5jcHAKaW5kZXggMDYxNzZjNzQwMDFlZmRmNmY0NTkxZjY4ZDJlMDBlMTBhN2NjMGY4YS4u
N2Y2ZGIzYzdiMDczN2ZhZjBjZWI5YWE2OWU4ZDBkZTM4ZGQwYjZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1v
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlTW9jazo6cmVzdW1lUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVNb2NrOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlkZW9GcmFt
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAgbV9idWZmZXIuYXBwZW5kKCJWaWRl
byBUcmFjayBJRDogIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaAppbmRleCA3Mjk2
NDYyNTUzNmM2ZjEyMDkyMDMwODJmZjNlMGI2YTdhMzc3MjdhLi5mOTM1OTBhODA4Njc1ZmQ4MzNk
ZDI0NGEyOGYzN2I1NWYwNTg4MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZp
ZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJs
ZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBm
ZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBj
b25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0
b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggYWRj
ZTQ4MzAyZjVkYTlmNzMwNWY5ZGYyZjRiYmIwOGMwY2QxZWRmMC4uZmFhYzZjOTg4Y2U2YTM3MWVm
MjUzZWE4ZmI5Zjk1ZWU2MWQ5M2I0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKIAogICAgIFJldGFp
blB0cjxXZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7Ci0gICAgRGVx
dWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1
ZTsKKyAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3BlbmRpbmdWaWRl
b0ZyYW1lUXVldWU7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9w
ZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZTsKIAogICAgIGJvb2wgbV9pc0ZsdXNoaW5nU2FtcGxlcyB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EubW0KaW5kZXggMzE2NmU4MTQ2MjllOTA0OGUxMGQ0Yzg5MGI4OWEyYTdlNjIwYzI1
My4uMDI0ZjA5ZGZlN2NlOWY5ZmYxOWMyZTgwYTAwNWEwMDhmN2E1OWI0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTMy
LDcgKzEzMiw3IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpCiBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKIHsKICAgICBtX3BlbmRpbmdB
dWRpb1NhbXBsZVF1ZXVlLmNsZWFyKCk7Ci0gICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5j
bGVhcigpOworICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAgIGlmICht
X3dyaXRlcikgewogICAgICAgICBbbV93cml0ZXIgY2FuY2VsV3JpdGluZ107CiAgICAgICAgIG1f
d3JpdGVyLmNsZWFyKCk7CkBAIC0yODMsMTUgKzI4MywxNSBAQCBib29sIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJJZlBvc3NpYmxl
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1faXNGbHVzaGluZ1NhbXBsZXMp
IHsKLSAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB3aGlsZSAoIW1fcGVu
ZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpICYmIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1
dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAgICAgIGFwcGVuZENvbXByZXNzZWRWaWRl
b1NhbXBsZUJ1ZmZlcihtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgp
KTsKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkgJiYgW21f
dmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAg
YXBwZW5kQ29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1
ZS50YWtlRmlyc3QoKS5nZXQoKSk7CiAKICAgICBpZiAoIVttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1
dCBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1w
bGVRdWV1ZS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9G
cmFtZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kRW5k
c1ByZXZpb3VzU2FtcGxlRHVyYXRpb25NYXJrZXIoQVZBc3NldFdyaXRlcklucHV0ICphcwogdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVy
cyhGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgYm9vbCBoYXNQZW5kaW5nQXVk
aW9TYW1wbGVzID0gIW1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuaXNFbXB0eSgpOwotICAgIGJv
b2wgaGFzUGVuZGluZ1ZpZGVvU2FtcGxlcyA9ICFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlz
RW1wdHkoKTsKKyAgICBib29sIGhhc1BlbmRpbmdWaWRlb1NhbXBsZXMgPSAhbV9wZW5kaW5nVmlk
ZW9GcmFtZVF1ZXVlLmlzRW1wdHkoKTsKIAogICAgIGlmIChtX2hhc0VuY29kZWRWaWRlb1NhbXBs
ZXMpIHsKICAgICAgICAgaGFzUGVuZGluZ1ZpZGVvU2FtcGxlcyB8PSAhW21fdmlkZW9Bc3NldFdy
aXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXTsKQEAgLTM0OSw3ICszNDksNyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZm
ZXJzKEZ1bmN0aW9uPHZvaWQoKT4mJgogCiAgICAgQVNTRVJUKCFtX2lzRmx1c2hpbmdTYW1wbGVz
KTsKICAgICBtX2lzRmx1c2hpbmdTYW1wbGVzID0gdHJ1ZTsKLSAgICBhdXRvIGJsb2NrID0gbWFr
ZUJsb2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBoYXNQZW5kaW5n
QXVkaW9TYW1wbGVzLCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzLCBhdWRpb1NhbXBsZVF1ZXVlID0g
V1RGTW92ZShtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlKSwgdmlkZW9TYW1wbGVRdWV1ZSA9IFdU
Rk1vdmUobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBibG9jayA9IG1ha2VCbG9ja1B0cihbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFzUGVuZGluZ0F1ZGlvU2FtcGxlcywgaGFz
UGVuZGluZ1ZpZGVvU2FtcGxlcywgYXVkaW9TYW1wbGVRdWV1ZSA9IFdURk1vdmUobV9wZW5kaW5n
QXVkaW9TYW1wbGVRdWV1ZSksIHZpZGVvU2FtcGxlUXVldWUgPSBXVEZNb3ZlKG1fcGVuZGluZ1Zp
ZGVvRnJhbWVRdWV1ZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zODYsOSArMzg2LDkgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6YXBwZW5kVmlkZW9GcmFtZShWaWRlb0ZyYW1lJiBmcmFtZSkKICAgICBpZiAo
IW1fZmlyc3RWaWRlb0ZyYW1lKSB7CiAgICAgICAgIG1fZmlyc3RWaWRlb0ZyYW1lID0gdHJ1ZTsK
ICAgICAgICAgbV9yZXN1bWVkVmlkZW9UaW1lID0gUEFMOjpDTUNsb2NrR2V0VGltZShQQUw6OkNN
Q2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpOwotICAgICAgICBpZiAoZnJhbWUudmlkZW9Sb3RhdGlv
bigpICE9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIHx8IGZyYW1lLnZpZGVvTWly
cm9yZWQoKSkgewotICAgICAgICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNm
b3JtTWFrZVJvdGF0aW9uKHN0YXRpY19jYXN0PGludD4oZnJhbWUudmlkZW9Sb3RhdGlvbigpKSAq
IE1fUEkgLyAxODApOwotICAgICAgICAgICAgaWYgKGZyYW1lLnZpZGVvTWlycm9yZWQoKSkKKyAg
ICAgICAgaWYgKGZyYW1lLnJvdGF0aW9uKCkgIT0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUg
fHwgZnJhbWUuaXNNaXJyb3JlZCgpKSB7CisgICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGljX2Nhc3Q8aW50PihmcmFtZS5yb3Rh
dGlvbigpKSAqIE1fUEkgLyAxODApOworICAgICAgICAgICAgaWYgKGZyYW1lLmlzTWlycm9yZWQo
KSkKICAgICAgICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1T
Y2FsZSgqbV92aWRlb1RyYW5zZm9ybSwgLTEsIDEpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmNwcAppbmRleCA0YTk1Nzk4NzJhNzcxNWU1NDA0Mzk1ZDA1NzRkYzRkZDcxZWZi
MjM5Li42ZmEzYjFlMDFkNDg4OTRjNWE1NDc1N2Y1ZDEwNjdkZmVlNGE1MTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmNwcApAQCAtNzUsMTggKzc1LDE4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6cmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZlcihBdWRpb1NhbXBsZU9ic2VydmVyJiBvYnNlcnZl
CiAgICAgbV9hdWRpb1NhbXBsZU9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2FtcGxl
T2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRWaWRlb0Zy
YW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxlT2JzZXJ2
ZXJzTG9jayB9OwotICAgIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMuYWRkKCZvYnNlcnZlcik7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fVmlkZW9GcmFtZU9ic2VydmVyc0xvY2sgfTsKKyAgICBtX1Zp
ZGVvRnJhbWVPYnNlcnZlcnMuYWRkKCZvYnNlcnZlcik7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcihWaWRlb1NhbXBsZU9ic2VydmVyJiBv
YnNlcnZlcikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlVmlkZW9GcmFtZU9ic2Vy
dmVyKFZpZGVvRnJhbWVPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBMb2NrZXIgbG9ja2VyIHsgbV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2sg
fTsKLSAgICBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX1ZpZGVvRnJhbWVPYnNlcnZlcnNMb2NrIH07CisgICAgbV9WaWRlb0Zy
YW1lT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmFkZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKQEAgLTE5Miw3ICsxOTIsNyBA
QCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnVwZGF0ZUhhc1N0YXJ0ZWRQcm9kdWNpbmdEYXRh
KCkKICAgICB9KTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2
YWlsYWJsZShNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEg
bWV0YWRhdGEpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvRnJhbWVBdmFpbGFibGUo
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkK
IHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICArK21fZnJhbWVDb3VudDsKQEAgLTIx
MCw5ICsyMTAsOSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSwgVmlkZW9GcgogCiAgICAgdXBkYXRlSGFzU3Rh
cnRlZFByb2R1Y2luZ0RhdGEoKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxl
T2JzZXJ2ZXJzTG9jayB9OwotICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX3ZpZGVvU2FtcGxl
T2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+dmlkZW9TYW1wbGVBdmFpbGFibGUobWVkaWFT
YW1wbGUsIG1ldGFkYXRhKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9WaWRlb0ZyYW1lT2JzZXJ2
ZXJzTG9jayB9OworICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX1ZpZGVvRnJhbWVPYnNlcnZl
cnMpCisgICAgICAgIG9ic2VydmVyLT52aWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUsIG1l
dGFkYXRhKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFp
bGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVk
aW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90
IG51bWJlck9mRnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDczNDgzNTJiZTI1MTkzNThi
NTQ2ZGU2OGQwYzNiODkyYTlmNDRlNGUuLjFhODk5OGRlM2I3OWVjNDA2Yzk2YWQwYTNmNDkzNjMy
ZTc3ODM4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTM4LDEwICszOCwxMCBAQAogI2luY2x1
ZGUgIkNhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk1lZGlh
Q29uc3RyYWludHMuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUZhY3RvcnkuaCIKKyNpbmNsdWRlICJWaWRl
b0ZyYW1lLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oIgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC05OCwx
MiArOTgsMTIgQEAgcHVibGljOgogICAgICAgICAvLyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dy
b3VuZCB0aHJlYWQuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUo
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90IC8qbnVtYmVyT2ZGcmFtZXMqLykgPSAwOwogICAgIH07
Ci0gICAgY2xhc3MgVmlkZW9TYW1wbGVPYnNlcnZlciB7CisgICAgY2xhc3MgVmlkZW9GcmFtZU9i
c2VydmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgflZpZGVvU2FtcGxlT2JzZXJ2
ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgflZpZGVvRnJhbWVPYnNlcnZlcigpID0g
ZGVmYXVsdDsKIAogICAgICAgICAvLyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJl
YWQuCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBs
ZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZp
ZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpID0g
MDsKICAgICB9OwogCiAgICAgdmlydHVhbCB+UmVhbHRpbWVNZWRpYVNvdXJjZSgpID0gZGVmYXVs
dDsKQEAgLTE0Nyw4ICsxNDcsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBdWRpb1NhbXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2JzZXJ2ZXImKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlbW92ZUF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZl
ciYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaWRlb1NhbXBsZU9ic2VydmVyKFZp
ZGVvU2FtcGxlT2JzZXJ2ZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVZpZGVv
U2FtcGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWRkVmlkZW9GcmFtZU9ic2VydmVyKFZpZGVvRnJhbWVPYnNlcnZlciYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKFZpZGVvRnJhbWVPYnNl
cnZlciYpOwogCiAgICAgY29uc3QgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
aXplKGNvbnN0IEludFNpemUmKTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBpbml0aWFsaXplU2FtcGxlUmF0ZShpbnQgc2FtcGxlUmF0ZSkgeyBtX3NhbXBsZVJhdGUg
PSBzYW1wbGVSYXRlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplRWNob0NhbmNlbGxhdGlvbihib29s
IGVjaG9DYW5jZWxsYXRpb24pIHsgbV9lY2hvQ2FuY2VsbGF0aW9uID0gZWNob0NhbmNlbGxhdGlv
bjsgfQogCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0Zy
YW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFp
bGFibGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKIAogICAgIHZvaWQgZm9yRWFjaE9ic2Vy
dmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4mKTsKQEAgLTI4OSw4ICsyODksOCBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgTG9jayBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jazsK
ICAgICBIYXNoU2V0PEF1ZGlvU2FtcGxlT2JzZXJ2ZXIqPiBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJz
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9hdWRpb1NhbXBsZU9ic2VydmVyc0xvY2spOwogCi0gICAg
bXV0YWJsZSBMb2NrIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrOwotICAgIEhhc2hTZXQ8Vmlk
ZW9TYW1wbGVPYnNlcnZlcio+IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMgV1RGX0dVQVJERURfQllf
TE9DSyhtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgbXV0YWJsZSBMb2NrIG1fVmlk
ZW9GcmFtZU9ic2VydmVyc0xvY2s7CisgICAgSGFzaFNldDxWaWRlb0ZyYW1lT2JzZXJ2ZXIqPiBt
X1ZpZGVvRnJhbWVPYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX1ZpZGVvRnJhbWVPYnNl
cnZlcnNMb2NrKTsKIAogICAgIC8vIFNldCBvbiB0aGUgbWFpbiB0aHJlYWQgZnJvbSBjb25zdHJh
aW50cy4KICAgICBJbnRTaXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2UuY3BwCmluZGV4IDlhNzEwNTVkODZiM2UxMDlmZjI5MTc4NzJjZmJiMGIyNDg0Y2RiZmEuLjI3
MzZhNDNlNzZlOTk1ZGVkODYwMGI3NDFkODU3ZDA4ZWU5OWExYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFJlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZTo6b2JzZXJ2ZVNvdXJjZSgpCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTo6dW5vYnNlcnZlU291cmNlKCkKIHsKICAgICBtX3ZpZGVvU291cmNlLT5yZW1v
dmVPYnNlcnZlcigqdGhpcyk7Ci0gICAgbV92aWRlb1NvdXJjZS0+c291cmNlKCkucmVtb3ZlVmlk
ZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgbV92aWRlb1NvdXJjZS0+c291cmNlKCkucmVt
b3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OnNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3
U291cmNlKQpAQCAtMTE0LDEzICsxMTQsMTMgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2U6OnN0b3AoKQogdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnVwZGF0ZUJs
YWNrRnJhbWVzU2VuZGluZygpCiB7CiAgICAgaWYgKCFtX211dGVkICYmIG1fZW5hYmxlZCkgewot
ICAgICAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0
aGlzKTsKKyAgICAgICAgbV92aWRlb1NvdXJjZS0+c291cmNlKCkuYWRkVmlkZW9GcmFtZU9ic2Vy
dmVyKCp0aGlzKTsKICAgICAgICAgaWYgKG1fYmxhY2tGcmFtZVRpbWVyLmlzQWN0aXZlKCkpCiAg
ICAgICAgICAgICBtX2JsYWNrRnJhbWVUaW1lci5zdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2Vy
dmVyKCp0aGlzKTsKKyAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1l
T2JzZXJ2ZXIoKnRoaXMpOwogICAgIHNlbmRCbGFja0ZyYW1lc0lmTmVlZGVkKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKaW5kZXggYjJhYzE2OTAwYTNiNTZiZjc2YTBh
NWMxMjBmOGRkMjFmYjdjOTZlOC4uMzBlMmY5MzdiMjRhNTRjNTQ2N2I0ODI5NWJkYzBiZjlhNGIw
MDgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKQEAgLTUwLDcgKzUwLDcg
QEAgY2xhc3MgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlCiAgICAgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLCBXVEY6OkRlc3RydWN0
aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHVibGljIHdlYnJ0Yzo6VmlkZW9UcmFja1NvdXJjZUlu
dGVyZmFjZQogICAgICwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIK
LSAgICAsIHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgor
ICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5k
aWYKQEAgLTEzNCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tTZXR0aW5nc0No
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IGluaXRpYWxpemVGcm9tU291
cmNlKCk7IH0KICAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBm
aW5hbCB7IH0KIAotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2
ZXIgQVBJCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpIG92ZXJyaWRlIHsgfQorICAgIC8vIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvRnJhbWVPYnNlcnZlciBBUEkKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUo
VmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIG92ZXJyaWRlIHsgfQogCiAgICAg
UmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3ZpZGVvU291cmNlOwogICAgIFRpbWVyIG1f
YmxhY2tGcmFtZVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4
IDU3OTlkMDAzODkxMjVlNGNmYmI5YmU5Y2EzYWEwNWRjYTFmNWZjMzcuLmVkN2Q1NjRhOTk4MWFh
MDZiMTZkZGZiY2ExMTQ4NzExY2Q3OTdlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKQEAgLTM2NSw5ICszNjUsOSBAQCB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlOjpzZXRTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgcwogICAg
IHNldEZyYW1lUmF0ZShtYXRjaC0+cmVxdWVzdGVkRnJhbWVSYXRlKTsKIH0KIAotdm9pZCBSZWFs
dGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKE1l
ZGlhU2FtcGxlJiBzYW1wbGUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRh
dGEpCit2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwYXRjaFZpZGVvRnJhbWVU
b09ic2VydmVycyhWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGlt
ZU1ldGFkYXRhIG1ldGFkYXRhKQogewotICAgIE1lZGlhVGltZSBzYW1wbGVUaW1lID0gc2FtcGxl
LnByZXNlbnRhdGlvblRpbWUoKTsKKyAgICBNZWRpYVRpbWUgc2FtcGxlVGltZSA9IHZpZGVvRnJh
bWUucHJlc2VudGF0aW9uVGltZSgpOwogCiAgICAgYXV0byBmcmFtZVRpbWUgPSBzYW1wbGVUaW1l
LnRvRG91YmxlKCk7CiAgICAgbV9vYnNlcnZlZEZyYW1lVGltZVN0YW1wcy5hcHBlbmQoZnJhbWVU
aW1lKTsKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
OjpkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmIHNhbQogICAgIGlm
IChpbnRlcnZhbCA+IDEpCiAgICAgICAgIG1fb2JzZXJ2ZWRGcmFtZVJhdGUgPSAobV9vYnNlcnZl
ZEZyYW1lVGltZVN0YW1wcy5zaXplKCkgLyBpbnRlcnZhbCk7CiAKLSAgICB2aWRlb1NhbXBsZUF2
YWlsYWJsZShzYW1wbGUsIG1ldGFkYXRhKTsKKyAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVv
RnJhbWUsIG1ldGFkYXRhKTsKIH0KIAogdm9pZCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6
Y2xpZW50VXBkYXRlZFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBz
dGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggNGUwOWFlMjFmNDU4M2FiZjQ3
MzI2Nzg5Y2ZiZjJiMjdlYzM5ZDk2Mi4uMGJkYzBkNTY0NDE3MDNmZmM4Mzg3MDc5NGI3NTYyMzAy
OGI1N2U5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC0yOCw3ICsyOCw2
IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
Ci0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNl
LmgiCiAjaW5jbHVkZSAiVmlkZW9QcmVzZXQuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAt
NDYsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0
ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRl
UHJlc2V0cygpID0gMDsKLSAgICB2aXJ0dWFsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHNh
bXBsZVJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
Ok5vbmU7IH0KKyAgICB2aXJ0dWFsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHZpZGVvRnJhbWVSb3Rh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOyB9CiAKICAg
ICBkb3VibGUgb2JzZXJ2ZWRGcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkRnJh
bWVSYXRlOyB9CiAgICAgVmVjdG9yPFZpZGVvUHJlc2V0RGF0YT4gcHJlc2V0c0RhdGEoKTsKQEAg
LTczLDcgKzcyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCB1cGRhdGVDYXBhYmlsaXRpZXMo
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpOwogCi0gICAgdm9pZCBkaXNwYXRjaE1l
ZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGlt
ZU1ldGFkYXRhKTsKKyAgICB2b2lkIGRpc3BhdGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFZpZGVv
RnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKIAogICAgIHN0YXRpYyBTcGFuPGNvbnN0
IEludFNpemU+IHN0YW5kYXJkVmlkZW9TaXplcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IGEyMzVkNDIzZjI5MTA0YzU5NDkyODU0ZjBmNzU3YWYwN2Y5MjRhMjguLmY5ZTg0ZjdiNTc0
MDg4ZjBjZGY2OWE1Zjk1NDg0ODYwN2Q3YmE0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBA
IC01MSw3ICs1MSw3IEBAIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OlJlYWx0aW1lVmlkZW9Tb3VyY2Uo
UmVmPFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlPiYmIHNvdXJjCiAKIFJlYWx0aW1lVmlkZW9T
b3VyY2U6On5SZWFsdGltZVZpZGVvU291cmNlKCkKIHsKLSAgICBtX3NvdXJjZS0+cmVtb3ZlVmlk
ZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVP
YnNlcnZlcigqdGhpcyk7CiAgICAgbV9zb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIH0K
IApAQCAtNjksMTggKzY5LDE4IEBAIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6d2hlblJlYWR5
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjYWxsYmFjaykKIHZvaWQgUmVhbHRp
bWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKICAgICBtX3NvdXJjZS0+c3Rh
cnQoKTsKLSAgICBtX3NvdXJjZS0+YWRkVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAg
bV9zb3VyY2UtPmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgUmVhbHRp
bWVWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIG1fc291cmNlLT5yZW1v
dmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9G
cmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+c3RvcCgpOwogfQogCiB2b2lkIFJl
YWx0aW1lVmlkZW9Tb3VyY2U6OmVuZFByb2R1Y2luZ0RhdGEoKQogewotICAgIG1fc291cmNlLT5y
ZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlk
ZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+cmVxdWVzdFRvRW5kKCp0aGlz
KTsKIH0KIApAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpz
b3VyY2VNdXRlZENoYW5nZWQoKQogCiB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVNl
dHRpbmdzQ2hhbmdlZCgpCiB7Ci0gICAgYXV0byByb3RhdGlvbiA9IG1fc291cmNlLT5zYW1wbGVS
b3RhdGlvbigpOworICAgIGF1dG8gcm90YXRpb24gPSBtX3NvdXJjZS0+dmlkZW9GcmFtZVJvdGF0
aW9uKCk7CiAgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIGlmIChzaXplLmlzRW1w
dHkoKSkKICAgICAgICAgc2l6ZSA9IG1fc291cmNlLT5zaXplKCk7CiAKLSAgICBpZiAocm90YXRp
b24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQgfHwgcm90YXRpb24gPT0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIGlmIChyb3RhdGlvbiA9PSBWaWRl
b0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCB8fCByb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6UmlnaHQpCiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKICAgICBt
X2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aChzaXplLndpZHRoKCkpOwpAQCAtMTcyLDEwICsxNzIs
MTAgQEAgdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzb3VyY2VTdG9wcGVkKCkKIH0KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNl
OjphZGFwdFZpZGVvRnJhbWUoTWVkaWFTYW1wbGUmIHZpZGVvRnJhbWUpCitSZWZQdHI8VmlkZW9G
cmFtZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6YWRhcHRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUpCiB7Ci0gICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uIHx8IG1faW1hZ2VU
cmFuc2ZlclNlc3Npb24tPnBpeGVsRm9ybWF0KCkgIT0gdmlkZW9GcmFtZS52aWRlb1BpeGVsRm9y
bWF0KCkpCi0gICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGUodmlkZW9GcmFtZS52aWRlb1BpeGVsRm9ybWF0KCksIG1fc2hvdWxkVXNl
SU9TdXJmYWNlKTsKKyAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRy
YW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSB2aWRlb0ZyYW1lLnBpeGVsRm9ybWF0KCkp
CisgICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpjcmVhdGUodmlkZW9GcmFtZS5waXhlbEZvcm1hdCgpLCBtX3Nob3VsZFVzZUlPU3VyZmFjZSk7
CiAKICAgICBBU1NFUlQobV9pbWFnZVRyYW5zZmVyU2Vzc2lvbik7CiAgICAgaWYgKCFtX2ltYWdl
VHJhbnNmZXJTZXNzaW9uKQpAQCAtMTg4LDcgKzE4OCw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4g
UmVhbHRpbWVWaWRlb1NvdXJjZTo6YWRhcHRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJiB2aWRlb0Zy
YW1lCiB9CiAjZW5kaWYKIAotdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb1NhbXBsZUF2
YWlsYWJsZShNZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBt
ZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZShW
aWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQog
ewogICAgIGlmIChtX2ZyYW1lRGVjaW1hdGlvbiA+IDEgJiYgKyttX2ZyYW1lRGVjaW1hdGlvbkNv
dW50ZXIgJSBtX2ZyYW1lRGVjaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyLDEzICsy
MDIsMTMgQEAgdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShN
ZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmEKICAgICBhdXRvIHNpemUgPSB0aGlzLT5z
aXplKCk7CiAgICAgaWYgKCFzaXplLmlzRW1wdHkoKSAmJiBzaXplICE9IGV4cGFuZGVkSW50U2l6
ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKSkpIHsKICAgICAgICAgaWYgKGF1dG8gbmV3
VmlkZW9GcmFtZSA9IGFkYXB0VmlkZW9GcmFtZSh2aWRlb0ZyYW1lKSkgewotICAgICAgICAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoKm5ld1ZpZGVvRnJhbWUs
IG1ldGFkYXRhKTsKKyAgICAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvRnJhbWVB
dmFpbGFibGUoKm5ld1ZpZGVvRnJhbWUsIG1ldGFkYXRhKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOworICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQog
CiBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y2xvbmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVW
aWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVWaWRlb1NvdXJjZS5oCmluZGV4IGE3MTk0OTc4OWU0ZTA1YTkwYTg5ZmMxNDAzYmI4MDg4Y2Zm
YmY4YTguLjY0NmQ1OGEyMjM3Y2FjNjVjOTBlZDI2NDI4MDMxMmU3OTJmYmVmOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZp
ZGVvU291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VDsKIGNsYXNzIFJlYWx0aW1lVmlkZW9Tb3VyY2UgZmluYWwKICAgICA6IHB1YmxpYyBSZWFsdGlt
ZU1lZGlhU291cmNlCiAgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIK
LSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIHsK
KyAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVWaWRlb1NvdXJjZT4gY3JlYXRlKFJlZjxS
ZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZT4mJiBzb3VyY2UsIGJvb2wgc2hvdWxkVXNlSU9TdXJm
YWNlID0gdHJ1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZVZpZGVvU291cmNlKFdU
Rk1vdmUoc291cmNlKSwgc2hvdWxkVXNlSU9TdXJmYWNlKSk7IH0KIApAQCAtNzEsMTEgKzcxLDEx
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3VyY2VTdG9wcGVkKCkgZmluYWw7CiAgICAgYm9vbCBw
cmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgZmluYWw7CiAKLSAgICAvLyBSZWFsdGltZU1lZGlh
U291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIC8vIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlkZW9GcmFt
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGFkYXB0VmlkZW9G
cmFtZShNZWRpYVNhbXBsZSYpOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiBhZGFwdFZpZGVvRnJh
bWUoVmlkZW9GcmFtZSYpOwogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCmlu
ZGV4IGY4MGNjZWVkZGE3NjBmZWZiN2U3ZmYzOWEwYzljZDc3YThiMGE4ZmMuLjZjZDI5MDczYmYw
MWNlMmY0NWNjMjE5NTFiYmE1NjZkNTU3NzFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaApAQCAtMjgsNyArMjgsNiBAQAogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1
ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29j
b2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKaW5kZXggNmVlOTRhMGZhNGJmN2QwZGQ1
ZGM0ODhiODAwZDFlYTBhNTNhZGQxMi4uNDAzMDRhYmU2OTA2Y2IxZjM0YzcwYWQyYzYwZDQwOGY2
YmI3Yjk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAK
QEAgLTI5MywzNSArMjkzLDM1IEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1p
dEZyYW1lKCkKICAgICAgICAgdXBkYXRlRnJhbWVTaXplKCk7CiAgICAgfQogCi0gICAgYXV0byBz
YW1wbGUgPSBXVEY6OnN3aXRjaE9uKGZyYW1lLAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0o
UmV0YWluUHRyPElPU3VyZmFjZVJlZj4mIHN1cmZhY2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4g
eworICAgIGF1dG8gdmlkZW9GcmFtZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCisgICAgICAgIFt0
aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYgc3VyZmFjZSkgLT4gUmVm
UHRyPFZpZGVvRnJhbWU+IHsKICAgICAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2Zl
clNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNp
emUoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRl
VmlkZW9GcmFtZShzdXJmYWNlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwogICAgICAgICB9
LAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiYgaW1hZ2Up
IC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmVm
UHRyPE5hdGl2ZUltYWdlPiYgaW1hZ2UpIC0+IFJlZlB0cjxWaWRlb0ZyYW1lPiB7CiAgICAgICAg
ICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
ICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUo
aW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKGlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAg
IH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJS
ZWY+JiBzYW1wbGUpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywgc2Ft
cGxlVGltZV0oUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiYgc2FtcGxlKSAtPiBSZWZQdHI8
VmlkZW9GcmFtZT4gewogICAgICAgICAgICAgaWYgKCFzYW1wbGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNz
aW9uLT5jcmVhdGVNZWRpYVNhbXBsZShzYW1wbGUuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7
CisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlVmlkZW9G
cmFtZShzYW1wbGUuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAgIH0KICAgICAp
OwogCi0gICAgaWYgKCFzYW1wbGUpIHsKKyAgICBpZiAoIXZpZGVvRnJhbWUpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgIG1ldGFkYXRhLmNhcHR1cmVUaW1lID0g
TW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICB2aWRlb1NhbXBs
ZUF2YWlsYWJsZSgqc2FtcGxlLmdldCgpLCBtZXRhZGF0YSk7CisgICAgdmlkZW9GcmFtZUF2YWls
YWJsZSgqdmlkZW9GcmFtZS5nZXQoKSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIERpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E6OmNhcHR1cmVyQ29uZmlndXJhdGlvbkNoYW5nZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29j
b2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IGI5ZWIwODVkNDc0OTM0YzVlMDUx
YTc1YWIxZGQwM2NjNTRlN2Y4NTIuLjQ0ODYyZDVjOTY0ZmNlZDk2MzJlNjRiNjEzNTc5ZDNlNzA0
OThjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nv
Y29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmgiCiAjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNiwxMCArMzcsMTAgQEAKICNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLQot
dHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSAqQ0dJbWFnZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9fQ1ZC
dWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7Ci10eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9T
dXJmYWNlUmVmOwordXNpbmcgQ0dJbWFnZVJlZiA9IENHSW1hZ2UqOwordXNpbmcgQ1ZQaXhlbEJ1
ZmZlclJlZiA9IHN0cnVjdCBfX0NWQnVmZmVyKjsKK3VzaW5nIElPU3VyZmFjZVJlZiA9IHN0cnVj
dCBfX0lPU3VyZmFjZSo7Cit1c2luZyBDTVNhbXBsZUJ1ZmZlclJlZiA9IHN0cnVjdCBvcGFxdWVD
TVNhbXBsZUJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWVkaWFUaW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXgg
MjQzY2FhYTVjNGNmNzFmZWE4NWQ5MjkyODhjNjkwNzU0YmFmOTQwNC4uOGUxMzJlZTE1ZGI5ODMz
NDNjNGEwNDg0OTg5ODhiNzZhOTk3NTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0TWVkaWFTdHJlYW1TcmNFbnN1cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKFdlYktp
dE1lZGlhU3RyZWFtU3IKIAogY2xhc3MgSW50ZXJuYWxTb3VyY2UgZmluYWwgOiBwdWJsaWMgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyLAogICAgIHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpb1NhbXBsZU9ic2VydmVyLAotICAgIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAgICBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW9GcmFtZU9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBJbnRlcm5hbFNvdXJjZShHc3RFbGVtZW50KiBwYXJlbnQsIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJiB0cmFjaywgY29uc3QgU3RyaW5nJiBwYWROYW1lKQpAQCAtMTgxLDcgKzE4
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fdHJhY2suaGFzQXVkaW8oKSkKICAgICAgICAg
ICAgIG1fdHJhY2suc291cmNlKCkuYWRkQXVkaW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CiAgICAg
ICAgIGVsc2UgaWYgKG1fdHJhY2suaGFzVmlkZW8oKSkKLSAgICAgICAgICAgIG1fdHJhY2suc291
cmNlKCkuYWRkVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3RyYWNr
LnNvdXJjZSgpLmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1faXNPYnNl
cnZpbmcgPSB0cnVlOwogICAgIH0KIApAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKG1fdHJhY2suaGFzQXVkaW8oKSkKICAgICAgICAgICAgIG1fdHJhY2suc291cmNlKCku
cmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIGVsc2UgaWYgKG1fdHJh
Y2suaGFzVmlkZW8oKSkKLSAgICAgICAgICAgIG1fdHJhY2suc291cmNlKCkucmVtb3ZlVmlkZW9T
YW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3RyYWNrLnNvdXJjZSgpLnJlbW92
ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1fdHJhY2sucmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOwogICAgIH0KIApAQCAtMjcyLDEzICsyNzIsMTMgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYg
c2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbAorICAgIHZvaWQgdmlkZW9GcmFt
ZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
KSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKCFtX3BhcmVudCB8fCAhbV9pc09ic2VydmluZykK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHNhbXBsZVNpemUgPSBzYW1wbGUu
cHJlc2VudGF0aW9uU2l6ZSgpOwotICAgICAgICBJbnRTaXplIGNhcHR1cmVTaXplKHNhbXBsZVNp
emUud2lkdGgoKSwgc2FtcGxlU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGF1dG8gdmlkZW9GcmFt
ZVNpemUgPSB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAgSW50U2l6ZSBj
YXB0dXJlU2l6ZSh2aWRlb0ZyYW1lU2l6ZS53aWR0aCgpLCB2aWRlb0ZyYW1lU2l6ZS5oZWlnaHQo
KSk7CiAKICAgICAgICAgYXV0byBzZXR0aW5ncyA9IG1fdHJhY2suc2V0dGluZ3MoKTsKICAgICAg
ICAgbV9jb25maWd1cmVkU2l6ZS5zZXRXaWR0aChzZXR0aW5ncy53aWR0aCgpKTsKQEAgLTI4OSw4
ICsyODksOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9jb25maWd1cmVkU2l6ZS5oZWlnaHQo
KSkKICAgICAgICAgICAgIG1fY29uZmlndXJlZFNpemUuc2V0SGVpZ2h0KGNhcHR1cmVTaXplLmhl
aWdodCgpKTsKIAotICAgICAgICBhdXRvIHZpZGVvUm90YXRpb24gPSBzYW1wbGUudmlkZW9Sb3Rh
dGlvbigpOwotICAgICAgICBib29sIHZpZGVvTWlycm9yZWQgPSBzYW1wbGUudmlkZW9NaXJyb3Jl
ZCgpOworICAgICAgICBhdXRvIHZpZGVvUm90YXRpb24gPSB2aWRlb0ZyYW1lLnJvdGF0aW9uKCk7
CisgICAgICAgIGJvb2wgdmlkZW9NaXJyb3JlZCA9IHZpZGVvRnJhbWUuaXNNaXJyb3JlZCgpOwog
ICAgICAgICBpZiAobV92aWRlb1JvdGF0aW9uICE9IHZpZGVvUm90YXRpb24gfHwgbV92aWRlb01p
cnJvcmVkICE9IHZpZGVvTWlycm9yZWQpIHsKICAgICAgICAgICAgIG1fdmlkZW9Sb3RhdGlvbiA9
IHZpZGVvUm90YXRpb247CiAgICAgICAgICAgICBtX3ZpZGVvTWlycm9yZWQgPSB2aWRlb01pcnJv
cmVkOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdzdF9wYWRfcHVz
aF9ldmVudChwYWQuZ2V0KCksIGdzdF9ldmVudF9uZXdfdGFnKGdzdF90YWdfbGlzdF9uZXcoR1NU
X1RBR19JTUFHRV9PUklFTlRBVElPTiwgb3JpZW50YXRpb24udXRmOCgpLmRhdGEoKSwgbnVsbHB0
cikpKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8qIHZpZGVvRnJhbWUgPSBzdGF0aWNfY2Fz
dDxWaWRlb0ZyYW1lR1N0cmVhbWVyKj4oJnNhbXBsZSk7CisgICAgICAgIGF1dG8qIHZpZGVvRnJh
bWUgPSBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lR1N0cmVhbWVyKj4oJnZpZGVvRnJhbWUpOwogICAg
ICAgICBhdXRvKiBnc3RTYW1wbGUgPSB2aWRlb0ZyYW1lLT5zYW1wbGUoKTsKICAgICAgICAgaWYg
KCFtX2NvbmZpZ3VyZWRTaXplLmlzRW1wdHkoKSAmJiBtX2xhc3RLbm93blNpemUgIT0gbV9jb25m
aWd1cmVkU2l6ZSkgewogICAgICAgICAgICAgbV9sYXN0S25vd25TaXplID0gbV9jb25maWd1cmVk
U2l6ZTsKQEAgLTM4NCw3ICszODQsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9jb25maWd1
cmVkU2l6ZTsKICAgICBJbnRTaXplIG1fbGFzdEtub3duU2l6ZTsKICAgICBHUmVmUHRyPEdzdFNh
bXBsZT4gbV9ibGFja0ZyYW1lOwotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fdmlk
ZW9Sb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgVmlk
ZW9GcmFtZTo6Um90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgVmlkZW9GcmFtZTo6Um90YXRpb246
Ok5vbmUgfTsKICAgICBib29sIG1fdmlkZW9NaXJyb3JlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCA0MDFlNGExNDk3YWMyMWEwOTkxYzZlNTk5MTU0M2Q1Yjk1YTFmMmFlLi41MGIz
OWU1MTFjMDQ5YjZlYzQ3ZjYyZmRkNGY3YjY3YTJiYTEyZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTY5
LDI0ICs2OSwyNCBAQCBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6Ok1vY2tEaXNw
bGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcihSZWFsdGltZU1lZAogICAgICwgbV9zb3VyY2UoV1RG
TW92ZShzb3VyY2UpKQogICAgICwgbV9kZXZpY2VUeXBlKGRldmljZVR5cGUpCiB7Ci0gICAgbV9z
b3VyY2UtPmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNlLT5hZGRW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VH
U3RyZWFtZXI6On5Nb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIoKQogewotICAgIG1f
c291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+
cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogdm9pZCBNb2NrRGlzcGxheUNh
cHR1cmVTb3VyY2VHU3RyZWFtZXI6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBtX3NvdXJj
ZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9zb3VyY2UtPnJlbW92
ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgbV9zb3VyY2UtPnN0b3AoKTsKIH0KIAog
dm9pZCBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OnJlcXVlc3RUb0VuZChPYnNl
cnZlciYgY2FsbGluZ09ic2VydmVyKQogewogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlcXVl
c3RUb0VuZChjYWxsaW5nT2JzZXJ2ZXIpOwotICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb1NhbXBs
ZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVy
KCp0aGlzKTsKICAgICBtX3NvdXJjZS0+cmVxdWVzdFRvRW5kKGNhbGxpbmdPYnNlcnZlcik7CiB9
CiAKQEAgLTk2LDkgKzk2LDkgQEAgdm9pZCBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFt
ZXI6OnNldE11dGVkKGJvb2wgaXNNdXRlZCkKICAgICBtX3NvdXJjZS0+c2V0TXV0ZWQoaXNNdXRl
ZCk7CiB9CiAKLXZvaWQgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjp2aWRlb1Nh
bXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
IG1ldGFkYXRhKQordm9pZCBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OnZpZGVv
RnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRh
ZGF0YSBtZXRhZGF0YSkKIHsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2
YWlsYWJsZShzYW1wbGUsIG1ldGFkYXRhKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRl
b0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUsIG1ldGFkYXRhKTsKIH0KIAogY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVh
bWVyOjpjYXBhYmlsaXRpZXMoKQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VHU3RyZWFtZXI6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgbWV0YWRhdGEt
PmNhcHR1cmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsK
ICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUo
KGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7CiAgICAgYXV0byB2aWRlb0ZyYW1l
ID0gVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFdURk1vdmUoKnBp
eGVsQnVmZmVyKSwgcHJlc2VudGF0aW9uVGltZSwgc2l6ZSgpLCBmcmFtZVJhdGUoKSwgc2FtcGxl
Um90YXRpb24oKSwgZmFsc2UsIFdURk1vdmUobWV0YWRhdGEpKTsKLSAgICBkaXNwYXRjaE1lZGlh
U2FtcGxlVG9PYnNlcnZlcnModmlkZW9GcmFtZS5nZXQoKSwgeyB9KTsKKyAgICBkaXNwYXRjaFZp
ZGVvRnJhbWVUb09ic2VydmVycyh2aWRlb0ZyYW1lLmdldCgpLCB7IH0pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZUdTdHJlYW1lci5oCmluZGV4IDMxNjE3ZTM4YTYzNWRhOWQ0YWRkNjQ0ZWEwODY2
N2FlYmZiOTY2ZmIuLjAxYzNiNTgxMjYyNzI2MmMwZmUzM2M3NjhlZmNjN2FmOTM5NDE2MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJl
YW1lci5oCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5SZXNpemVWaWRl
b0ZyYW1lcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKLWNsYXNzIE1vY2tE
aXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIHsKK2NsYXNz
IE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBSZWFsdGlt
ZU1lZGlhU291cmNlLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewog
cHVibGljOgogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29uc3QgQ2Fw
dHVyZURldmljZSYsIFN0cmluZyYmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CiAKQEAgLTQ5
LDggKzQ5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCBpc011dGVkKSBmaW5h
bDsKIAogcHJvdGVjdGVkOgotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxl
T2JzZXJ2ZXIKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW9GcmFtZU9ic2VydmVyCisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJh
bWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBNb2Nr
RGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwg
UmVmPE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyPiYmLCBTdHJpbmcmJiwgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCmlu
ZGV4IDM1Yjk3MGQ2MDhlMzhlMzU1NjdjOTMzMzU5NzZmZThiYzVmYTVmMTMuLjUzYmU1ZGRkMDE4
MzZmZDliYzNjOWVkNGI1ODIxMGZhMTQ0NmFkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJl
U291cmNlLm1tCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBSZXBsYXlLaXRDYXB0dXJlU291cmNl
OjpzdGFydCgpCiAgICAgfSk7CiAKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpZGVudGlmaWVyXShO
U0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJdCBzaG91bGQg
YmUgc2FmZSB0byBjYWxsIGB2aWRlb1NhbXBsZUF2YWlsYWJsZWAgZnJvbSBhbnkgdGhyZWFkLiBU
ZXN0IHRoaXMgYW5kIGdldCByaWQgb2YgdGhpcyBtYWluIHRocmVhZCBob3AuCisgICAgICAgIC8v
IEZJWE1FOiBJdCBzaG91bGQgYmUgc2FmZSB0byBjYWxsIGB2aWRlb0ZyYW1lQXZhaWxhYmxlYCBm
cm9tIGFueSB0aHJlYWQuIFRlc3QgdGhpcyBhbmQgZ2V0IHJpZCBvZiB0aGlzIG1haW4gdGhyZWFk
IGhvcC4KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcywg
ZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBpZGVudGlmaWVyXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCmluZGV4IGVmODcwMDIwYzli
OTYyNTU3NzI5ZGY3YzFlNGM1ODZlNWZhMzdmNzguLmEyZjEwYzQ0ZjhkYWQ2OThhNWI1ZmQ5ZTY5
N2UxYzM0MzBkMzZiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5j
cHAKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxWaWRl
b0ZyYW1lTGliV2ViUlRDPiBWaWRlb0ZyYW1lTGliV2ViUlRDOjpjcmVhdGUoTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENv
bnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25DYWxsYmFjaykKK1JlZjxWaWRlb0ZyYW1lTGli
V2ViUlRDPiBWaWRlb0ZyYW1lTGliV2ViUlRDOjpjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24sIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBDb252ZXJzaW9uQ2FsbGJh
Y2smJiBjb252ZXJzaW9uQ2FsbGJhY2spCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlk
ZW9GcmFtZUxpYldlYlJUQyhwcmVzZW50YXRpb25UaW1lLCBpc01pcnJvcmVkLCByb3RhdGlvbiwg
V1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKGNvbnZlcnNpb25DYWxsYmFjaykpKTsKIH0KIAotVmlk
ZW9GcmFtZUxpYldlYlJUQzo6VmlkZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRpbWUgcHJlc2VudGF0
aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lv
bkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQorVmlkZW9GcmFtZUxpYldlYlJUQzo6Vmlk
ZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJv
cmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25DYWxs
YmFjaykKICAgICA6IFZpZGVvRnJhbWUocHJlc2VudGF0aW9uVGltZSwgaXNNaXJyb3JlZCwgcm90
YXRpb24pCiAgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX3NpemUobV9i
dWZmZXItPndpZHRoKCksICBtX2J1ZmZlci0+aGVpZ2h0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJU
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVv
RnJhbWVMaWJXZWJSVEMuaAppbmRleCAzYTY2MzkwN2E0NmI4Zjc5M2Q3NTA4OGQ4OGJjNDk2NTlj
MzYyZTQ0Li40YzllNWE2Y2M1MjNmZjA4N2YxZjA2MGIwYWZmNTE0ZTUzYWFjNTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9G
cmFtZUxpYldlYlJUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmgKQEAgLTQyLDE2ICs0MiwxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWaWRlb0ZyYW1lTGliV2ViUlRDIGZpbmFsIDogcHVibGlj
IFZpZGVvRnJhbWUgewogcHVibGljOgogICAgIHVzaW5nIENvbnZlcnNpb25DYWxsYmFjayA9IEZ1
bmN0aW9uPFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPih3ZWJydGM6OlZpZGVvRnJhbWVCdWZm
ZXImKT47Ci0gICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lTGliV2ViUlRDPiBjcmVhdGUoTWVkaWFU
aW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKKyAgICBz
dGF0aWMgUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IGNyZWF0ZShNZWRpYVRpbWUsIGJvb2wgaXNN
aXJyb3JlZCwgUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVC
dWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKIAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRpbWUsIGJvb2wgaXNN
aXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOworICAgIFZpZGVvRnJhbWVMaWJX
ZWJSVEMoTWVkaWFUaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJik7
CiAKICAgICAvLyBWaWRlb0ZyYW1lCiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92aWRlb1BpeGVsRm9ybWF0OyB9CisgICAgdWlu
dDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvUGl4ZWxGb3Jt
YXQ7IH0KICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CiAK
ICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBt
X2J1ZmZlcjsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKIAogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lTGliV2ViUlRDKQogICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKSB7IHJldHVybiB2
aWRlb0ZyYW1lLmlzTGliV2ViUlRDKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBpczxXZWJDb3JlOjpW
aWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYgaXM8V2ViQ29yZTo6VmlkZW9GcmFtZUxpYldlYlJU
Qz4oZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpKTsgfQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIFVT
RShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldl
YlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
Z3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKaW5kZXgg
N2Q5NTBmNjc4MDA2NWIyZTllNTc2ZDQ2YzU1NmExM2E3NTNjNTBlOS4uY2YwMmU5YzM2MTY2MWEx
OGJkZmIyOWUxMGU3OGQ0MmI4ZGFjNDk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGli
V2ViUlRDLmNwcApAQCAtNjEsMTEgKzYxLDExIEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlTGliV2ViUlRDOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhCiAg
ICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gZnJvbUdzdENsb2NrVGltZShmcmFtZS50aW1lc3Rh
bXBfdXMoKSk7CiAgICAgaWYgKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT50eXBlKCkgPT0g
d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKSB7CiAgICAgICAgIGF1dG8q
IGZyYW1lYnVmZmVyID0gc3RhdGljX2Nhc3Q8R1N0cmVhbWVyVmlkZW9GcmFtZUxpYldlYlJUQyo+
KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLmdldCgpKTsKLSAgICAgICAgdmlkZW9TYW1wbGVB
dmFpbGFibGUoVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlV3JhcHBlZFNhbXBsZShmcmFtZWJ1
ZmZlci0+Z2V0U2FtcGxlKCksIHByZXNlbnRhdGlvblRpbWUsIHN0YXRpY19jYXN0PE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSksIHsgfSk7CisgICAgICAgIHZp
ZGVvRnJhbWVlQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZVdyYXBwZWRTYW1w
bGUoZnJhbWVidWZmZXItPmdldFNhbXBsZSgpLCBwcmVzZW50YXRpb25UaW1lLCBzdGF0aWNfY2Fz
dDxWaWRlb0ZyYW1lOjpSb3RhdGlvbj4oZnJhbWUucm90YXRpb24oKSkpLCB7IH0pOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGF1dG8gZ3N0U2FtcGxlID0gY29udmVydExpYldlYlJUQ1ZpZGVvRnJh
bWVUb0dTdHJlYW1lclNhbXBsZShmcmFtZSk7CiAgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBzdGQ6
Om1ha2Vfb3B0aW9uYWwobWV0YWRhdGFGcm9tVmlkZW9GcmFtZShmcmFtZSkpOwotICAgICAgICB2
aWRlb1NhbXBsZUF2YWlsYWJsZShWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShn
c3RTYW1wbGUpLCB7IH0sIHByZXNlbnRhdGlvblRpbWUsIHN0YXRpY19jYXN0PE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSwgZmFsc2UsIFdURk1vdmUobWV0YWRh
dGEpKSwgeyB9KTsKKyAgICAgICAgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lR1N0cmVh
bWVyOjpjcmVhdGUoV1RGTW92ZShnc3RTYW1wbGUpLCB7IH0sIHByZXNlbnRhdGlvblRpbWUsIHN0
YXRpY19jYXN0PFZpZGVvRnJhbWU6OlJvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSwgZmFsc2Us
IFdURk1vdmUobWV0YWRhdGEpKSwgeyB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlTGliV2ViUlRDLmNwcAppbmRleCBjNmRjYWQ3NTI1ZWRiZTY4ZDExMGFlMDIxMjU3MWNi
MzZiNGY4NmZiLi4wZDE1NzMwMDcwNTEyNjFmZjc0NTM5Mzg1YmJmNzgzODM2MWE5MzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCkBAIC01MCwxOSArNTAsMTkgQEAg
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDOjpSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEMoUmVmPE0KIHsKIH0KIAotdm9pZCBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1w
bGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUxpYldlYlJUQzo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1l
LCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewotICAgIHN3aXRjaCAoc2FtcGxlLnZpZGVvUm90
YXRpb24oKSkgewotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU6Cisg
ICAgc3dpdGNoICh2aWRlb0ZyYW1lLnJvdGF0aW9uKCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lOgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1Zp
ZGVvUm90YXRpb25fMDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjoKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpV
cHNpZGVEb3duOgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90
YXRpb25fMTgwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpSaWdodDoKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDoKICAg
ICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0Ogor
ICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ6CiAgICAgICAgIG1fY3VycmVudFJv
dGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oCmluZGV4IDdiMWRlZGMxODhlMzM1
YTVhOGQwNjJmZTJmMDNhMWRhZjE1MzRjOWUuLjcwMjQ4MTRhYWFmNmI3YmYxZmI0ZmYxOWJiYTgx
ZmYzM2ZkNmI1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2Vi
UlRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaApAQCAtNDEs
OCArNDEsOCBAQCBwcml2YXRlOgogCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4gY3JlYXRlQmxhY2tGcmFtZShzaXplX3QsIHNpemVfdCkgZmluYWw7CiAK
LSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIEFQSQotICAg
IHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhKSBmaW5hbDsKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2Jz
ZXJ2ZXIgQVBJCisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggMjRlMTFhZTEzZmJiZTdjMWM4NmZmYTZh
OGY3MGIyNGRmNjFmZTZhMS4uNTgwY2NiYmY1NTQ0MTEyYzM2YjNmMTM4NmQzNWY5ZmZiZWFlOTVm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0
ZToKICAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE7IH0KICAgICBib29s
IGludGVycnVwdGVkKCkgY29uc3QgZmluYWw7CiAKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiBzYW1wbGVSb3RhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2FtcGxlUm90YXRp
b247IH0KKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiB2aWRlb0ZyYW1lUm90YXRpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvRnJhbWVSb3RhdGlvbjsgfQogICAgIHZvaWQgc2V0RnJh
bWVSYXRlV2l0aFByZXNldChkb3VibGUsIFJlZlB0cjxWaWRlb1ByZXNldD4pIGZpbmFsOwogICAg
IGJvb2wgcHJlZmVyc1ByZXNldChWaWRlb1ByZXNldCYpIGZpbmFsOwogICAgIHZvaWQgZ2VuZXJh
dGVQcmVzZXRzKCkgZmluYWw7CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNldFNlc3Npb25TaXplQW5kRnJhbWVSYXRlKCk7CiAgICAgYm9vbCBzZXRQcmVzZXQoTlNTdHJp
bmcqKTsKLSAgICB2b2lkIGNvbXB1dGVTYW1wbGVSb3RhdGlvbigpOworICAgIHZvaWQgY29tcHV0
ZVZpZGVvRnJhbWVSb3RhdGlvbigpOwogICAgIEFWRnJhbWVSYXRlUmFuZ2UqIGZyYW1lRHVyYXRp
b25Gb3JGcmFtZVJhdGUoZG91YmxlKTsKIAogICAgIC8vIE9yaWVudGF0aW9uTm90aWZpZXI6Ok9i
c2VydmVyIEFQSQpAQCAtMTE4LDEzICsxMTgsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZVZlcmlmeUNhcHR1cmluZ1RpbWVyKCk7CiAgICAgdm9pZCB2ZXJpZnlJc0NhcHR1cmluZygpOwog
Ci0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8VmlkZW9GcmFt
ZT4gbV9idWZmZXI7CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dD4gbV92
aWRlb091dHB1dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4g
bV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKIAogICAgIGludCBtX3NlbnNvck9yaWVudGF0aW9uIHsg
MCB9OwogICAgIGludCBtX2RldmljZU9yaWVudGF0aW9uIHsgMCB9OwotICAgIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIG1fc2FtcGxlUm90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6Tm9uZSB9OworICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIG1fdmlkZW9GcmFtZVJvdGF0
aW9uIHsgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUgfTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKICAgICBzdGQ6
Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDM3OGM5YWY5N2Q3NTI1Y2RmYzI4
NTVmZTE4NDBhOTY4NjFhZGMxN2UuLjJiYzYyZmU4NTQ1N2M1MzYzYjRiMDU4YmZjY2NhZDcxMzMw
NjkyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTI1MSw3ICsyNTEsNyBA
QCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXR0aW5ncygpCiAgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKGZyYW1lUmF0ZSgpKTsKIAog
ICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICBpZiAobV9zYW1wbGVSb3RhdGlvbiA9
PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCBtX3NhbXBsZVJvdGF0aW9uID09
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodCkKKyAgICBpZiAobV92aWRlb0ZyYW1l
Um90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQgfHwgbV92aWRlb0ZyYW1lUm90
YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0KQogICAgICAgICBzaXplID0gc2l6
ZS50cmFuc3Bvc2VkU2l6ZSgpOwogICAgIAogICAgIHNldHRpbmdzLnNldFdpZHRoKHNpemUud2lk
dGgoKSk7CkBAIC00OTYsNyArNDk2LDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
dXBDYXB0dXJlU2Vzc2lvbigpCiAgICAgc2V0U2Vzc2lvblNpemVBbmRGcmFtZVJhdGUoKTsKIAog
ICAgIG1fc2Vuc29yT3JpZW50YXRpb24gPSBzZW5zb3JPcmllbnRhdGlvbkZyb21WaWRlb091dHB1
dChtX3ZpZGVvT3V0cHV0LmdldCgpKTsKLSAgICBjb21wdXRlU2FtcGxlUm90YXRpb24oKTsKKyAg
ICBjb21wdXRlVmlkZW9GcmFtZVJvdGF0aW9uKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTUyMSwzOCArNTIxLDM4IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6Om9yaWVudGF0aW9u
Q2hhbmdlZChpbnQgb3JpZW50YXRpb24pCiB7CiAgICAgQVNTRVJUKG9yaWVudGF0aW9uID09IDAg
fHwgb3JpZW50YXRpb24gPT0gOTAgfHwgb3JpZW50YXRpb24gPT0gLTkwIHx8IG9yaWVudGF0aW9u
ID09IDE4MCk7CiAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOwotICAgIGNv
bXB1dGVTYW1wbGVSb3RhdGlvbigpOwotICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExP
R0lERU5USUZJRVIsICJyb3RhdGlvbiA9ICIsIG1fc2FtcGxlUm90YXRpb24sICIsIG9yaWVudGF0
aW9uID0gIiwgbV9kZXZpY2VPcmllbnRhdGlvbik7CisgICAgY29tcHV0ZVZpZGVvRnJhbWVSb3Rh
dGlvbigpOworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJy
b3RhdGlvbiA9ICIsIG1fdmlkZW9GcmFtZVJvdGF0aW9uLCAiLCBvcmllbnRhdGlvbiA9ICIsIG1f
ZGV2aWNlT3JpZW50YXRpb24pOwogfQogCi12b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjb21w
dXRlU2FtcGxlUm90YXRpb24oKQordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y29tcHV0ZVZp
ZGVvRnJhbWVSb3RhdGlvbigpCiB7CiAgICAgYm9vbCBmcm9udENhbWVyYSA9IFtkZXZpY2UoKSBw
b3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udDsKLSAgICBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiBzYW1wbGVSb3RhdGlvbjsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlv
biB2aWRlb0ZyYW1lUm90YXRpb247CiAgICAgc3dpdGNoIChtX3NlbnNvck9yaWVudGF0aW9uIC0g
bV9kZXZpY2VPcmllbnRhdGlvbikgewogICAgIGNhc2UgMDoKLSAgICAgICAgc2FtcGxlUm90YXRp
b24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAgICAgdmlkZW9GcmFt
ZVJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgMTgwOgogICAgIGNhc2UgLTE4MDoKLSAgICAgICAgc2FtcGxlUm90YXRpb24gPSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsKKyAgICAgICAgdmlkZW9GcmFt
ZVJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd247CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgOTA6CiAgICAgY2FzZSAtMjcwOgotICAgICAgICBzYW1wbGVSb3RhdGlv
biA9IGZyb250Q2FtZXJhID8gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQgOiBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAgICAgIHZpZGVvRnJhbWVSb3RhdGlv
biA9IGZyb250Q2FtZXJhID8gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQgOiBWaWRlb0ZyYW1l
OjpSb3RhdGlvbjo6UmlnaHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgLTkwOgogICAgIGNh
c2UgMjcwOgotICAgICAgICBzYW1wbGVSb3RhdGlvbiA9IGZyb250Q2FtZXJhID8gTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0IDogTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Okxl
ZnQ7CisgICAgICAgIHZpZGVvRnJhbWVSb3RhdGlvbiA9IGZyb250Q2FtZXJhID8gVmlkZW9GcmFt
ZTo6Um90YXRpb246OlJpZ2h0IDogVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICBzYW1wbGVSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOwor
ICAgICAgICB2aWRlb0ZyYW1lUm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsK
ICAgICB9Ci0gICAgaWYgKHNhbXBsZVJvdGF0aW9uID09IG1fc2FtcGxlUm90YXRpb24pCisgICAg
aWYgKHZpZGVvRnJhbWVSb3RhdGlvbiA9PSBtX3ZpZGVvRnJhbWVSb3RhdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9zYW1wbGVSb3RhdGlvbiA9IHNhbXBsZVJvdGF0aW9uOworICAgIG1f
dmlkZW9GcmFtZVJvdGF0aW9uID0gdmlkZW9GcmFtZVJvdGF0aW9uOwogICAgIG5vdGlmeVNldHRp
bmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
OjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSk7CiB9
CiAKQEAgLTU2MSwxMiArNTYxLDEyIEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1
cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhCiAgICAgaWYg
KCsrbV9mcmFtZXNDb3VudCA8PSBmcmFtZXNUb0Ryb3BXaGVuU3RhcnRpbmcpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHNhbXBs
ZUJ1ZmZlciwgW2NhcHR1cmVDb25uZWN0aW9uIGlzVmlkZW9NaXJyb3JlZF0sIG1fc2FtcGxlUm90
YXRpb24pOworICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHNhbXBs
ZUJ1ZmZlciwgW2NhcHR1cmVDb25uZWN0aW9uIGlzVmlkZW9NaXJyb3JlZF0sIG1fdmlkZW9GcmFt
ZVJvdGF0aW9uKTsKICAgICBtX2J1ZmZlciA9ICZ2aWRlb0ZyYW1lLmdldCgpOwogICAgIHNldElu
dHJpbnNpY1NpemUoZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUtPnByZXNlbnRhdGlvblNpemUo
KSkpOwogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGE7CiAgICAgbWV0YWRhdGEu
Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwot
ICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhXVEZNb3ZlKHZpZGVvRnJhbWUpLCBt
ZXRhZGF0YSk7CisgICAgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9PYnNlcnZlcnMoV1RGTW92ZSh2aWRl
b0ZyYW1lKSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0
dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4IDAzNTMyNThhYjYxZjQyZGE0MjNjMTY1NzU0
MWMwODcwMzUzYmRkZDQuLmMwNTVkM2M2MzNkZDBlZjA2MTRhZWYzY2JjZDA3OTE5YzQ3OTFkMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTkzLDE2ICs5
MywxNiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZm
ZXIoKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgp
LT5uYXRpdmVJbWFnZSgpKQogICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKIAotICAgIGF1dG8gc2FtcGxlVGltZSA9IE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygpKTsKLSAgICBhdXRv
IHNhbXBsZUJ1ZmZlciA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxl
KHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24o
KSk7Ci0gICAgaWYgKCFzYW1wbGVCdWZmZXIpCisgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0g
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNv
bmRzKCkpOworICAgIGF1dG8gdmlkZW9GcmFtZSA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNy
ZWF0ZVZpZGVvRnJhbWUocGxhdGZvcm1JbWFnZS5nZXQoKSwgcHJlc2VudGF0aW9uVGltZSwgc2l6
ZSgpLCB2aWRlb0ZyYW1lUm90YXRpb24oKSk7CisgICAgaWYgKCF2aWRlb0ZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIGNhcHR1cmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCku
c2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzYW1wbGVCdWZmZXIgPSBXVEZNb3ZlKHNhbXBs
ZUJ1ZmZlciksIGNhcHR1cmVUaW1lXSgpIG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHZpZGVvRnJhbWUgPSBX
VEZNb3ZlKHZpZGVvRnJhbWUpLCBjYXB0dXJlVGltZV0oKSBtdXRhYmxlIHsKICAgICAgICAgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YTsKICAgICAgICAgbWV0YWRhdGEuY2FwdHVyZVRp
bWUgPSBjYXB0dXJlVGltZTsKLSAgICAgICAgZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJz
KCpzYW1wbGVCdWZmZXIsIG1ldGFkYXRhKTsKKyAgICAgICAgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9P
YnNlcnZlcnMoKnZpZGVvRnJhbWUsIG1ldGFkYXRhKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRleCA5MmMyZmVjNjgy
ZGQ2YWU3NjRmYmIyOTA0Y2FjOGZlZmE0OTY3MzRmLi4xZTkxMzNlOWY1Yzk0ZjQyMmU0ODIyNmM1
ZmIzYmNmMjY1YmU5ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EuaApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJh
Y2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gcGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKTsK
ICAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUpOwotICAgIFJlZlB0cjxWaWRlb0ZyYW1l
PiB0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24pOwotICAgIFJlZjxWaWRlb0ZyYW1lPiBjcmVhdGVWaWRlb1NhbXBsZUZyb21D
VlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
LCBpbnQ2NF90KTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdG9WaWRlb0ZyYW1lKGNvbnN0IHdl
YnJ0Yzo6VmlkZW9GcmFtZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uKTsKKyAgICBSZWY8VmlkZW9G
cmFtZT4gY3JlYXRlVmlkZW9TYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVm
LCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiwgaW50NjRfdCk7CiAKICAgICAvLyBydGM6OlZpZGVvU2lu
a0ludGVyZmFjZQogICAgIHZvaWQgT25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bQppbmRleCBlZTI4MjNjMWVhNzM4NWQ5YTE4NDAxOTZjN2RjYmI2YjMxMDQxYjA1Li5lMDJmODMw
MzhhNWMxYWJhZTI4MTMwZmFkNDk0MTU0NmQzYmZjMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC05MSwxMiArOTEsMTIgQEAgQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVs
QnVmZmVyUG9vbChzaXplX3Qgd2kKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCk7
CiB9CiAKLVJlZjxWaWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6
Y3JlYXRlVmlkZW9TYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgaW50NjRfdCB0aW1l
U3RhbXApCitSZWY8VmlkZW9GcmFtZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6
OmNyZWF0ZVZpZGVvU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlciwgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24sIGludDY0X3QgdGltZVN0YW1w
KQogewogICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShNZWRpYVRpbWUodGltZVN0YW1w
LCAxMDAwMDAwKSwgZmFsc2UsIHJvdGF0aW9uLCBwaXhlbEJ1ZmZlcik7CiB9CiAKLVJlZlB0cjxW
aWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6dG9WaWRlb0ZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uKQorUmVmUHRyPFZpZGVvRnJhbWU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwg
VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24pCiB7CiAgICAgaWYgKG11dGVkKCkpIHsKICAg
ICAgICAgaWYgKCFtX2JsYWNrRnJhbWUgfHwgbV9ibGFja0ZyYW1lV2lkdGggIT0gZnJhbWUud2lk
dGgoKSB8fCBtX2JsYWNrRnJhbWVIZWlnaHQgIT0gZnJhbWUuaGVpZ2h0KCkpIHsKQEAgLTE0NCwy
MCArMTQ0LDIwIEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJh
bWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiB3ZWJydGNWCiAgICAgdW5zaWduZWQgd2lkdGgg
PSB3ZWJydGNWaWRlb0ZyYW1lLndpZHRoKCk7CiAgICAgdW5zaWduZWQgaGVpZ2h0ID0gd2VicnRj
VmlkZW9GcmFtZS5oZWlnaHQoKTsKIAotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJv
dGF0aW9uOworICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uOwogICAgIHN3aXRjaCAo
d2VicnRjVmlkZW9GcmFtZS5yb3RhdGlvbigpKSB7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1Jv
dGF0aW9uXzA6Ci0gICAgICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
Ok5vbmU7CisgICAgICAgIHJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA6Ci0gICAg
ICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247Cisg
ICAgICAgIHJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd247CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl85MDoKLSAgICAgICAg
cm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAgICAgIHJv
dGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OwogICAgICAgICBzdGQ6OnN3YXAo
d2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9S
b3RhdGlvbl8yNzA6Ci0gICAgICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246OkxlZnQ7CisgICAgICAgIHJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ7
CiAgICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiB3ZWJydGNWCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHNldEludHJpbnNpY1NpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0g
ICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoKnZpZGVvRnJhbWUsIG1ldGFkYXRhRnJvbVZpZGVvRnJh
bWUod2VicnRjVmlkZW9GcmFtZSkpOworICAgIHZpZGVvRnJhbWVBdmFpbGFibGUoKnZpZGVvRnJh
bWUsIG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUod2VicnRjVmlkZW9GcmFtZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZUNvY29hLmNwcAppbmRleCAzYTNmY2JmOTZlZjgyMDFmOTBiY2U4N2U1ZTJkZWJjMWRk
MWNkNjA2Li5iY2VmNmExNTA2MWQwMmE2MjU4NjgzMzUyNWQyZjhlMmE5YmI0NzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKQEAgLTYz
LDQ2ICs2Myw0NiBAQCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZQogewogfQogCi12b2lkIFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYTo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRl
b0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIGlmICghKCsrbV9udW1iZXJPZkZyYW1lcyAlIDYwKSkKICAgICAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAiZnJhbWUgIiwgbV9udW1iZXJPZkZyYW1lcyk7CiAjZW5kaWYK
IAotICAgIHN3aXRjaCAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSkgewotICAgIGNhc2UgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU6CisgICAgc3dpdGNoICh2aWRlb0ZyYW1lLnJvdGF0
aW9uKCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgogICAgICAgICBt
X2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjoKKyAg
ICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgogICAgICAgICBtX2N1cnJl
bnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDoKKyAgICBjYXNlIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDoKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3
ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRp
b246OkxlZnQ6CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3Rh
dGlvbl8yNzA7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkQXBwbHlS
b3RhdGlvbiA9IG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBtX2N1cnJlbnRSb3RhdGlvbiAhPSB3
ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA7Ci0gICAgaWYgKCFzaG91bGRBcHBseVJvdGF0aW9uICYm
IGlzPFZpZGVvRnJhbWU+KHNhbXBsZSkpIHsKLSAgICAgICAgaWYgKGRvd25jYXN0PFZpZGVvRnJh
bWU+KHNhbXBsZSkuaXNSZW1vdGVQcm94eSgpKSB7Ci0gICAgICAgICAgICBSZWYgdmlkZW9GcmFt
ZSB7IGRvd25jYXN0PFZpZGVvRnJhbWU+KHNhbXBsZSkgfTsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgICAgICBzZW5kRnJhbWUod2Vi
cnRjOjp0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXIoJnZpZGVvRnJhbWUubGVha1JlZigpLAorICAg
IGlmICghc2hvdWxkQXBwbHlSb3RhdGlvbikgeworICAgICAgICBpZiAodmlkZW9GcmFtZS5pc1Jl
bW90ZVByb3h5KCkpIHsKKyAgICAgICAgICAgIFJlZiByZW1vdGVWaWRlb0ZyYW1lIHsgdmlkZW9G
cmFtZSB9OworICAgICAgICAgICAgYXV0byBzaXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25T
aXplKCk7CisgICAgICAgICAgICBzZW5kRnJhbWUod2VicnRjOjp0b1dlYlJUQ1ZpZGVvRnJhbWVC
dWZmZXIoJnJlbW90ZVZpZGVvRnJhbWUubGVha1JlZigpLAogICAgICAgICAgICAgICAgIFtdKGF1
dG8qIHBvaW50ZXIpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFZpZGVvRnJhbWUqPihwb2ludGVyKS0+
cGl4ZWxCdWZmZXIoKTsgfSwKICAgICAgICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHN0
YXRpY19jYXN0PFZpZGVvRnJhbWUqPihwb2ludGVyKS0+ZGVyZWYoKTsgfSwKICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc2l6
ZS5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBp
ZiAoZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKS5pc0xpYldlYlJUQygpKSB7Ci0gICAgICAg
ICAgICBzZW5kRnJhbWUoZG93bmNhc3Q8VmlkZW9GcmFtZUxpYldlYlJUQz4oc2FtcGxlKS5idWZm
ZXIoKSk7CisgICAgICAgIGlmICh2aWRlb0ZyYW1lLmlzTGliV2ViUlRDKCkpIHsKKyAgICAgICAg
ICAgIHNlbmRGcmFtZShkb3duY2FzdDxWaWRlb0ZyYW1lTGliV2ViUlRDPih2aWRlb0ZyYW1lKS5i
dWZmZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBh
dXRvIHBpeGVsQnVmZmVyID0gc2FtcGxlLnBpeGVsQnVmZmVyKCk7CisgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IHZpZGVvRnJhbWUucGl4ZWxCdWZmZXIoKTsKICAgICBhdXRvIHBpeGVsRm9ybWF0VHlw
ZSA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwogCiAgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnRlZEJ1ZmZlciA9IHBpeGVsQnVmZmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRl
eCBmZTdkZGQxMDg2NmM3Nzk1OWNmMDI3MzJjNzNhMWRlZTJiZTY0MWJkLi5iZmNiYWZkMmFjNDQ0
YjI3NWQxNmQ5ZGQ2MWU4YjVmM2U5NzFmYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaApAQCAtNDQsOCArNDQsOCBAQCBwcml2YXRlOgogCiAg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gY3JlYXRlQmxh
Y2tGcmFtZShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIGZpbmFsOwogCi0gICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIEFQSQor
ICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVN
ZXRhZGF0YSkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVy
dFRvWVVWKENWUGl4ZWxCdWZmZXJSZWYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiByb3RhdGVQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCB3ZWJydGM6OlZpZGVvUm90YXRp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1t
CmluZGV4IDM5Yjk5OGQ0ZjU0NTliOTkyNDIwNTU2M2I5NmY3ZGQyYjI1NGQ4MWQuLmQ0NzhlMTM5
NzVlNmQ3ZDdlNzVkMmMxNGI0YTczMzAzOGMxZjQ3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBv
cnQgIkFmZmluZVRyYW5zZm9ybS5oIgogI2ltcG9ydCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5o
IgogI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKICNpbXBvcnQg
IlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgIlJlYWx0aW1lVmlkZW9VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAppbmRleCAzY2Y3NDYwYzgwZTNiZTFkNWJhM2YwY2VkN2MxOWIyNWRmMjlhYmYyLi40ZmVjNGQ5
MzliYjI5MmQ2NDY0OWY5NWRlMmQ3N2U5NzI4NjgwNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAt
MTgwLDcgKzE4MCw3IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzKCkKICAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUo
ZnJhbWVSYXRlKCkpOwogICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBpZiAobW9j
a0NhbWVyYSgpKSB7Ci0gICAgICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9uID09IE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IG1fZGV2aWNlT3JpZW50YXRpb24gPT0gTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgICAgICBpZiAobV9kZXZpY2VPcmllbnRh
dGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCB8fCBtX2RldmljZU9yaWVudGF0aW9u
ID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAgICAgICAgICAgIHNpemUgPSBzaXpl
LnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogICAgIHNldHRpbmdzLnNldFdpZHRoKHNpemUud2lk
dGgoKSk7CkBAIC00OTYsMTYgKzQ5NiwxNiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpvcmllbnRhdGlvbkNoYW5nZWQoaW50IG9yaWVudGF0aW9uKQogICAgIGF1dG8gZGV2aWNlT3Jp
ZW50YXRpb24gPSBtX2RldmljZU9yaWVudGF0aW9uOwogICAgIHN3aXRjaCAob3JpZW50YXRpb24p
IHsKICAgICBjYXNlIDA6Ci0gICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDkwOgot
ICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
OlJpZ2h0OworICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRp
b246OlJpZ2h0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIC05MDoKLSAgICAgICAgbV9kZXZp
Y2VPcmllbnRhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OworICAgICAg
ICBtX2RldmljZU9yaWVudGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgMTgwOgotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0g
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247CisgICAgICAgIG1fZGV2aWNl
T3JpZW50YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmgKaW5kZXggZmM1ZmM3YWExY2I3NmZhNmQ5NzM5MDU4NjViZmFmZWNlZGUzNmJjNy4uZDhi
YWM1NjFkYTRiMTNmYzM3MjFkYzA4NDQ1YzU0MmQxNDlkMDVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAt
NjIsNyArNjIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBTZWNvbmRzIGVsYXBzZWRUaW1lKCk7CiAg
ICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnPikgb3ZlcnJpZGU7Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24g
c2FtcGxlUm90YXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9u
OyB9CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gdmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbjsgfQogICAgIHZvaWQgZ2VuZXJhdGVQ
cmVzZXRzKCkgb3ZlcnJpZGU7CiAKICAgICBJbnRTaXplIGNhcHR1cmVTaXplKCkgY29uc3Q7CkBA
IC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBDb2xvciBtX2ZpbGxDb2xvciB7IENvbG9y
OjpibGFjayB9OwogICAgIE1vY2tNZWRpYURldmljZSBtX2RldmljZTsKICAgICBSZWZQdHI8Vmlk
ZW9QcmVzZXQ+IG1fcHJlc2V0OwotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fZGV2
aWNlT3JpZW50YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAg
IFZpZGVvRnJhbWU6OlJvdGF0aW9uIG1fZGV2aWNlT3JpZW50YXRpb24geyBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6Tm9uZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGU4NmFlNWZmMmJjYzVjMjczNTQyYTljZWYzNWU3
NGQ3YTBhOGY2MjMuLjU2NzBiNmJmYTY3ZTNkYjZkYjc2ODI4OTY2YjYyZmI1MTE4ZGMzYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU1MjUsNyArNTUyNSw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpzdG9wT2JzZXJ2aW5nUmVhbHRpbWVNZWRpYVNvdXJjZSgpCiAgICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzoKICAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OlNjcmVlbjoKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OldpbmRvdzoKLSAgICAgICAgbV90cmFja1NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNl
cnZlcigqdGhpcyk7CisgICAgICAgIG1fdHJhY2tTb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNl
cnZlcigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTUyLDcg
KzU1NTIsNyBAQCB2b2lkIEludGVybmFsczo6b2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFT
dHJlYW1UcmFjayYgdHJhY2spCiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpW
aWRlbzoKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlNjcmVlbjoKICAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OldpbmRvdzoKLSAgICAgICAgbV90cmFja1Nv
dXJjZS0+YWRkVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1fdHJhY2tTb3Vy
Y2UtPmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC01NTY5LDEzICs1NTY5LDEzIEBAIHZvaWQgSW50ZXJuYWxzOjptZWRpYVN0
cmVhbVRyYWNrVmlkZW9GcmFtZVJvdGF0aW9uKERPTVByb21pc2VEZWZlcnJlZDxJRExTaG9ydD4m
CiAgICAgcHJvbWlzZS5yZXNvbHZlKG1fdHJhY2tWaWRlb1JvdGF0aW9uKTsKIH0KIAotdm9pZCBJ
bnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIEludGVybmFsczo6dmlkZW9GcmFtZUF2YWlsYWJsZShW
aWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNhbXBs
ZSA9IFJlZiB7IHNhbXBsZSB9XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdmlkZW9GcmFtZSA9IFJlZiB7IHZpZGVvRnJhbWUgfV0g
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBt
X3RyYWNrVmlkZW9TYW1wbGVDb3VudCsrOwotICAgICAgICBtX3RyYWNrVmlkZW9Sb3RhdGlvbiA9
IHN0YXRpY19jYXN0PGludD4oc2FtcGxlLT52aWRlb1JvdGF0aW9uKCkpOworICAgICAgICBtX3Ry
YWNrVmlkZW9Sb3RhdGlvbiA9IHN0YXRpY19jYXN0PGludD4odmlkZW9GcmFtZS0+cm90YXRpb24o
KSk7CiAgICAgICAgIGlmICghbV9uZXh0VHJhY2tGcmFtZVByb21pc2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTU1ODMsNyArNTU4Myw3IEBAIHZvaWQgSW50ZXJuYWxzOjp2aWRlb1NhbXBs
ZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhCiAg
ICAgICAgIGlmICghdmlkZW9TZXR0aW5ncy53aWR0aCgpIHx8ICF2aWRlb1NldHRpbmdzLmhlaWdo
dCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gcmdiYSA9IHNhbXBsZS0+
Z2V0UkdCQUltYWdlRGF0YSgpOworICAgICAgICBhdXRvIHJnYmEgPSB2aWRlb0ZyYW1lLT5nZXRS
R0JBSW1hZ2VEYXRhKCk7CiAgICAgICAgIGlmICghcmdiYSkKICAgICAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYTkyYWZkODI1NWExZWNkNGM3OWZl
YTVlNTUzMjJmOTlkNTMwYmVmZC4uOTczNDZkOWRiMjk1YzU0ZjJkNGUwNWFkMWUyZTA4YTYyYTZj
ODEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xNjUsNyArMTY1LDcgQEAg
Y2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHJp
dmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb24KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwg
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCiAgICAgLCBwcml2YXRlIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIKLSAgICAsIHByaXZhdGUgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgorICAgICwgcHJpdmF0ZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIKICNlbmRpZgogICAgIHsKIHB1YmxpYzoK
QEAgLTEyOTYsNyArMTI5Niw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIEFQSQotICAgIHZvaWQgdmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBm
aW5hbDsKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
U2FtcGxlT2JzZXJ2ZXIgQVBJCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbCB7IG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50Kys7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IDBlMTZkYmFmODA3NTUz
N2MxNDc0MzY3ZTM5OWVlZjVmMzRlODJmMjQuLmIzYTE5ODBlMzdmMjMxZmI5MTIxODJhMDA3NmYw
N2FlZTMxOGIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTU2
LDEzICs1Niw5IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNvcHlUZXh0dXJlRnJv
bVZpZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAvLyBOb3RlOiBUaGlz
IGV4dHJhIGNhc3RpbmcgaXMgbmVlZGVkIHNpbmNlIFZpZGVvRnJhbWVzIGFyZSBzdGlsbCBNZWRp
YVNhbXBsZXMuCi0gICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4gdmlkZW9GcmFtZUNW
OwotICAgIGlmIChpczxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+KCp2aWRlb0ZyYW1lKSkKLSAgICAg
ICAgdmlkZW9GcmFtZUNWID0gJmRvd25jYXN0PFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4oKnZpZGVv
RnJhbWUpOwotICAgIGVsc2UgaWYgKGlzPFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQz4oKnZp
ZGVvRnJhbWUpKQotICAgICAgICB2aWRlb0ZyYW1lQ1YgPSBkb3duY2FzdDxXZWJDb3JlOjpNZWRp
YVNhbXBsZUFWRk9iakM+KCp2aWRlb0ZyYW1lKS52aWRlb0ZyYW1lKCk7Ci0gICAgZWxzZSB7CisK
KyAgICBhdXRvIHZpZGVvRnJhbWVDViA9IHZpZGVvRnJhbWUtPmFzVmlkZW9GcmFtZUNWKCk7Cisg
ICAgaWYgKCF2aWRlb0ZyYW1lQ1YpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8v
IFByb2dyYW1taW5nIGVycm9yLCBub3QgYSBJUEMgYXR0YWNrLgogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3Bw
CmluZGV4IDA4YjgwYTU4ZmVmOTVkMmFhYzcwY2VjZGU5Y2U2NzIwYTU3YTc5OTIuLjRiYWM5YjM2
ODUzM2VhMDk3MTUyM2QxMzI0NzVmZDI0NGEzMGY0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lQ1YuaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29y
ZU1lZGlhU29mdExpbmsuaD4KICNlbmRpZgpAQCAtODQsNyArODMsNyBAQCB2b2lkIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwOjpjbG9zZSgpCiAgICAgLy8gVE9ETzogYWRkIGNhbiBoYXBwZW4g
YWZ0ZXIgc3RvcHBpbmcuCiB9CiAKLVJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4m
JiBmcmFtZSkKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6YWRkKFJlZjxXZWJDb3JlOjpWaWRlb0ZyYW1lPiYmIGZyYW1lKQogewog
ICAgIGF1dG8gd3JpdGUgPSBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2U6OmdlbmVyYXRl
Rm9yQWRkKCk7CiAgICAgYXV0byBuZXdGcmFtZVJlZmVyZW5jZSA9IHdyaXRlLnJldGlyZWRSZWZl
cmVuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKaW5kZXggNTNlZDU2ZTBhZTBkZWVmNjE1NGM4
Y2UwNGE5YjE2Y2YxNTBlNjhiMC4uYzA4YTVhNGM3N2Y2MDUyMTY2MjdjNTBiMTBhNDExZWYxYWI5
MmMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5j
bHVkZSAiVGhyZWFkU2FmZU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Ft
cGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCkBAIC00NCw4ICs0NCw4IEBAIHB1
YmxpYzoKICAgICB+UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKTsKIAogICAgIHZvaWQgY2xv
c2UoKTsKLSAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgYWRkKFJlZjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4mJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBn
ZXQoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiByZWFkKSB7IHJldHVybiBtX2hlYXAu
cmV0aXJlKFdURk1vdmUocmVhZCksIDBfcyk7IH0KKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXMgYWRkKFJlZjxXZWJDb3JlOjpWaWRlb0ZyYW1lPiYmKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6VmlkZW9GcmFtZT4gZ2V0KFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYg
cmVhZCkgeyByZXR1cm4gbV9oZWFwLnJldGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOyB9CiAKICAg
ICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
PiYmKSB7IGNsb3NlKCk7IH0KIApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBjb25zdCBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0gICAgVGhyZWFk
U2FmZU9iamVjdEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYVNhbXBsZT4+IG1faGVhcDsKKyAgICBUaHJlYWRTYWZlT2JqZWN0SGVhcDxSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWU+PiBtX2hlYXA7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2hhcmVkVmlkZW9GcmFtZVdyaXRlciBtX3NoYXJl
ZFZpZGVvRnJhbWVXcml0ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGQ4YTI5MjI2NjE2
YjI2NDdmMTFmODQ1NjAyOWYzZGVkZWUyM2UyMTQuLjBmODJkOTQ1NWE5OTU0ZWIzMGViNmUzYWEx
ZmYxMGYzYTY3OTIyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtOTcsNyArOTcsNyBAQCBhdXRvIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVEZWNvZGVyQ2FsbGJhY2soUlRDRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllcgogICAgIGlmICh1c2VSZW1vdGVGcmFtZXMpCiAgICAgICAgIHZpZGVv
RnJhbWVPYmplY3RIZWFwID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC5wdHIoKTsKICAgICByZXR1
cm4gW2lkZW50aWZpZXIsIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24sIHJlc291cmNlT3duZXIg
PSBtX3Jlc291cmNlT3duZXIsIHZpZGVvRnJhbWVPYmplY3RIZWFwID0gV1RGTW92ZSh2aWRlb0Zy
YW1lT2JqZWN0SGVhcCldIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0
aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byB2
aWRlb0ZyYW1lID0gV2ViQ29yZTo6VmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lKHRpbWVT
dGFtcE5zLCAxKSwgZmFsc2UsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lLCBwaXhlbEJ1ZmZlcik7CisgICAgICAgIGF1dG8gdmlkZW9GcmFtZSA9IFdlYkNvcmU6OlZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIGZhbHNlLCBXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwgcGl4ZWxCdWZmZXIpOwogICAgICAgICBp
ZiAocmVzb3VyY2VPd25lcikKICAgICAgICAgICAgIHZpZGVvRnJhbWUtPnNldE93bmVyc2hpcElk
ZW50aXR5KHJlc291cmNlT3duZXIpOwogICAgICAgICBpZiAodmlkZW9GcmFtZU9iamVjdEhlYXAp
IHsKQEAgLTIxNSwxNiArMjE1LDE2IEBAIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVyKiBM
aWJXZWJSVENDb2RlY3NQcm94eTo6ZmluZEVuY29kZXIoUlRDRW5jb2RlcklkZW50CiAgICAgcmV0
dXJuICZpdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1Jv
dGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiByb3RhdGlvbikKK3N0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHRv
V2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlv
bikKIHsKICAgICBzd2l0Y2ggKHJvdGF0aW9uKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICBjYXNlIFdlYkNvcmU6OlZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lOgogICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8w
OwotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURv
d246CisgICAgY2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjoK
ICAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOwotICAgIGNhc2UgV2Vi
Q29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAgICByZXR1cm4gd2VicnRjOjpr
VmlkZW9Sb3RhdGlvbl85MDsKLSAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246Okxl
ZnQ6CiAgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA1MmY2MThhMzg2YzMw
ZWFmNmRiZTA4ODAxNjRmNGM5ZjMyNjk4YjExLi5iZjBiOTQyZTQ2MTM1MzRkMGE5ZmE4M2JjODg4
MjRhZmJhMTFjOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVp
bnQ2NF90IG51bWJlck8KICAgICBtX3dyaXRlci0+YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoKm1f
YXVkaW9CdWZmZXJMaXN0LCBtX2Rlc2NyaXB0aW9uLCB0aW1lLCBudW1iZXJPZkZyYW1lcyk7CiB9
CiAKLXZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoU2hhcmVk
VmlkZW9GcmFtZSYmIHNoYXJlZFZpZGVvRnJhbWUpCit2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6
OnZpZGVvRnJhbWVBdmFpbGFibGUoU2hhcmVkVmlkZW9GcmFtZSYmIHNoYXJlZFZpZGVvRnJhbWUp
CiB7CiAgICAgaWYgKGF1dG8gZnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIucmVhZChX
VEZNb3ZlKHNoYXJlZFZpZGVvRnJhbWUpKSkKICAgICAgICAgbV93cml0ZXItPmFwcGVuZFZpZGVv
RnJhbWUoKmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggMWNjMWJiM2JmYTAwODIwMDExYjA3NTliYjI3
MGVkYzNlNTM1NDE1Ni4uM2Y4MWVmYjQzNDU3MTVlODdlY2M1ZWEwNWEwODQ4MDg2NGMwODk1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgogICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNB
dmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCB2
aWRlb1NhbXBsZUF2YWlsYWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYpOworICAgIHZvaWQgdmlkZW9G
cmFtZUF2YWlsYWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYpOwogICAgIHZvaWQgZmV0Y2hEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYpOwog
ICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5tZXNzYWdlcy5pbgppbmRleCA5YjdkOTZmNjNkZDQyOGYyYTBkY2NmYjY1OGUyZTg5YTljNmY2
MDA3Li4xMmJjODA1MGI2NDVlM2IwODM4M2NmZGJiYTNlNmJkM2I4NDIwZmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiBtZXNzYWdlcyAtPiBSZW1v
dGVNZWRpYVJlY29yZGVyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VD
aGFuZ2VkKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2Vi
Q29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKICAgICBBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKHN0cnVjdCBX
ZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUpCisgICAgVmlkZW9GcmFtZUF2YWlsYWJsZShz
dHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1lIGZyYW1lKQogICAgIEZldGNoRGF0YSgpIC0+
IChJUEM6OkRhdGFSZWZlcmVuY2UgYnVmZmVyLCBkb3VibGUgdGltZUNvZGUpCiAgICAgU3RvcFJl
Y29yZGluZygpIC0+ICgpCiAgICAgUGF1c2UoKSAtPiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwCmluZGV4IDhkMDRmMmNjNWE3ODlhN2E0ZTk1ODc0MGM3YjY4YjUzOTNlNWJh
NGIuLjFkN2FkYWI1NjkzOTMyZWQ4ZDNkMzk4YTQwNGRkOTNlNjQwMjE4ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRy
YW5zZm9ybSB0cmEKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlUm9vdExh
eWVyQWZmaW5lVHJhbnNmb3JtKHRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3Qg
Ym91bmRzLCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlUm9vdExheWVyQm91bmRzQW5kUG9zaXRp
b24oYm91bmRzLCByb3RhdGlvbiwgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNob3Vs
ZFVwZGF0ZVJvb3RMYXllcjo6WWVzKTsKIH0KQEAgLTExNiwxNSArMTE2LDE1IEBAIHZvaWQgUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjplbnF1ZXVlKFNoYXJlZFZpZGVvRnJhbWUmJiBmcmFtZSkKK3ZvaWQgUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlVmlkZW9GcmFtZShTaGFyZWRWaWRlb0ZyYW1l
JiYgZnJhbWUpCiB7CiAgICAgaWYgKGF1dG8gdmlkZW9GcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFt
ZVJlYWRlci5yZWFkKFdURk1vdmUoZnJhbWUpKSkKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXItPmVucXVldWUodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+
cHJlc2VudGF0aW9uVGltZSgpKTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PmVucXVldWVCdWZmZXIodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uVGltZSgpKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpjbGVhclZpZGVvRnJhbWVzKCkKIHsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+Y2xlYXJWaWRlb0ZyYW1lcygpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggMTYxZjNjOTU5ZWQzY2JhN2IzODJj
ZTIyZjUyNDhiNmQxYmNiMjQ4Zi4uNTk3Njg4ODk3M2QxMmY5ZGU2ZGVlZDZmNTNiMmMyMGQ2ODcx
OWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC03MCwxMyArNzAsMTMg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9vbCBoaWRl
RGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpOwogICAgIHZvaWQgdXBkYXRlQWZmaW5l
VHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKTsKLSAgICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBv
c2l0aW9uKENHUmVjdCwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOworICAg
IHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBXZWJDb3JlOjpWaWRlb0ZyYW1l
OjpSb3RhdGlvbik7CiAgICAgdm9pZCBmbHVzaCgpOwogICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVJ
bWFnZSgpOwogICAgIHZvaWQgcGxheSgpOwogICAgIHZvaWQgcGF1c2UoKTsKLSAgICB2b2lkIGVu
cXVldWUoU2hhcmVkVmlkZW9GcmFtZSYmKTsKLSAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVz
KCk7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShTaGFyZWRWaWRlb0ZyYW1lJiYpOworICAg
IHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZVNl
bWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVN
ZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgppbmRleCA3MzEwZWJhZjlhMmY5MTU4
MGUxZmQ4MWNkOWRhMmI2Njk4MGVmYTc1Li41MjRmNDVlYjZmMDVjZTVhYWZiZTExMjZmYTZmNjVk
ZmRmN2YzOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNz
YWdlcy5pbgpAQCAtMjksMTEgKzI5LDExIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogICAgIFVwZGF0ZURpc3BsYXlN
b2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKQogICAgIFVwZGF0
ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0pCi0gICAgVXBkYXRl
Qm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gcm90YXRpb24pCisgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
IGJvdW5kcywgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24pCiAgICAgRmx1
c2goKQogICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWUoc3RydWN0IFdlYktp
dDo6U2hhcmVkVmlkZW9GcmFtZSBmcmFtZSkKLSAgICBDbGVhckVucXVldWVkU2FtcGxlcygpCisg
ICAgRW5xdWV1ZVZpZGVvRnJhbWUoc3RydWN0IFdlYktpdDo6U2hhcmVkVmlkZW9GcmFtZSBmcmFt
ZSkKKyAgICBDbGVhclZpZGVvRnJhbWVzKCkKICAgICBQbGF5KCkKICAgICBQYXVzZSgpCiAgICAg
U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSBzZW1hcGhvcmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJkNDUzZTRkYTc5YzJkODJkMWE5MWQwNDJm
MzQ1MWViOGVkZGM1MGIuLmZjNTc0ODI0NWMxZTQyMzdhMjJlZjUzMTgyOGMwNTQ1ZGQ3N2U1MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6U291
cmNlUHJveHkKICAgICA6IHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICAg
ICAsIHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAg
ICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAg
ICAsIHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTb3VyY2VQcm94eShSZWFs
dGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyLCBSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZT4mJiBzb3VyY2UsIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiB2
aWRlb0ZyYW1lT2JqZWN0SGVhcCkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvOgogICAgICAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlNjcmVlbjoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgICAgICBtX3NvdXJjZS0+YWRkVmlkZW9TYW1w
bGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3NvdXJjZS0+YWRkVmlkZW9GcmFtZU9i
c2VydmVyKCp0aGlzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGU6OlZpZGVvOgogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OlNjcmVlbjoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpXaW5k
b3c6Ci0gICAgICAgICAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhp
cyk7CisgICAgICAgICAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlz
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU6Ok5vbmU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE3OCwx
NiArMTc4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2NhcHR1cmVTZW1hcGhvcmUtPnNp
Z25hbCgpOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcm90YXRlVmlkZW9GcmFt
ZUlmTmVlZGVkKE1lZGlhU2FtcGxlJiBzYW1wbGUpCisgICAgUmVmUHRyPFZpZGVvRnJhbWU+IHJv
dGF0ZVZpZGVvRnJhbWVJZk5lZWRlZChWaWRlb0ZyYW1lJiBmcmFtZSkKICAgICB7Ci0gICAgICAg
IGlmIChtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgc2FtcGxlLnZpZGVvUm90YXRpb24oKSAhPSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSkgewotICAgICAgICAgICAgYXV0byBwaXhl
bEJ1ZmZlciA9IHJvdGF0ZVBpeGVsQnVmZmVyKHNhbXBsZSk7Ci0gICAgICAgICAgICByZXR1cm4g
VmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZp
ZGVvTWlycm9yZWQoKSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIFdURk1vdmUo
cGl4ZWxCdWZmZXIpKTsKKyAgICAgICAgaWYgKG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBmcmFt
ZS5yb3RhdGlvbigpICE9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lKSB7CisgICAgICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gcm90YXRlUGl4ZWxCdWZmZXIoZnJhbWUpOworICAgICAgICAg
ICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKGZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwg
ZnJhbWUuaXNNaXJyb3JlZCgpLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwgV1RGTW92ZShw
aXhlbEJ1ZmZlcikpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAmc2FtcGxlOworICAgICAg
ICByZXR1cm4gJmZyYW1lOwogICAgIH0KIAotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUo
TWVkaWFTYW1wbGUmIGZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5h
bAorICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiBmcmFtZSwgVmlkZW9G
cmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgZmluYWwKICAgICB7CiAgICAgICAgIGF1dG8gdmlk
ZW9GcmFtZSA9IHJvdGF0ZVZpZGVvRnJhbWVJZk5lZWRlZChmcmFtZSk7CiAgICAgICAgIGlmICgh
dmlkZW9GcmFtZSkKQEAgLTE5NSwzNSArMTk1LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICht
X3Jlc291cmNlT3duZXIpCiAgICAgICAgICAgICB2aWRlb0ZyYW1lLT5zZXRPd25lcnNoaXBJZGVu
dGl0eShtX3Jlc291cmNlT3duZXIpOwogICAgICAgICBpZiAoIW1fdmlkZW9GcmFtZU9iamVjdEhl
YXApIHsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVvRnJhbWVBdmFpbGFibGVDVihtX2lkLCB2aWRlb0ZyYW1l
LT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT52aWRlb1JvdGF0aW9uKCksIHZpZGVvRnJhbWUt
PnZpZGVvTWlycm9yZWQoKSwgdmlkZW9GcmFtZS0+cHJlc2VudGF0aW9uVGltZSgpLCBtZXRhZGF0
YSksIDApOworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlcjo6VmlkZW9GcmFtZUF2YWlsYWJsZUNWKG1faWQsIHZpZGVvRnJh
bWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnJvdGF0aW9uKCksIHZpZGVvRnJhbWUtPmlz
TWlycm9yZWQoKSwgdmlkZW9GcmFtZS0+cHJlc2VudGF0aW9uVGltZSgpLCBtZXRhZGF0YSksIDAp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcHJvcGVydGll
cyA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPmFkZCgqdmlkZW9GcmFtZSk7CiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlZp
ZGVvRnJhbWVBdmFpbGFibGUobV9pZCwgcHJvcGVydGllcywgbWV0YWRhdGEpLCAwKTsKICAgICB9
CiAKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRlUGl4ZWxCdWZmZXIoTWVk
aWFTYW1wbGUmIHNhbXBsZSkKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRl
UGl4ZWxCdWZmZXIoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKICAgICB7CiAgICAgICAgIGlmICgh
bV9yb3RhdGlvblNlc3Npb24pCiAgICAgICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IG1ha2VV
bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oKTsKIAogICAgICAgICBJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpSb3RhdGlvblByb3BlcnRpZXMgcm90YXRpb247Ci0gICAgICAgIHN3aXRjaCAo
c2FtcGxlLnZpZGVvUm90YXRpb24oKSkgewotICAgICAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpOb25lOgorICAgICAgICBzd2l0Y2ggKHZpZGVvRnJhbWUucm90YXRpb24oKSkg
eworICAgICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByb3RhdGlvbi5hbmdsZSA9IDA7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6VXBzaWRlRG93bjoKKyAgICAgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRl
RG93bjoKICAgICAgICAgICAgIHJvdGF0aW9uLmFuZ2xlID0gMTgwOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgorICAg
ICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDoKICAgICAgICAgICAgIHJvdGF0
aW9uLmFuZ2xlID0gOTA7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDoKKyAgICAgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3Rh
dGlvbjo6TGVmdDoKICAgICAgICAgICAgIHJvdGF0aW9uLmFuZ2xlID0gMjcwOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5y
b3RhdGUoc2FtcGxlLCByb3RhdGlvbiwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdl
Q29tcGF0aWJsZTo6Tm8pOworICAgICAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24tPnJvdGF0
ZSh2aWRlb0ZyYW1lLCByb3RhdGlvbiwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdl
Q29tcGF0aWJsZTo6Tm8pOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVk
TWVtb3J5KiBzdG9yYWdlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKaW5kZXgg
YWI4ZjY5MjhhZWY3MzNlNTkwZTdhZDlmZDgwZjQ5YjQwNjgyODM4MS4uZTgxYjIzZjkwYjUxN2Mx
NTI4M2M3NTE2Mzc1YTdiMWMwMWEwNWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcApAQCAt
NDIsMTUgKzQyLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSYmIHJlZmVyZW5jZSwgY29uc3QgV2ViQ29yZTo6
TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQorUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhXZWJLaXQ6OlJlbW90ZVZpZGVv
RnJhbWVSZWZlcmVuY2UmJiByZWZlcmVuY2UsIGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUpCiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgV1RGTW92ZShyZWZlcmVuY2UpLAot
ICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksCi0gICAgICAgIG1lZGlhU2Ft
cGxlLnZpZGVvTWlycm9yZWQoKSwKLSAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9Sb3RhdGlvbigp
LAotICAgICAgICBleHBhbmRlZEludFNpemUobWVkaWFTYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgp
KSwKLSAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpCisgICAgICAgIHZpZGVv
RnJhbWUucHJlc2VudGF0aW9uVGltZSgpLAorICAgICAgICB2aWRlb0ZyYW1lLmlzTWlycm9yZWQo
KSwKKyAgICAgICAgdmlkZW9GcmFtZS5yb3RhdGlvbigpLAorICAgICAgICBleHBhbmRlZEludFNp
emUodmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCkpLAorICAgICAgICB2aWRlb0ZyYW1lLnBp
eGVsRm9ybWF0KCkKICAgICB9OwogfQogCkBAIC05NCw3ICs5NCw3IEBAIFJlbW90ZVZpZGVvRnJh
bWVSZWFkUmVmZXJlbmNlIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bmV3UmVhZFJlZmVyZW5jZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci5yZWFkKCk7CiB9CiAKLXVpbnQz
Ml90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit1aW50
MzJfdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9waXhlbEZvcm1hdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCmluZGV4IGNlNDA3MTBk
NzFlMDQyY2NiMTc3OWJjYzNlNDViM2JhYjJmMzQxMjYuLmU0NGQyOWZlZTM2YTkwNGY3NzQ1NWY2
NzIwNDQ2Y2VhMTFhOGZiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSByZWZl
cmVuY2U7CiAgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lOwogICAgICAgICBib29s
IGlzTWlycm9yZWQgeyBmYWxzZSB9OwotICAgICAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uIHsg
VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAgICAgICBSb3RhdGlvbiByb3RhdGlvbiB7IFJvdGF0
aW9uOjpOb25lIH07CiAgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZTsKICAgICAgICAgdWlu
dDMyX3QgcGl4ZWxGb3JtYXQgeyAwIH07CiAKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9w
ZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKLSAgICBzdGF0aWMgUHJvcGVydGll
cyBwcm9wZXJ0aWVzKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSYmLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSYpOworICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMo
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYsIGNvbnN0IFdlYkNvcmU6OlZpZGVv
RnJhbWUmKTsKIAogICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUo
SVBDOjpDb25uZWN0aW9uJiwgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSYsIFByb3Bl
cnRpZXMmJik7CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgLy8gV2ViQ29yZTo6
VmlkZW9GcmFtZSBvdmVycmlkZXMuCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlv
blNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB1aW50MzJfdCB2aWRl
b1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzUmVtb3RlUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwpAQCAtMTE2LDEyICsxMTYsMTIgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3Bl
cnRpZXM+IFJlbW8KICAgICBhdXRvIHJlZmVyZW5jZSA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2Rl
PFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2U+KCk7CiAgICAgYXV0byBwcmVzZW50YXRpb25UaW1l
ID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8TWVkaWFUaW1lPigpOwogICAgIGF1dG8gaXNNaXJy
b3JlZCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPGJvb2w+KCk7Ci0gICAgYXV0byB2aWRlb1Jv
dGF0aW9uID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8VmlkZW9Sb3RhdGlvbj4oKTsKKyAgICBh
dXRvIHJvdGF0aW9uID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8Um90YXRpb24+KCk7CiAgICAg
YXV0byBzaXplID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8V2ViQ29yZTo6SW50U2l6ZT4oKTsK
ICAgICBhdXRvIHBpeGVsRm9ybWF0ID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8dWludDMyX3Q+
KCk7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnJlZmVyZW5jZSksIFdURk1v
dmUoKnByZXNlbnRhdGlvblRpbWUpLCAqaXNNaXJyb3JlZCwgKnZpZGVvUm90YXRpb24sICpzaXpl
LCAqcGl4ZWxGb3JtYXQgfTsKKyAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnJlZmVy
ZW5jZSksIFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAqaXNNaXJyb3JlZCwgKnJvdGF0aW9u
LCAqc2l6ZSwgKnBpeGVsRm9ybWF0IH07CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYpOwpAQCAt
MTI5LDcgKzEyOSw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYpOwogfQogCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KQotICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsg
cmV0dXJuIGlzPFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSAmJiBkb3duY2FzdDxX
ZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkuaXNSZW1vdGVQcm94eSgpOyB9CisgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZpZGVvRnJhbWUp
IHsgcmV0dXJuIHZpZGVvRnJhbWUuaXNSZW1vdGVQcm94eSgpOyB9CiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggZmQxMjJkYmU1NzNjYWFh
OWI5NDRjODY1N2E0NTQ1YTBkYTVjNWI2Ni4uNmQzYWUwZTA1YjQ4YmM2ZThmZWVhNDFiMmVmNzFk
MWIwMzIyZDJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0xMDIsMjAgKzEwMiwyMCBAQCBzdGF0aWMg
aW50MzJfdCBpbml0aWFsaXplVmlkZW9FbmNvZGVyKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVy
IGVuY29kZXIsIGNvbnN0CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldl
YlJUQ0NvZGVjcygpLmluaXRpYWxpemVFbmNvZGVyKCpzdGF0aWNfY2FzdDxMaWJXZWJSVENDb2Rl
Y3M6OkVuY29kZXIqPihlbmNvZGVyKSwgY29kZWMud2lkdGgsIGNvZGVjLmhlaWdodCwgY29kZWMu
c3RhcnRCaXRyYXRlLCBjb2RlYy5tYXhCaXRyYXRlLCBjb2RlYy5taW5CaXRyYXRlLCBjb2RlYy5t
YXhGcmFtZXJhdGUpOwogfQogCi1zdGF0aWMgaW5saW5lIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbikKK3N0YXRpYyBpbmxpbmUgVmlkZW9GcmFtZTo6Um90YXRpb24gdG9WaWRlb1JvdGF0aW9u
KHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBzd2l0Y2ggKHJvdGF0aW9u
KSB7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA6Ci0gICAgICAgIHJldHVybiBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAgICAgcmV0dXJuIFZpZGVvRnJh
bWU6OlJvdGF0aW9uOjpOb25lOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA6
Ci0gICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsK
KyAgICAgICAgcmV0dXJuIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOwogICAgIGNh
c2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl85MDoKLSAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpSaWdodDsKKyAgICAgICAgcmV0dXJuIFZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpSaWdodDsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcwOgotICAgICAg
ICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ7CisgICAgICAgIHJldHVy
biBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAg
IHJldHVybiBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKIH0KIAogc3RhdGljIGlubGluZSBT
dHJpbmcgZm9ybWF0TmFtZUZyb21XZWJSVENDb2RlY1R5cGUod2VicnRjOjpWaWRlb0NvZGVjVHlw
ZSB0eXBlKQpAQCAtNDk0LDcgKzQ5NCw3IEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNv
ZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmCiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAK
LSAgICBTaGFyZWRWaWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUgeyBNZWRpYVRpbWUoZnJhbWUu
dGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgZmFsc2UsIHRvTWVkaWFTYW1wbGVWaWRl
b1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpLCBXVEZNb3ZlKCpidWZmZXIpIH07CisgICAgU2hh
cmVkVmlkZW9GcmFtZSBzaGFyZWRWaWRlb0ZyYW1lIHsgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFt
cF91cygpICogMTAwMCwgMTAwMDAwMCksIGZhbHNlLCB0b1ZpZGVvUm90YXRpb24oZnJhbWUucm90
YXRpb24oKSksIFdURk1vdmUoKmJ1ZmZlcikgfTsKICAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIu
aWRlbnRpZmllciwgc2hhcmVkVmlkZW9GcmFtZSwgZnJhbWUudGltZXN0YW1wKCksIHNob3VsZEVu
Y29kZUFzS2V5RnJhbWUgfSwgMCk7CiAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCAwNDg1MDY1NGRhMTkzNTZhNGUxMWY2NTg4
NTkzNWQzMjE5N2Y2ZDk3Li44NTg1MjY0NWQyNTdiYWJjNTYwYmQ0NTdhZDE2MDA0MGY4M2NmMTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC05MiwyNSArOTIsMjUgQEAgTWVkaWFSZWNv
cmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVDbGllbnQoKnRoaXMp
OwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZTo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1l
LCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewogICAgIGlmIChzaG91bGRNdXRlVmlkZW8oKSkg
ewogICAgICAgICBpZiAoIW1fYmxhY2tGcmFtZVNpemUpIHsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBhdXRvIHNpemUgPSB2
aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKICAgICAgICAgICAgIG1fYmxhY2tGcmFtZVNp
emUgPSBXZWJDb3JlOjpJbnRTaXplIHsgc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKCkpLCBz
dGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KCkpIH07CiAgICAgICAgIH0KLSAgICAgICAgU2hh
cmVkVmlkZW9GcmFtZSBzaGFyZWRWaWRlb0ZyYW1lIHsgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUo
KSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgKm1fYmxh
Y2tGcmFtZVNpemUgfTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlY29yZGVyOjpWaWRlb1NhbXBsZUF2YWlsYWJsZSB7IHNoYXJlZFZpZGVvRnJhbWUg
fSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgU2hhcmVkVmlkZW9GcmFtZSBzaGFyZWRWaWRlb0Zy
YW1lIHsgdmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIHZpZGVvRnJhbWUuaXNNaXJyb3Jl
ZCgpLCB2aWRlb0ZyYW1lLnJvdGF0aW9uKCksICptX2JsYWNrRnJhbWVTaXplIH07CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6VmlkZW9G
cmFtZUF2YWlsYWJsZSB7IHNoYXJlZFZpZGVvRnJhbWUgfSwgbV9pZGVudGlmaWVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fYmxhY2tGcmFtZVNpemUgPSB7IH07Ci0gICAgYXV0
byBzaGFyZWRWaWRlb0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHNhbXBs
ZSwKKyAgICBhdXRvIHNoYXJlZFZpZGVvRnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIu
d3JpdGUodmlkZW9GcmFtZSwKICAgICAgICAgW3RoaXNdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlNldFNoYXJlZFZp
ZGVvRnJhbWVTZW1hcGhvcmUgeyBzZW1hcGhvcmUgfSwgbV9pZGVudGlmaWVyKTsgfSwKICAgICAg
ICAgW3RoaXNdKGF1dG8mIGhhbmRsZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVjb3JkZXI6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBoYW5kbGUgfSwg
bV9pZGVudGlmaWVyKTsgfQogICAgICk7CiAgICAgaWYgKHNoYXJlZFZpZGVvRnJhbWUpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6Vmlk
ZW9TYW1wbGVBdmFpbGFibGUgeyBXVEZNb3ZlKCpzaGFyZWRWaWRlb0ZyYW1lKSB9LCBtX2lkZW50
aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UmVjb3JkZXI6OlZpZGVvRnJhbWVBdmFpbGFibGUgeyBXVEZNb3ZlKCpzaGFyZWRWaWRlb0ZyYW1l
KSB9LCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IG51bWJlck9mRnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggNzIx
MGMwY2ViMTA3Y2I3ZDdlNDE2ZmI2ODMyZjM4ZjIyNjhiOWM0OC4uZTI0ZWFiZTBlYmIyNWI5Yjgy
ZTNkNWI3OTFlZTJmYzg0NjI0ODdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZQotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6TWVkaWFTYW1w
bGUmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZp
ZGVvRnJhbWVBdmFpbGFibGUoV2ViQ29yZTo6VmlkZW9GcmFtZSYsIFdlYkNvcmU6OlZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcFJlY29y
ZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRS
ZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwCmluZGV4IDcxOTkyZjA0ZjI5YjRiMGVkNTY1YjMzYjk5NjRhZjgzNjc4
MDEyZDguLjc0NWNmZjZjNzMyMDI4YmVlMTEyOWZjNTg1NjQ4Y2Y5YjRlYmE4Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zv
cm0gdHJhbnNmb3JtCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlVwZGF0ZUFmZmluZVRyYW5zZm9ybSB7IHRyYW5zZm9ybSB9
LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBk
YXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24pCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQm91
bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRp
b24pCiB7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OlVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uIHsgYm91bmRzLCByb3RhdGlv
biB9LCBtX2lkZW50aWZpZXIpOwogfQpAQCAtMTI3LDI0ICsxMjcsMjQgQEAgdm9pZCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UGF1c2UgeyB9LCBtX2lkZW50aWZp
ZXIpOwogfQogCi12b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlKQordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUpCiB7CiAgICAgaWYgKG1fcGF1c2Vk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNoYXJlZFZpZGVvRnJhbWUgPSBtX3NoYXJl
ZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUoc2FtcGxlLAorICAgIGF1dG8gc2hhcmVkVmlkZW9GcmFt
ZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZSh2aWRlb0ZyYW1lLAogICAgICAgICBb
dGhpc10oYXV0byYgc2VtYXBob3JlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3Jl
IHsgc2VtYXBob3JlIH0sIG1faWRlbnRpZmllcik7IH0sCiAgICAgICAgIFt0aGlzXShhdXRvJiBo
YW5kbGUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBoYW5kbGUgfSwgbV9pZGVu
dGlmaWVyKTsgfQogICAgICk7CiAgICAgaWYgKCFzaGFyZWRWaWRlb0ZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZSB7ICpzaGFyZWRWaWRlb0ZyYW1lIH0sIG1faWRlbnRp
Zmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVWaWRlb0ZyYW1lIHsgKnNoYXJlZFZpZGVvRnJhbWUgfSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFy
RW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhclZp
ZGVvRnJhbWVzKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xlYXJFbnF1ZXVlZFNhbXBsZXMgeyB9LCBtX2lkZW50
aWZpZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpDbGVhclZpZGVvRnJhbWVzIHsgfSwgbV9pZGVudGlmaWVyKTsKIH0K
IAogUGxhdGZvcm1MYXllciogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA1ZTg0MzRhOWY0MjQ0ODBkMTAyMmU0NWFl
OGI4Njk5MzM0NjcxM2NjLi4wNzQwMWY2NDcxNzk1ZjVmZGMxZWQyZjU5ZGNiZmQ1OGMxMzVjZTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtNjIsMTMgKzYyLDEzIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBkaWRGYWlsKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEaXNw
bGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0pIGZpbmFs
OwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBXZWJDb3JlOjpNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCb3VuZHNBbmRQ
b3NpdGlvbihDR1JlY3QsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uKSBmaW5hbDsKICAg
ICB2b2lkIGZsdXNoKCkgZmluYWw7CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCkgZmlu
YWw7CiAgICAgdm9pZCBwbGF5KCkgZmluYWw7CiAgICAgdm9pZCBwYXVzZSgpIGZpbmFsOwotICAg
IHZvaWQgZW5xdWV1ZVNhbXBsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYpIGZpbmFsOwotICAgIHZv
aWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKSBmaW5hbDsKKyAgICB2b2lkIGVucXVldWVWaWRlb0Zy
YW1lKFdlYkNvcmU6OlZpZGVvRnJhbWUmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyVmlkZW9GcmFt
ZXMoKSBmaW5hbDsKICAgICBQbGF0Zm9ybUxheWVyKiByb290TGF5ZXIoKSBmaW5hbDsKIAogICAg
IC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKaW5kZXggY2U4
ZWM1ZmNkYzcyZDI1N2YwZDk0Y2ViMjg4YmZiYjNiYmFiM2VjZS4uMzliNzRiZjQ2ZGViZGE1ZGI2
OWY2N2ZiMmJjNmE4ZGU4ZmQ0ZTljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKQEAgLTkzLDE1ICs5Mywx
NSBAQCBib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OnByZXBhcmVXcml0aW5nKGNvbnN0IFNo
YXJlZFZpZGVvRnJhbWVJbmZvJiBpbmZvLCBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6
Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRl
KE1lZGlhU2FtcGxlJiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYp
PiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQorc3RkOjpvcHRpb25hbDxT
aGFyZWRWaWRlb0ZyYW1lPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShWaWRlb0ZyYW1l
JiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBo
b3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQogewogICAgIGF1dG8gYnVmZmVyID0gd3JpdGVC
dWZmZXIoZnJhbWUsIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxsYmFjayk7CiAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIFNoYXJlZFZp
ZGVvRnJhbWUgeyBmcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIGZyYW1lLnZpZGVvTWlycm9yZWQo
KSwgZnJhbWUudmlkZW9Sb3RhdGlvbigpLCBXVEZNb3ZlKCpidWZmZXIpIH07CisgICAgcmV0dXJu
IFNoYXJlZFZpZGVvRnJhbWUgeyBmcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIGZyYW1lLmlzTWly
cm9yZWQoKSwgZnJhbWUucm90YXRpb24oKSwgV1RGTW92ZSgqYnVmZmVyKSB9OwogfQogCi1zdGQ6
Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gU2hhcmVkVmlkZW9GcmFtZVdyaXRl
cjo6d3JpdGVCdWZmZXIoTWVkaWFTYW1wbGUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCitz
dGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gU2hhcmVkVmlkZW9GcmFtZVdy
aXRlcjo6d3JpdGVCdWZmZXIoVmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
SVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykK
IHsKICAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihmcmFtZSkpCiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KGZyYW1lKS5uZXdSZWFkUmVmZXJl
bmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
aGFyZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
aGFyZWRWaWRlb0ZyYW1lLmgKaW5kZXggZmEzZDgzYzVkOTRiOGFmZDBlNWQ3OWMwMGRkY2QzOWRm
ZTNhMzMzNy4uYTE1MDFlNzVhNjRmMjEzN2ZhNWMxNjkxNjUyYzQxMDJjYjhmZjk1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVv
RnJhbWUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDsKIHN0cnVjdCBTaGFyZWRWaWRlb0ZyYW1lIHsKICAgICBNZWRpYVRpbWUgdGltZTsKICAgICBi
b29sIG1pcnJvcmVkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiByb3RhdGlvbiB7IFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lIH07CisgICAgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24geyBXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIHVzaW5nIEJ1ZmZlciA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Us
IE1hY2hTZW5kUmlnaHQsIFdlYkNvcmU6OkludFNpemU+OwogICAgIEJ1ZmZlciBidWZmZXI7CiAK
QEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVdyaXRlciB7CiBwdWJsaWM6
CiAgICAgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcigpOwogCi0gICAgc3RkOjpvcHRpb25hbDxTaGFy
ZWRWaWRlb0ZyYW1lPiB3cml0ZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0Zy
YW1lPiB3cml0ZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mKTsKICAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZl
cj4gd3JpdGVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mLCBib29sIGNhblNlbmRJT1N1cmZhY2UgPSB0cnVlKTsKICNpZiBVU0UoTElC
V0VCUlRDKQogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3cml0
ZUJ1ZmZlcihjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYpOwpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWxs
b2NhdGVTdG9yYWdlKHNpemVfdCwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYpPiYpOwogICAgIGJvb2wgcHJlcGFyZVdyaXRpbmcoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkVmlkZW9GcmFtZUluZm8mLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBo
b3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYpPiYpOwogCi0gICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IHdy
aXRlQnVmZmVyKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZl
cj4gd3JpdGVCdWZmZXIoV2ViQ29yZTo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
SVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJik+Jik7CiAjaWYgVVNFKExJQldFQlJUQykKICAgICBzdGQ6Om9wdGlvbmFs
PFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gd3JpdGVCdWZmZXIod2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKaW5kZXggNzY0ZWMwZDVmNzdiZDNlZTA1MjQ1MDM4N2U0
ZjgxZGVmNmQ2YWFlOS4uZmZiZmEzMWZlYTBkMjE4YzhjYjU1MDc0NTk0MTI0NzVkMjY4ZjcxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCkBAIC0xNTksMTEgKzE1OSwxMCBAQCB2b2lkIFJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFi
bGUgdG8gZmluZCBzb3VyY2UgJWxsdSBmb3IgdmlkZW9GcmFtZUF2YWlsYWJsZSIsIGlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byB2aWRlb0Zy
YW1lU2l6ZSA9IHZpZGVvRnJhbWUtPnNpemUoKTsKLSAgICBpdGVyYXRvci0+dmFsdWUtPnZpZGVv
RnJhbWVBdmFpbGFibGUoV1RGTW92ZSh2aWRlb0ZyYW1lKSwgdmlkZW9GcmFtZVNpemUsIG1ldGFk
YXRhKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnJlbW90ZVZpZGVvRnJhbWVBdmFpbGFibGUoV1RG
TW92ZSh2aWRlb0ZyYW1lKSwgbWV0YWRhdGEpOwogfQogCi12b2lkIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZm
ZXIsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1p
cnJvcmVkLCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRp
bWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZp
ZGVvRnJhbWVBdmFpbGFibGVDVihSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6
VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRh
KQogewogICAgIEFTU0VSVCghV1RGOjppc01haW5SdW5Mb29wKCkpOwogICAgIGF1dG8gaXRlcmF0
b3IgPSBtX3ZpZGVvU291cmNlcy5maW5kKGlkZW50aWZpZXIpOwpAQCAtMTczLDggKzE3Miw3IEBA
IHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVvRnJhbWVBdmFpbGFibGVDVihS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpCiAgICAgfQogCiAgICAgYXV0byB2aWRlb0ZyYW1lID0g
VmlkZW9GcmFtZUNWOjpjcmVhdGUocHJlc2VudGF0aW9uVGltZSwgbWlycm9yZWQsIHJvdGF0aW9u
LCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSk7Ci0gICAgYXV0byBzaXplID0gdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uU2l6ZSgpOwotICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9GcmFtZUF2YWlsYWJs
ZSh2aWRlb0ZyYW1lLmdldCgpLCB7IHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCgpKSwgc3Rh
dGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCgpKSB9LCBtZXRhZGF0YSk7CisgICAgaXRlcmF0b3It
PnZhbHVlLT5yZW1vdGVWaWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUuZ2V0KCksIG1ldGFk
YXRhKTsKIH0KIAogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1ZGlvOjpSZW1v
dGVBdWRpbyhSZWY8UmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZT4mJiBzb3VyY2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5oCmluZGV4IDNlYzkyYjVkZTA4ODVkMjczNWIxMmMxODY0Njg3MWVlMGY4ZmFi
M2EuLjVlM2Y4MzQwNzY4YmJlOGE5Y2I4OWM0ODI3YTMyYTkxN2U5Mzg3ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdWRpb1Nh
bXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIE1l
ZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogICAgIHZvaWQgdmlkZW9GcmFtZUF2
YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJiYsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEpOwogICAgIC8vIEZJWE1FOiBXaWxsIGJlIHJlbW92ZWQgb25jZSBSZW1vdGVWaWRlb0ZyYW1l
UHJveHkgcHJvdmlkZXJzIGFyZSB0aGUgb25seSBvbmVzIHNlbmRpbmcgZGF0YS4KLSAgICB2b2lk
IHZpZGVvRnJhbWVBdmFpbGFibGVDVihXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRp
ZmllciwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYsIFdlYkNvcmU6Ok1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRpYVRpbWUsIFdlYkNvcmU6OlZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZUNWKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4mJiwgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1l
ZGlhVGltZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CiAKICAgICB2b2lkIHNl
dENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5tZXNzYWdlcy5pbgppbmRleCA3MWIzNDcwODUzMjYzMGFjN2ZhMzFmYWE3ZGJmMWQyM2Iz
NTEwOGZiLi5lNWNkZmMyNTNmNDEzMWFhMGRmNTcxYTJmNDZiZTQzZmJmMjUxYWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiBt
ZXNzYWdlcyAtPiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAg
ICBBdWRpb1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyIGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlIGNhcHR1cmVTZW1hcGhvcmUsIE1lZGlhVGltZSBt
ZWRpYVRpbWUsIHNpemVfdCBmcmFtZUNodW5rU2l6ZSk7CiAgICAgVmlkZW9GcmFtZUF2YWlsYWJs
ZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgc2FtcGxlLCBzdHJ1Y3QgV2ViQ29yZTo6Vmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKLSAgICBWaWRlb0ZyYW1lQXZhaWxhYmxlQ1Yo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1l
LCBzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKKyAgICBW
aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIgaWQsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6
VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBt
ZXRhZGF0YSkKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBlNmViMzJiOWYzOTgwY2E4
YTQ0ODQyYTViZWY1MTZhZGI0M2RhM2Q1Li5kMWI4NTk5NWYzOWQ2YTg0Y2Q0MWI3NDA3ZTg0NjIz
MzlmMDU4NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjYXB0dXJlU3RvcHBlZChib29sIGRpZEZhaWwpOwogCi0gICAgdm9pZCB2
aWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNvcmU6OlZpZGVvRnJhbWUmIGZyYW1lLCBXZWJDb3JlOjpJ
bnRTaXplLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKSB7IHZpZGVv
U2FtcGxlQXZhaWxhYmxlKGZyYW1lLCBtZXRhZGF0YSk7IH0KKyAgICB2b2lkIHJlbW90ZVZpZGVv
RnJhbWVBdmFpbGFibGUoV2ViQ29yZTo6VmlkZW9GcmFtZSYgZnJhbWUsIFdlYkNvcmU6OlZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpIHsgdmlkZW9GcmFtZUF2YWlsYWJsZShmcmFtZSwg
bWV0YWRhdGEpOyB9CiAgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoYm9vbCB2YWx1ZSwgYm9v
bCBpbnRlcnJ1cHRlZCk7CiAKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYpOwo=
</data>
<flag name="commit-queue"
          id="483163"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455235</attachid>
            <date>2022-03-21 05:31:40 -0700</date>
            <delta_ts>2022-03-21 06:41:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237884-20220321133133.patch</filename>
            <type>text/plain</type>
            <size>180610</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwOTYzNDY1YjQzZGFi
MWFlNjkyYjg2YWRmODMzYjliN2FhMmZhZi4uMzgzMmQ4MmI2MWI5M2ZhZTZmNjYxZmRlNGVmZDlj
ZmE5YjBlZWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlIHRvIFZp
ZGVvRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yaW5nIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC0gUmVuYW1pbmcgb2Yg
VmlkZW9TYW1wbGVPYnNlcnZlciB0byBWaWRlb0ZyYW1lT2JzZXJ2ZXIsIHZpZGVvU2FtcGxlQXZh
aWxhYmxlIHRvIHZpZGVvRnJhbWVBdmFpbGFibGUuLi4KKyAgICAgICAgLSB2aWRlb0ZyYW1lQXZh
aWxhYmxlIHRha2VzIGEgVmlkZW9GcmFtZSBpbnN0ZWFkIG9mIGEgTWVkaWFTYW1wbGUKKyAgICAg
ICAgLSBVc2UgVmlkZW9GcmFtZTo6cm90YXRpb24gYW5kIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQu
CisgICAgICAgIC0gVXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uIGluc3RlYWQgb2YgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24KKyAgICAgICAgVXBkYXRlIGNvZGUgYWNjb3JkaW5nIHRoaXMgcmVu
YW1pbmcuCisgICAgICAgIE1vdmUgZnJvbSB1c2luZyBNZWRpYVNhbXBsZSB0byBWaWRlb0ZyYW1l
IHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAgIFByZXBhcmUgZm9yIHJlbW92YWwgb2Yg
TWVkaWFTYW1wbGUgYXMgcGFyZW50IGNsYXNzIG9mIFZpZGVvRnJhbWUuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
SW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9GcmFtZUNWLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b0ZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDIyLTAzLTIxICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0IGJlIGNhbGxlZCBpbiBzZXRSYW5nZVRleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODE4N2Y1MGI2MzM4NGMxZDA0ZDliZTNlZjM2NGUzNmQzMWYzMTljNy4uNDc3
NzlkYzZjNDFhNTEyN2Y2ZjlmMDM0NjZiOWZkMDQyNDczOTdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwzOSBAQAogMjAyMi0wMy0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
KyAgICAgICAgTW92ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZSB0byBWaWRlb0ZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGZyb20gdXNpbmcgTWVkaWFTYW1wbGUgdG8g
VmlkZW9GcmFtZSBkaXJlY3RseS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRW
aWRlb0ZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCisyMDIyLTAzLTE4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgdXNlIG9mIE1lZGlhU2FtcGxlQVZG
T2JqQyBmcm9tIFdlYlJUQyBwaXBlbGluZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzcwNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA0MjUz
OTE+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDhhMGQ0ZTQ0
MDkxM2Y1YzhiZmIyMWIxMjE2YTA0NzE5NThiM2U1ZDEuLjkxNWFlOGNkZjg4NjYzODczNDkwNjFi
NzM1MjlmNTc2MGRiZDRlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
azo6U291cmNlOjpjYXB0dXJlQ2FudmFzKCkKIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEg
bWV0YWRhdGE7CiAgICAgbWV0YWRhdGEuY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KS5zZWNvbmRzU2luY2VFcG9jaCgpOwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCp2aWRlb0Zy
YW1lLCBtZXRhZGF0YSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0
YWRhdGEpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2s6OmNsb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMjZkOTJlZDhiN2E5NzI3
ZDg5MTQ5ZmY0NjYzZDM0YzMyOTRhMTAzMC4uNzc4YjdkYTFlZGZjMTEwMjk5MWQzY2M3NGY3MGZm
OTYzNDI2YjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNywxMCArMTM3LDYgQEAKICNpbmNs
dWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgotI2VuZGlmCi0KICNpZiAhVVNFKEFOR0xFKQog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaWYgVVNFKE9QRU5HTF9FUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDY3NDYxOWZhNjIyZWFjOTk1
OGY1ZjQwOTU5NWM3ZWU4MDcxNDI2MGEuLjk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5MWM0OWIy
ZGUwMGEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMTE3LDkg
KzExNyw5IEBAIHB1YmxpYzoKICAgICAgICAgUmlnaHQgPSA5MCwKICAgICAgICAgTGVmdCA9IDI3
MCwKICAgICB9OwotICAgIHZpcnR1YWwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aWRl
b01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90
IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggZDViYzczMzZhZmJjMjBlZTE3NDhhZmZhYWRhMTIx
NDlmZWJlM2NmNS4uZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBN
ZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcHJlc2VudGF0aW9uVGltZTsKIH0KIAotTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gVmlk
ZW9GcmFtZTo6dmlkZW9Sb3RhdGlvbigpIGNvbnN0CitWaWRlb0ZyYW1lOjpSb3RhdGlvbiBWaWRl
b0ZyYW1lOjpyb3RhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcm90YXRpb247CiB9CiAK
LWJvb2wgVmlkZW9GcmFtZTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0Citib29sIFZpZGVvRnJhbWU6
OmlzTWlycm9yZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzTWlycm9yZWQ7CiB9CkBAIC0x
MzAsNyArMTMwLDcgQEAgUmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZTo6YXNWaWRlb0Zy
YW1lQ1YoKQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIHZpZGVvTWly
cm9yZWQoKSwgdmlkZW9Sb3RhdGlvbigpLCBidWZmZXIpOworICAgIHJldHVybiBWaWRlb0ZyYW1l
Q1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIGlzTWlycm9yZWQoKSwgcm90YXRpb24oKSwg
YnVmZmVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKaW5k
ZXggYWJhNGI2Y2NiOTJhMjdiMjQzNzI4NzRkMTkxMTI4OTUxYjY0MTk5Ny4uOGFhNDJlZWZmYWFm
NmFiNGQzN2U5YTg1NmEyNDU5N2NjYmE1NzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVv
RnJhbWUuaApAQCAtNDIsMTAgKzQyLDEyIEBAIGNsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVk
aWFTYW1wbGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CiAK
KyAgICB1c2luZyBSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOworCiAgICAg
Ly8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgogICAgIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKICAgICAvLyBGSVhNRTogV2hlbiBWaWRl
b0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgogICAg
IFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxh
dGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggODhmZjI3NWE0ODJjODM0MDY5MjNjOTQ4OWNlYzhh
NzRjNjVjYTkwNS4uNzk3OTg4NzY5OTlhNWYzZmMyMDEzYTI3YzNhOGY0OGFkY2MyYjgyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMjUsOCAr
MjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgVmlkZW9GcmFtZTsKIAog
Y2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHsKIHB1YmxpYzoKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVE
aXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpID0gMDsK
QEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVl
U2FtcGxlKE1lZGlhU2FtcGxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckVucXVldWVk
U2FtcGxlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9G
cmFtZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygpID0gMDsKIAog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApp
bmRleCBhNjZiMjczNWJjZWFlZGVjMzU2ZWM3ZjA4Mzc0MjM1NjU0ZWRiMjNkLi40OTQ2NTAzYzky
ZTIwMjY3YzZjNzk3MzQ4ZjlhNWQ5NTRlYTJkZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFJldGFpblB0
cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4mJiwgQ2xpZW50Jik7CiAgICAgfkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKKyAgICB2b2lkIGVucXVldWVCdWZmZXIoQ1ZQaXhl
bEJ1ZmZlclJlZiwgTWVkaWFUaW1lKTsKKwogICAgIC8vIEFQSSB1c2VkIGJ5IFdlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIKICAgICB2b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdl
KCk7CiAgICAgdm9pZCBsYXllckVycm9yRGlkQ2hhbmdlKCk7CkBAIC01NiwxMiArNTgsMTIgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm1MYXllciogZGlzcGxheUxheWVyKCk7CiAKLSAgICBQbGF0
Zm9ybUxheWVyKiByb290TGF5ZXIoKSBmaW5hbDsKLQogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBk
YXRlUm9vdExheWVyIHsgTm8sIFllcyB9OwotICAgIHZvaWQgdXBkYXRlUm9vdExheWVyQm91bmRz
QW5kUG9zaXRpb24oQ0dSZWN0LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgU2hvdWxkVXBk
YXRlUm9vdExheWVyKTsKKyAgICB2b2lkIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcik7CiAg
ICAgdm9pZCB1cGRhdGVSb290TGF5ZXJBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0p
OwogCisgICAgLy8gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorICAgIFBsYXRmb3JtTGF5ZXIq
IHJvb3RMYXllcigpIGZpbmFsOwogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5
ZXIsIEludFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBkaWRTdWNjZWVkKT4mJikg
ZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlm
aWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpIGZpbmFsIHsgbV9sb2dJZGVudGlmaWVyID0gV1RG
TW92ZShsb2dJZGVudGlmaWVyKTsgfQpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RM
YXllcikgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRy
YW5zZm9ybSkgIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCb3Vu
ZHNBbmRQb3NpdGlvbihDR1JlY3QsIFZpZGVvRnJhbWU6OlJvdGF0aW9uKSBmaW5hbDsKIAogICAg
IHZvaWQgZmx1c2goKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5h
bDsKQEAgLTc5LDE3ICs4MSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5KCkgZmluYWw7CiAg
ICAgdm9pZCBwYXVzZSgpIGZpbmFsOwogCi0gICAgdm9pZCBlbnF1ZXVlKENWUGl4ZWxCdWZmZXJS
ZWYsIE1lZGlhVGltZSk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJikgZmlu
YWw7Ci0gICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpIGZpbmFsOworICAgIHZvaWQgZW5x
dWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJWaWRlb0Zy
YW1lcygpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVuZGVyUG9saWN5KFJlbmRlclBvbGljeSkgZmlu
YWw7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1
ZSgpOwotICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmKTsKKwor
ICAgIHZvaWQgcmVtb3ZlT2xkVmlkZW9GcmFtZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CisgICAgdm9p
ZCBhZGRWaWRlb0ZyYW1lVG9QZW5kaW5nUXVldWUoUmVmPFZpZGVvRnJhbWU+JiYpOwogICAgIHZv
aWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgIHZvaWQg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgc2V0Um9vdExheWVy
Qm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOwor
ICAgIHZvaWQgc2V0Um9vdExheWVyQm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgVmlkZW9GcmFt
ZTo6Um90YXRpb24pOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBvbkly
cmVndWxhckZyYW1lUmF0ZU5vdGlmaWNhdGlvbihNb25vdG9uaWNUaW1lIGZyYW1lVGltZSwgTW9u
b3RvbmljVGltZSBsYXN0RnJhbWVUaW1lKTsKQEAgLTEwNCw4ICsxMDUsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcHJvY2Vzc2luZ1F1ZXVlOwogCiAgICAgLy8gT25seSBh
Y2Nlc3NlZCB0aHJvdWdoIG1fcHJvY2Vzc2luZ1F1ZXVlIG9yIGlmIG1fcHJvY2Vzc2luZ1F1ZXVl
IGlzIG51bGwuCi0gICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlh
U2FtcGxlPj47Ci0gICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVl
dWU7CisgICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPFZpZGVvRnJhbWU+
PjsKKyAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlOwogICAg
IAogICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IDFjY2Rk
ZmE4ODE1YTRmNzY0ZTI0OTFjNzA0NzViOGQyMGJkYzQ5MDQuLjQ1OGM1YTM5YWYwNWQ4YTBhMGUw
YmQ1NWMwYmZiMTAxYTEzZGQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMSw3ICszMSw2IEBACiAj
aW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiSW50U2l6ZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGll
cy5oIgogCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aD4KQEAgLTQyLDggKzQxLDkgQEAKICNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9N
ZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0
aW9uU1BJLmg+Ci0KKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtMTk4LDcgKzE5OCw3IEBAIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp+TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQogCiAgICAgW21fc3RhdHVzQ2hhbmdl
TGlzdGVuZXIgc3RvcF07CiAKLSAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7
CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFyKCk7CiAKICAgICBbbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaF07CkBAIC0yNjUsMjggKzI2NSwyOCBAQCB2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZp
bmVUcmFuc2Zvcm0gdHJhbgogICAgIH0pOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZpZGVvRnJh
bWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBv
c2l0aW9uKGJvdW5kcywgcm90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcjo6Tm8pOwogfQog
Ci12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJCb3VuZHNB
bmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24pCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJC
b3VuZHNBbmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24pCiB7CiAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IHsgYm91bmRzLnNpemUud2lkdGggLyAy
LCBib3VuZHMuc2l6ZS5oZWlnaHQgLyAyfTsKLSAgICBpZiAocm90YXRpb24gPT0gTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0IHx8IHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0KQorICAgIGlmIChyb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6UmlnaHQgfHwgcm90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQpCiAgICAg
ICAgIHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAog
ICAgIG1fcm9vdExheWVyLmdldCgpLnBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgbV9yb290TGF5
ZXIuZ2V0KCkuYm91bmRzID0gYm91bmRzOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRz
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgU2hvdWxkVXBkYXRlUm9vdExh
eWVyIHNob3VsZFVwZGF0ZVJvb3RMYXllcikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBTaG91bGRVcGRhdGVSb290TGF5ZXIgc2hvdWxk
VXBkYXRlUm9vdExheWVyKQogewogICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CiAgICAg
ICAgIGlmIChzaG91bGRVcGRhdGVSb290TGF5ZXIgPT0gU2hvdWxkVXBkYXRlUm9vdExheWVyOjpZ
ZXMpCiAgICAgICAgICAgICBzZXRSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbnMoYm91bmRzLCBy
b3RhdGlvbik7CiAKLSAgICAgICAgaWYgKHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpSaWdodCB8fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdCkKKyAgICAgICAgaWYgKHJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdo
dCB8fCByb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCkKICAgICAgICAgICAg
IHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAogICAg
ICAgICBDR1BvaW50IHBvc2l0aW9uID0geyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5z
aXplLmhlaWdodCAvIDJ9OwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQogCiBzdGF0aWMgY29uc3QgZG91
YmxlIHJlbmRlcmVyTGF0ZW5jeSA9IDAuMDI7CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECkBAIC0zMjEsMjIgKzMyMSwxNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZSA9
IFJlZiB7IHNhbXBsZSB9XSB7CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCB2aWRlb0ZyYW1lID0gUmVmIHsgdmlkZW9GcmFtZSB9XSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0p
IHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlICgle3B1YmxpY31zKSBub3QgcmVhZHkgZm9yIG1vcmUg
bWVkaWEgZGF0YSIsIG1fbG9nSWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7CisgICAgICAgICAgICBhZGRWaWRlb0Zy
YW1lVG9QZW5kaW5nUXVldWUoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiAgICAgICAgICAgICByZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihzYW1wbGUpOworICAg
ICAgICBlbnF1ZXVlQnVmZmVyKHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUt
PnByZXNlbnRhdGlvblRpbWUoKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
LXsKLSAgICBlbnF1ZXVlKHNhbXBsZS5waXhlbEJ1ZmZlcigpLCBzYW1wbGUucHJlc2VudGF0aW9u
VGltZSgpKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRp
YXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQogewogICAgIENGQXJyYXlSZWYg
YXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50
c0FycmF5KHNhbXBsZUJ1ZmZlciwgdHJ1ZSk7CkBAIC0zNDYsNyArMzQxLDcgQEAgc3RhdGljIHZv
aWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRpYXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyKQogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTM2MSw3ICsz
NTYsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlKENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIE1lZGlhVAogICAgIGNvbnN0ZXhwciBzaXplX3QgZnJh
bWVDb3VudFBlckxvZyA9IDE4MDA7IC8vIGxvZyBldmVyeSBtaW51dGUgYXQgMzAgZnBzCiAgICAg
aWYgKCEobV9mcmFtZVJhdGVNb25pdG9yLmZyYW1lQ291bnQoKSAlIGZyYW1lQ291bnRQZXJMb2cp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBtZXRyaWNzID0gW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIHZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzXSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdl
YlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICgle3B1YmxpY31zKSBtZXRyaWNz
LCB0b3RhbD0lbHUsIGRyb3BwZWQ9JWx1LCBjb3JydXB0ZWQ9JWx1LCBkaXNwbGF5LWNvbXBvc2l0
ZWQ9JWx1LCBub24tZGlzcGxheS1jb21wb3NpdGVkPSVsdSAocGVuZGluZz0lbHUpIiwgbV9sb2dJ
ZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIG1ldHJpY3MudG90YWxOdW1iZXJPZlZpZGVvRnJhbWVz
LCBtZXRyaWNzLm51bWJlck9mRHJvcHBlZFZpZGVvRnJhbWVzLCBtZXRyaWNzLm51bWJlck9mQ29y
cnVwdGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEaXNwbGF5Q29tcG9zaXRlZFZpZGVv
RnJhbWVzLCBtZXRyaWNzLm51bWJlck9mTm9uRGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcywg
bV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKCV7cHVibGljfXMpIG1l
dHJpY3MsIHRvdGFsPSVsdSwgZHJvcHBlZD0lbHUsIGNvcnJ1cHRlZD0lbHUsIGRpc3BsYXktY29t
cG9zaXRlZD0lbHUsIG5vbi1kaXNwbGF5LWNvbXBvc2l0ZWQ9JWx1IChwZW5kaW5nPSVsdSkiLCBt
X2xvZ0lkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgbWV0cmljcy50b3RhbE51bWJlck9mVmlkZW9G
cmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEcm9wcGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVy
T2ZDb3JydXB0ZWRWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJPZkRpc3BsYXlDb21wb3NpdGVk
VmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZOb25EaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJh
bWVzLCBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuc2l6ZSgpKTsKICAgICB9CiAgICAgbV9mcmFt
ZVJhdGVNb25pdG9yLnVwZGF0ZSgpOwogI2VuZGlmCkBAIC0zNzMsNDQgKzM2OCw0NCBAQCB2b2lk
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpvbklycmVndWxhckZyYW1lUmF0ZU5vdGlm
aWNhdGlvbihNb25vdG9uaWNUaQogICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lVGltZSA9IGZy
YW1lVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIGxhc3RGcmFtZVRpbWUgPSBsYXN0
RnJhbWVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgb2JzZXJ2ZWRGcmFtZVJhdGUg
PSBtX2ZyYW1lUmF0ZU1vbml0b3Iub2JzZXJ2ZWRGcmFtZVJhdGUoKSwgZnJhbWVDb3VudCA9IG1f
ZnJhbWVSYXRlTW9uaXRvci5mcmFtZUNvdW50KCksIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIgKCV7cHVibGljfXMpIGF0ICVmLCBwcmV2aW91cyBmcmFtZSB3YXMg
YXQgJWYsIG9ic2VydmVkIGZyYW1lIHJhdGUgaXMgJWYsIGRlbGF5IHNpbmNlIGxhc3QgZnJhbWUg
aXMgJWYgbXMsIGZyYW1lIGNvdW50IGlzICVsdSIsIHdlYWtUaGlzLT5tX2xvZ0lkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSwgZnJhbWVUaW1lLCBsYXN0RnJhbWVUaW1lLCBvYnNlcnZlZEZyYW1lUmF0
ZSwgKGZyYW1lVGltZSAtIGxhc3RGcmFtZVRpbWUpICogMTAwMCwgZnJhbWVDb3VudCk7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpl
bnF1ZXVlVmlkZW9GcmFtZSAoJXtwdWJsaWN9cykgYXQgJWYsIHByZXZpb3VzIGZyYW1lIHdhcyBh
dCAlZiwgb2JzZXJ2ZWQgZnJhbWUgcmF0ZSBpcyAlZiwgZGVsYXkgc2luY2UgbGFzdCBmcmFtZSBp
cyAlZiBtcywgZnJhbWUgY291bnQgaXMgJWx1Iiwgd2Vha1RoaXMtPm1fbG9nSWRlbnRpZmllci51
dGY4KCkuZGF0YSgpLCBmcmFtZVRpbWUsIGxhc3RGcmFtZVRpbWUsIG9ic2VydmVkRnJhbWVSYXRl
LCAoZnJhbWVUaW1lIC0gbGFzdEZyYW1lVGltZSkgKiAxMDAwLCBmcmFtZUNvdW50KTsKICAgICB9
KTsKIH0KICNlbmRpZgogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZW1v
dmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZW1vdmVPbGRWaWRlb0ZyYW1lc0Zyb21QZW5kaW5nUXVldWUoKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKG1fcGVuZGluZ1ZpZGVvU2FtcGxl
UXVldWUuaXNFbXB0eSgpKQorICAgIGlmIChtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9yZW5kZXJQb2xpY3kgPT0gUmVuZGVy
UG9saWN5OjpJbW1lZGlhdGVseSkgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KTsKLSAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
Zmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9G
cmFtZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuZmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOwogICAg
ICAgICBpZiAocHJlc2VudGF0aW9uVGltZS5pc1ZhbGlkKCkgJiYgcHJlc2VudGF0aW9uVGltZSA+
IG5vdykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1
ZXVlLnJlbW92ZUZpcnN0KCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5yZW1v
dmVGaXJzdCgpOwogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFZpZGVvRnJhbWVUb1BlbmRpbmdRdWV1ZShS
ZWY8VmlkZW9GcmFtZT4mJiB2aWRlb0ZyYW1lKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKTsKLSAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChzYW1wbGUpOworICAgIHJlbW92ZU9sZFZpZGVv
RnJhbWVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5h
cHBlbmQoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQogewogICAgIG1fcHJvY2Vzc2luZ1F1
ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
IH0pOwogfQogCkBAIC00MjQsMTMgKzQxOSwxMyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKICAg
ICAgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgICAgICBb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogCi0g
ICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9w
ZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBlbnF1
ZXVlU2FtcGxlQnVmZmVyKHNhbXBsZSk7CisgICAgICAgICAgICAgICAgYXV0byB2aWRlb0ZyYW1l
ID0gbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAg
IGVucXVldWVCdWZmZXIodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uVGltZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAyY2MxN2FkZjhkN2NiNGExZjNlM2M2NTU1MjY0NGRi
NzZjZjZlNTFiLi4xZDkzMWM2ZjlkNDVlZjMwODEwZWEzZjEzZDgwMDIyZWYxMTUzMDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3NTQsNyArMjc1NCw3IEBAIFJlZlB0cjxWaWRlb0Zy
YW1lPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb0ZyYW1lRm9yQ3Vy
cmVudFRpbWUoCiAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQ
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAg
cmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9
KTsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCA1YmU3MDgzZjU0ZjA4ODMzYTRhZmFmNGRlNjhiMTg1NzZhN2NiODRiLi45Yzkx
M2U0ZjQzZjczMDM4ZThjM2IwZDRjMjZjNWJhNTQ5NDJhNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC03NDcsNyArNzQ3LDcgQEAgUmVmUHRyPFZpZGVvRnJhbWU+IE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZW9GcmFtZUZvckN1cnJlbnRUaW0KICAg
ICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAgcmV0dXJuIFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9KTsKIH0KIAog
RGVzdGluYXRpb25Db2xvclNwYWNlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6Y29sb3JTcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDkyZGFkMzA5ZmJj
YWY5NDE2M2M3MzkwZTljZmRiNGMwNzY0MDI1ZmEuLjBlNzQxODdjMTMwZDVkYzZmZWNlZGY3ZjY3
ZThiMTkxMGJmMmMzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yOCw5ICsyOCw5
IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
IGZpbmFsCiAgICAgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAgICAgLCBw
cml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW9GcmFtZU9ic2VydmVyCiAgICAgLCBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpDbGllbnQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiB7CkBAIC0xMzYsOSArMTM2
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmx1c2hSZW5kZXJlcnMoKTsKIAotICAgIHZvaWQg
cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7Ci0gICAgdm9pZCBlbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmKTsK
LSAgICB2b2lkIHJlZW5xdWV1ZUN1cnJlbnRWaWRlb1NhbXBsZUlmTmVlZGVkKCk7CisgICAgdm9p
ZCBwcm9jZXNzTmV3VmlkZW9GcmFtZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7Cisg
ICAgdm9pZCByZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAKICAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMjEx
LDggKzIxMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKIAotICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgotICAgIHZvaWQgdmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAg
ICAvLyBSZWFsdGltZU1lZGlhU291Y2U6OlZpZGVvRnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlk
ZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CiAKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIAog
ICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7Ci0gICAgICAgIFJlZlB0cjxNZWRp
YVNhbXBsZT4gbWVkaWFTYW1wbGU7CisgICAgICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiB2aWRlb0Zy
YW1lOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gcGl4
ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKICAgICBDdXJyZW50RnJhbWVQYWludGVyIG1faW1h
Z2VQYWludGVyOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gV3JpdHRlbiBv
biBtYWluIHRocmVhZCwgcmVhZCBvbiBzYW1wbGUgdGhyZWFkLgogICAgIGJvb2wgbV9jYW5FbnF1
ZXVlRGlzcGxheUxheWVyIHsgZmFsc2UgfTsKICAgICAvLyBVc2VkIG9uIHNhbXBsZSB0aHJlYWQu
Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBt
X3ZpZGVvUm90YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wg
bV92aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9n
Z2VyOwpAQCAtMjcyLDggKzI3Miw4IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8V2ViUm9v
dFNhbXBsZUJ1ZmZlckJvdW5kc0NoYW5nZUxpc3RlbmVyPiBtX2JvdW5kc0NoYW5nZUxpc3RlbmVy
OwogCi0gICAgTG9jayBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2s7Ci0gICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBtX2N1cnJlbnRWaWRlb1NhbXBsZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY3VycmVu
dFZpZGVvU2FtcGxlTG9jayk7CisgICAgTG9jayBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jazsKKyAg
ICBSZWZQdHI8VmlkZW9GcmFtZT4gbV9jdXJyZW50VmlkZW9GcmFtZSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fY3VycmVudFZpZGVvRnJhbWVMb2NrKTsKIAogICAgIGJvb2wgbV9wbGF5aW5nIHsgZmFs
c2UgfTsKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IDRkZDgxYmFhZjk1ODkwNWU2YWI5NjkyMWZiZmRjZDU3ZGQwZDIwNDMuLmU0NjQ2
ZDZiM2RjNTg2NzkxYjViZmIxZDNkYWNhMTQ1YzFkZDJhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EuaCIKICNpbXBvcnQgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2ltcG9ydCAi
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMTYwLDcgKzE1OSw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQygpCiAgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKIAogICAgIGlmIChtX2FjdGl2ZVZpZGVvVHJhY2spCi0gICAgICAgIG1fYWN0aXZlVmlk
ZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICAgICAgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJj
ZSgpLnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAKICAgICBbbV9ib3VuZHNDaGFu
Z2VMaXN0ZW5lciBpbnZhbGlkYXRlXTsKIApAQCAtMjI5LDI5ICsyMjgsMjkgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1
cHBvcnRzVHlwZShjb24KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTYW1wbGVCdWZm
ZXIgTWV0aG9kcwogCi1zdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNm
b3JtYXRpb25NYXRyaXgoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3N0YXRpYyBpbmxpbmUgQ0dBZmZp
bmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChWaWRlb0ZyYW1lJiB2aWRlb0Zy
YW1lKQogewotICAgIGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAg
YXV0byBzaXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CiAgICAgc2l6ZV90IHdp
ZHRoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpOwogICAgIHNpemVfdCBoZWln
aHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUuaGVpZ2h0KCkpOwogICAgIGlmICghd2lkdGgg
fHwgIWhlaWdodCkKICAgICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CiAK
LSAgICBhdXRvIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24o
c3RhdGljX2Nhc3Q8aW50PihzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAxODApOwot
ICAgIGlmIChzYW1wbGUudmlkZW9NaXJyb3JlZCgpKQorICAgIGF1dG8gdmlkZW9UcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxpbnQ+KHZpZGVvRnJh
bWUucm90YXRpb24oKSkgKiBNX1BJIC8gMTgwKTsKKyAgICBpZiAodmlkZW9GcmFtZS5pc01pcnJv
cmVkKCkpCiAgICAgICAgIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh2
aWRlb1RyYW5zZm9ybSwgLTEsIDEpOwogCiAgICAgcmV0dXJuIHZpZGVvVHJhbnNmb3JtOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRh
ZGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBwcm9jZXNzTmV3VmlkZW9TYW1wbGUo
c2FtcGxlLCBtZXRhZGF0YSwgcHJlc2VudGF0aW9uVGltZSk7Ci0gICAgZW5xdWV1ZVZpZGVvU2Ft
cGxlKHNhbXBsZSk7CisgICAgcHJvY2Vzc05ld1ZpZGVvRnJhbWUodmlkZW9GcmFtZSwgbWV0YWRh
dGEsIHByZXNlbnRhdGlvblRpbWUpOworICAgIGVucXVldWVWaWRlb0ZyYW1lKHZpZGVvRnJhbWUp
OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSkKIHsKICAgICBpZiAoIW1faXNQYWdlVmlzaWJsZSB8fCAhbV9pc1Zpc2libGVJblZpZXdQ
b3J0KQogICAgICAgICByZXR1cm47CkBAIC0yNjMsNTIgKzI2Miw1MiBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU2Ft
cGxlJiBzYW1wbAogICAgIGlmICghbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyIHx8ICFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciB8fCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFp
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSAh
PSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWly
cm9yZWQpIHsKLSAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24o
KTsKLSAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVvTWlycm9yZWQoKTsKKyAg
ICBpZiAodmlkZW9GcmFtZS5yb3RhdGlvbigpICE9IG1fdmlkZW9Sb3RhdGlvbiB8fCB2aWRlb0Zy
YW1lLmlzTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQpIHsKKyAgICAgICAgbV92aWRlb1Jv
dGF0aW9uID0gdmlkZW9GcmFtZS5yb3RhdGlvbigpOworICAgICAgICBtX3ZpZGVvTWlycm9yZWQg
PSB2aWRlb0ZyYW1lLmlzTWlycm9yZWQoKTsKICAgICAgICAgbV9zaG91bGRVcGRhdGVEaXNwbGF5
TGF5ZXIgPSB0cnVlOwogICAgIH0KICAgICBpZiAobV9zaG91bGRVcGRhdGVEaXNwbGF5TGF5ZXIp
IHsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUFmZmluZVRyYW5z
Zm9ybSh2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSkpOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQWZmaW5lVHJhbnNmb3JtKHZpZGVvVHJhbnNmb3Jt
YXRpb25NYXRyaXgodmlkZW9GcmFtZSkpOwogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+dXBkYXRlQm91bmRzQW5kUG9zaXRpb24obV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PnJvb3RMYXllcigpLmJvdW5kcywgbV92aWRlb1JvdGF0aW9uKTsKICAgICAgICAgbV9zaG91bGRV
cGRhdGVEaXNwbGF5TGF5ZXIgPSBmYWxzZTsKICAgICB9CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShzYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLT5lbnF1ZXVlVmlkZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZW5xdWV1ZUN1cnJlbnRWaWRlb1Nh
bXBsZUlmTmVlZGVkKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpyZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fY3Vy
cmVudFZpZGVvU2FtcGxlTG9jay50cnlMb2NrKCkpCisgICAgaWYgKCFtX2N1cnJlbnRWaWRlb0Zy
YW1lTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
QWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgQWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jayB9OwogCi0gICAgaWYgKCFtX2N1
cnJlbnRWaWRlb1NhbXBsZSAmJiAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYg
KCFtX2N1cnJlbnRWaWRlb0ZyYW1lICYmICFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVmlkZW9TYW1wbGUobV9jdXJyZW50VmlkZW9TYW1w
bGUgPyAqbV9jdXJyZW50VmlkZW9TYW1wbGUgOiAqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
OworICAgIGVucXVldWVWaWRlb0ZyYW1lKG1fY3VycmVudFZpZGVvRnJhbWUgPyAqbV9jdXJyZW50
VmlkZW9GcmFtZSA6ICptX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhLCBTZWNv
bmRzIHByZXNlbnRhdGlvblRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSwgU2Vjb25kcyBwcmVzZW50YXRpb25UaW1lKQog
ewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fY3VycmVudFZpZGVvU2FtcGxlTG9jayB9OwotICAgICAgICAgICAgbV9j
dXJyZW50VmlkZW9TYW1wbGUgPSAmc2FtcGxlOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICBtX2N1cnJlbnRWaWRlb0Zy
YW1lID0gJnZpZGVvRnJhbWU7CiAgICAgICAgIH0KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWVd
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7CisgICAg
ICAgICAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdmlkZW9GcmFtZTsKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vha1RoaXMtPm1fY3VycmVudFZpZGVvU2Ft
cGxlTG9jayB9OwotICAgICAgICAgICAgICAgIHNhbXBsZSA9IFdURk1vdmUod2Vha1RoaXMtPm1f
Y3VycmVudFZpZGVvU2FtcGxlKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vh
a1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICAgICAgdmlkZW9G
cmFtZSA9IFdURk1vdmUod2Vha1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICBpZiAoIXZpZGVvRnJh
bWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB3ZWFrVGhpcy0+cHJv
Y2Vzc05ld1ZpZGVvU2FtcGxlKCpzYW1wbGUsIG1ldGFkYXRhLCBwcmVzZW50YXRpb25UaW1lKTsK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzTmV3VmlkZW9GcmFtZSgqdmlkZW9GcmFtZSwg
bWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTMxNiwxNiArMzE1LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhCiAg
ICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUgfHwgbV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFn
ZSkgewotICAgICAgICBtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSA9ICZzYW1wbGU7CisgICAg
aWYgKCFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lIHx8IG1fZGlzcGxheU1vZGUgIT0gUGF1c2Vk
SW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSA9ICZ2aWRlb0ZyYW1l
OwogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkK
ICAgICAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKICAgICB9CiAKICAgICBtX3ByZXNlbnRh
dGlvblRpbWUgPSBwcmVzZW50YXRpb25UaW1lOwotICAgIG1fdmlkZW9GcmFtZVNpemUgPSBzYW1w
bGUucHJlc2VudGF0aW9uU2l6ZSgpOwotICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpID09
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IHNhbXBsZS52aWRlb1JvdGF0aW9u
KCkgPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIG1fdmlkZW9GcmFt
ZVNpemUgPSB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICBpZiAodmlkZW9GcmFt
ZS5yb3RhdGlvbigpID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHZpZGVvRnJhbWUu
cm90YXRpb24oKSA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAgIG1fdmlk
ZW9GcmFtZVNpemUgPSB7IG1fdmlkZW9GcmFtZVNpemUuaGVpZ2h0KCksIG1fdmlkZW9GcmFtZVNp
emUud2lkdGgoKSB9OwogICAgIG1fc2FtcGxlTWV0YWRhdGEgPSBtZXRhZGF0YTsKICAgICArK21f
c2FtcGxlQ291bnQ7CkBAIC0zNjAsOCArMzU5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBp
ZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmRpZEZhaWwoKSkgewogICAgICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgICAgICBpZiAo
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCi0gICAgICAgICAgICBlbnF1ZXVlVmlkZW9TYW1w
bGUoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICAgICAgaWYgKG1faW1hZ2VQYWlu
dGVyLnZpZGVvRnJhbWUpCisgICAgICAgICAgICBlbnF1ZXVlVmlkZW9GcmFtZSgqbV9pbWFnZVBh
aW50ZXIudmlkZW9GcmFtZSk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiAgICAgfQog
fQpAQCAtNTY5LDcgKzU2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpwbGF5KCkKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAg
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wbGF5KCk7CiAgICAgdXBkYXRlRGlzcGxh
eU1vZGUoKTsKLSAgICByZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpOworICAg
IHJlZW5xdWV1ZUN1cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKTsKIAogICAgIHNjaGVkdWxlRGVm
ZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKQEAgLTY0MSw3
ICs2NDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
UGFnZUlzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKIAogICAgIG1faXNQYWdlVmlzaWJsZSA9IGlz
VmlzaWJsZTsKICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgIHJlZW5xdWV1ZUN1cnJlbnRWaWRl
b1NhbXBsZUlmTmVlZGVkKCk7CisgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJhbWVJZk5lZWRl
ZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlzaWJsZUZvckNhbnZhcyhib29sKQpAQCAtNjgxLDcgKzY4MCw3IEBAIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudFJl
YWR5U3RhdGUoCiAgICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVh
bVByaXZhdGUtPmFjdGl2ZSgpIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+aGFzVHJhY2tzKCkp
CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAK
LSAgICBib29sIHdhaXRpbmdGb3JJbWFnZSA9IGFjdGl2ZVZpZGVvVHJhY2soKSAmJiAhbV9pbWFn
ZVBhaW50ZXIubWVkaWFTYW1wbGU7CisgICAgYm9vbCB3YWl0aW5nRm9ySW1hZ2UgPSBhY3RpdmVW
aWRlb1RyYWNrKCkgJiYgIW1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWU7CiAgICAgaWYgKHdhaXRp
bmdGb3JJbWFnZSAmJiAoIW1faGF2ZVNlZW5NZXRhZGF0YSB8fCBtX3dhaXRpbmdGb3JGaXJzdElt
YWdlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGlu
ZzsKIApAQCAtNzQwLDcgKzczOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpzY2hlZHVsZVJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKICAgICBzY2hlZHVsZURl
ZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBt
X3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKLSAgICAgICAgcmVlbnF1ZXVlQ3VycmVu
dFZpZGVvU2FtcGxlSWZOZWVkZWQoKTsKKyAgICAgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJh
bWVJZk5lZWRlZCgpOwogICAgIH0pOwogfQogCkBAIC04OTQsNyArODkzLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNr
KCkKIAogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewogICAgICAgICBpZiAo
IW1fYWN0aXZlVmlkZW9UcmFjaykKLSAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5jbGVhckVucXVldWVkU2FtcGxlcygpOworICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmNsZWFyVmlkZW9GcmFtZXMoKTsKICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPnVwZGF0ZURpc3BsYXlNb2RlKGhpZGVWaWRlb0xheWVyIHx8IG1fZGlzcGxh
eU1vZGUgPCBQYXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigpKTsKICAgICB9CiAKQEAgLTkwMiwx
MSArOTAxLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
aGVja1NlbGVjdGVkVmlkZW9UcmFjaygpCiAKICAgICBpZiAob2xkVmlkZW9UcmFjayAhPSBtX2Fj
dGl2ZVZpZGVvVHJhY2spIHsKICAgICAgICAgaWYgKG9sZFZpZGVvVHJhY2spCi0gICAgICAgICAg
ICBvbGRWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgb2xkVmlkZW9UcmFjay0+c3RyZWFtVHJhY2so
KS5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAo
bV9hY3RpdmVWaWRlb1RyYWNrKSB7CiAgICAgICAgICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgJiYgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLmlz
Q2FwdHVyZVNvdXJjZSgpKQogICAgICAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5zZXRSZW5kZXJQb2xpY3koU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW5kZXJQb2xp
Y3k6OkltbWVkaWF0ZWx5KTsKLSAgICAgICAgICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFt
VHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAg
ICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb0Zy
YW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAib2JzZXJ2aW5nIHZpZGVvIHNvdXJjZSAiLCBtX2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRy
YWNrKCkubG9nSWRlbnRpZmllcigpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTk4Nyw3ICs5ODYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogewotICAgIGlmICht
X2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAg
ICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZl
ckNvbmZvcm1lcikKQEAgLTk5Nyw3ICs5OTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgIGlmICghbV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvIHBpeGVsQnVmZmVyID0gbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBpeGVs
QnVmZmVyKCkpCisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlUGFpbnRlci52aWRl
b0ZyYW1lLT5waXhlbEJ1ZmZlcigpKQogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+
Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIApAQCAtMTAwNiw3
ICsxMDA1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAobV9kaXNwbGF5TW9k
ZSA9PSBOb25lIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBQYWlu
dEl0QmxhY2sgJiYgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYgKG1fZGlzcGxh
eU1vZGUgIT0gUGFpbnRJdEJsYWNrICYmIG1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpCiAgICAg
ICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC0xMDE1LDEyICsxMDE0LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAg
IGlmICghbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5j
Z0ltYWdlOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIGlt
YWdlLT5zaXplKCkgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAg
QWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJp
eCgqbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSk7CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVk
RGVzdFJlY3QgPSB2YWx1ZU9yRGVmYXVsdCh2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5z
Zm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CkBAIC0xMDMyLDEyICsxMDMxLDcgQEAgUmVmUHRy
PFZpZGVvRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9G
cmFtZUZvckN1cnJlbnRUaW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKG1fZGlz
cGxheU1vZGUgPT0gUGFpbnRJdEJsYWNrKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpZiAoaXM8VmlkZW9GcmFtZT4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKSkKLSAg
ICAgICAgcmV0dXJuICZkb3duY2FzdDxWaWRlb0ZyYW1lPigqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwotICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSkpOwotICAgIHJldHVybiBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+
KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkudmlkZW9GcmFtZSgpOworICAgIHJldHVybiBt
X2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjb2xvclNwYWNlKCkKQEAgLTExMTEs
NyArMTEwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
Y2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogewog
ICAgIGNnSW1hZ2UgPSBudWxscHRyOwotICAgIG1lZGlhU2FtcGxlID0gbnVsbHB0cjsKKyAgICB2
aWRlb0ZyYW1lID0gbnVsbHB0cjsKICAgICBwaXhlbEJ1ZmZlckNvbmZvcm1lciA9IG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXgg
NWRjZmMwMmRhMWI4YjNmYzE2NDZjYjIyMWY5MTJmMTJiZDFlZDlmMi4uNmM1YWU1MzNiODdmMDA1
MzRhN2VlZTRlZGFlODVhY2FmMDZlMjNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmgKQEAgLTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+
PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRp
c3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBWaWRlb1JvdGF0aW9uIHZpZGVv
Um90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvdGF0aW9uOyB9Ci0gICAgYm9v
bCB2aWRlb01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3JlZDsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5h
bDsKKyAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbWlycm9yZWQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCBwaXhlbEZvcm1h
dCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVy
c2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggYTA0NTg3MGVkN2U2ODdk
MjFmMzM3OTE0MGIyODA0NjZlYTMxZjkyOC4uMTMxMWIzMzcxOGE4NGUzM2QxMzkzMTEzMDJkMDQ3
NWZkOTYzYzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQz
Ml90IE1lZGlhU2FtcGxlQVZGT2JqQzo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit1aW50MzJf
dCBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7CiAgICAgcmV0dXJuIENWUGl4ZWxC
dWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KaW5kZXggMDNmN2U0NTNjMmY0ZTFhOWM3ZDlmNTAyZmNmMjVmYTM1OGIzMzYz
OC4uNzE1NDJmNzliN2MyZDMzNjI5OWZjYzJhZDUyZTkzMWIyMGVkYzQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCkBAIC03ODEsNyArNzgxLDcgQEAgUmVmUHRyPFZpZGVvRnJh
bWU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb1ZpZGVv
RnJhbWUoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobV9yZXNvdXJjZU93bmVy
KQogICAgICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIobWVkaWFTYW1w
bGVQaXhlbEJ1ZmZlci5nZXQoKSwgbV9yZXNvdXJjZU93bmVyKTsKLSAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUoeyB9LCBmYWxzZSwgVmlkZW9GcmFtZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgV1RGTW92ZShtZWRpYVNhbXBsZVBpeGVsQnVmZmVyKSk7CisgICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKHsgfSwgZmFsc2UsIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBXVEZN
b3ZlKG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZU
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vz
c2lvblZULmgKaW5kZXggZDM4OTE5ODFlODVlODAzZGY4NGU1MDU3MGIyZDQwYWQ0MmVjMTU4Ny4u
NzM5MjQ0NmExMDUyMDIxZDg5ZDA0ZWNmYmI0ZmVjYmZhZDRiNjc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25T
ZXNzaW9uVlQuaApAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZm
ZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFZpZGVvRnJhbWU7CiAKIGNsYXNzIEltYWdlUm90YXRp
b25TZXNzaW9uVlQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTaXplJiByb3RhdGVkU2l6ZSgpIHsg
cmV0dXJuIG1fcm90YXRlZFNpemU7IH0KIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiByb3RhdGUoQ1ZQaXhlbEJ1ZmZlclJlZik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZShNZWRpYVNhbXBsZSYsIGNvbnN0IFJvdGF0aW9uUHJv
cGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGUoVmlkZW9GcmFtZSYsIGNvbnN0IFJvdGF0aW9u
UHJvcGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBGbG9hdFNpemUsIElzQ0dJbWFn
ZUNvbXBhdGlibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW0KaW5kZXggM2VhYjA2ODllOTA0
NTFhZDQ1OGNlZjM4OTY5NGZmOWU2OWIwNmY3Ni4uYTI2YWY4MWQ2MTk0MjZhYWVlOTczNzkxZjNm
MDUyOGE5Mzc3ZjM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW1wb3J0ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAi
VmlkZW9GcmFtZS5oIgogCiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCAi
VmlkZW9Ub29sYm94U29mdExpbmsuaCIKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoTWVkaWFTYW1wbGUmIHZpZGVv
RnJhbWUsIGNvbnN0IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBh
dGlibGUgY2dJbWFnZUNvbXBhdGlibGUpCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0
IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBhdGlibGUgY2dJbWFn
ZUNvbXBhdGlibGUpCiB7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHZpZGVvRnJhbWUucGl4ZWxC
dWZmZXIoKTsKICAgICBBU1NFUlQocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
CmluZGV4IGJhODEwNGQ2OTgxNGI0ZDgxYTJjNTk0MDllNWUyZGZmN2EzNTQ5YzcuLmQyMDUxMzQw
YThhMTU0OTczNDM0YmZmYmQyOGJmNGY2NzVlZTkwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4obmV3IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQo
cGl4ZWxGb3JtYXQsIHNob3VsZFVzZUlPU3VyZmFjZSkpOwogICAgIH0KIAotICAgIFJlZlB0cjxN
ZWRpYVNhbXBsZT4gY29udmVydFZpZGVvRnJhbWUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXpl
Jik7Ci0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVm
LCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9
IGZhbHNlKTsKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2Ft
cGxlQnVmZmVyUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9v
bCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY29udmVydFZpZGVv
RnJhbWUoVmlkZW9GcmFtZSYsIGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFt
ZT4gY3JlYXRlVmlkZW9GcmFtZShDR0ltYWdlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJ
bnRTaXplJiwgVmlkZW9GcmFtZTo6Um90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9u
ZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY3JlYXRl
VmlkZW9GcmFtZShDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50
U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUs
IGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShJ
T1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29s
IG1pcnJvcmVkID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0ZyYW1l
PiBjcmVhdGVWaWRlb0ZyYW1lKElPU3VyZmFjZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
SW50U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5v
bmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAjZW5kaWYKIAogICAgIHVpbnQzMl90IHBpeGVs
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0KaW5kZXggOGI2ZDc5NDU1YWI3MzMyYzM0Mzk5MjgxNDkzM2M2MDVmOTc5Y2M2ZC4u
YTczNTg2ZDlkNjljYzVmMTZlOTkzMTU2YTE3YzBkZGQyZmJlMmJiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVDTVNhbXBsZUJ1ZmZlcihJT1N1cmYK
IH0KICNlbmRpZgogCi1SZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNvbnZlcnRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBjb25zdCBJbnRTaXpl
JiBzaXplKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZl
cnRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgaWYgKHNpemUgPT0gZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0
aW9uU2l6ZSgpKSkKICAgICAgICAgcmV0dXJuICZ2aWRlb0ZyYW1lOwpAQCAtMjY0LDExICsyNjQs
MTEgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0
VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW8KICAgICBpZiAoIXJlc2l6ZWRCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRl
KHZpZGVvRnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb0ZyYW1lLnZpZGVvTWlycm9yZWQo
KSwgdmlkZW9GcmFtZS52aWRlb1JvdGF0aW9uKCksIFdURk1vdmUocmVzaXplZEJ1ZmZlcikpOwor
ICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRp
bWUoKSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgV1RG
TW92ZShyZXNpemVkQnVmZmVyKSk7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi1S
ZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2Ft
cGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNv
bnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBi
b29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNyZWF0ZVZpZGVvRnJhbWUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IE1lZGlhVGltZSYg
c2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVD
TVNhbXBsZUJ1ZmZlcihzdXJmYWNlLCBzYW1wbGVUaW1lLCBzaXplKTsKICAgICBpZiAoIXNhbXBs
ZUJ1ZmZlcikKQEAgLTI3OCw3ICsyNzgsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYQogfQog
I2VuZGlmCiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlTWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVU
aW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbiwgYm9vbCBtaXJyb3JlZCkKK1JlZlB0cjxWaWRlb0ZyYW1lPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGVWaWRlb0ZyYW1lKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IE1lZGlhVGlt
ZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24g
cm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVh
dGVDTVNhbXBsZUJ1ZmZlcihpbWFnZSwgc2FtcGxlVGltZSwgc2l6ZSk7CiAgICAgaWYgKCFzYW1w
bGVCdWZmZXIpCkBAIC0yODcsNyArMjg3LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmIGltYWdlLAogICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIG1pcnJvcmVk
LCByb3RhdGlvbik7CiB9CiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyLCBjb25zdCBN
ZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+
IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZVZpZGVvRnJhbWUoQ01TYW1wbGVCdWZmZXJS
ZWYgYnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNp
emUsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQogewogICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gY29udmVydENNU2FtcGxlQnVmZmVyKGJ1ZmZlciwgc2l6ZSwg
JnNhbXBsZVRpbWUpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAppbmRleCA5M2EzZTcxNTdl
NjFmNTA5MTA1MmJmM2Y1ZjQwNGNmMDkyNjgxYzg0Li4wY2QyZTEwOWJjNzg2MDM1YTVhZGYxOTY0
YzFjZTM5ZGYxZTY5Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlZpZGVv
RnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLXVzaW5nIENWUGl4ZWxCdWZm
ZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7Cit1c2luZyBDTVNhbXBsZUJ1ZmZlclJlZiA9IHN0
cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzksOCArMzksOCBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3MgVmlkZW9GcmFtZUNWIDog
cHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wg
aXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0ZyYW1lQ1Y+IGNyZWF0ZShNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFt
ZUNWPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24p
OwogICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GcmFtZUNWPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWVDVigpOwogCkBA
IC01MiwyNyArNTIsMjYgQEAgcHVibGljOgogCiAgICAgLy8gVmlkZW9GcmFtZSBvdmVycmlkZXMu
CiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUo
KSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB2aWRlb1BpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3QgcGl4ZWxGb3Jt
YXQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElk
ZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogICAgIGJvb2wgaXNDVigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpIGZpbmFsOwogCiBwcml2YXRlOgot
ICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZUNWKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4mJik7CiAKICAgICBjb25zdCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
bV9waXhlbEJ1ZmZlcjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVmlk
ZW9GcmFtZUNWOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1fcHJlc2VudGF0aW9uVGltZSA8PCBtX2lzTWlycm9yZWQgPDwgbV9yb3RhdGlvbiA8PCBt
X3BpeGVsQnVmZmVyOworICAgIGVuY29kZXIgPDwgcHJlc2VudGF0aW9uVGltZSgpIDw8IGlzTWly
cm9yZWQoKSA8PCByb3RhdGlvbigpIDw8IG1fcGl4ZWxCdWZmZXI7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFZpZGVvRnJhbWVDVj4+IFZpZGVv
RnJhbWVDVjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcmVzZW50YXRp
b25UaW1lID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8TWVkaWFUaW1lPigpOwogICAgIGF1dG8g
aXNNaXJyb3JlZCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPGJvb2w+KCk7Ci0gICAgYXV0byBy
b3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFZpZGVvUm90YXRpb24+KCk7CisgICAg
YXV0byByb3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFJvdGF0aW9uPigpOwogICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4+KCk7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSB8fCAhKnBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODMsNyArODIsNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxWaWRlb0ZyYW1l
Q1Y+PiBWaWRlb0ZyYW1lQ1Y6OmRlYwogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlZpZGVvRnJhbWVDVikKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlkZW9GcmFtZS5pc0NWKCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlh
U2FtcGxlKSB7IHJldHVybiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYg
aXM8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPihkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lPiht
ZWRpYVNhbXBsZSkpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFt
ZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNW
Lm1tCmluZGV4IGFiZDdlMmZjODk3YjA3MWJiMGI1ZmYzOTc2ZDk5ZjBjMTllMTQ0NmMuLmJmZmUy
YjRiZDZiNTU3YTI4Nzk4Y2IyZGVjMTJiYjlkNDg2M2M4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0Zy
YW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaXJy
b3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1JlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgYm9vbCBpc01pcnJv
cmVkLCBSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KHNhbXBsZUJ1ZmZlcikpOwogICAgIGF1dG8gdGltZVN0YW1wID0gUEFMOjpDTVNhbXBsZUJ1ZmZl
ckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOwpAQCAtNDQsNyAr
NDQsNyBAQCBSZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaQogICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6
OmNyZWF0ZShQQUw6OnRvTWVkaWFUaW1lKHRpbWVTdGFtcCksIGlzTWlycm9yZWQsIHJvdGF0aW9u
LCBwaXhlbEJ1ZmZlcik7CiB9CiAKLVJlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90
YXRpb24gcm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVy
KQorUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24sIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyKQogewogICAgIEFTU0VSVChwaXhlbEJ1
ZmZlcik7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUNWKHByZXNlbnRhdGlv
blRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uLCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSkpOwpAQCAt
NzMsMTAgKzczLDEwIEBAIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3JlYXRl
RnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7Ci0gICAg
cmV0dXJuIGNyZWF0ZSh7IH0sIGZhbHNlLCBWaWRlb1JvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKGN2
UGl4ZWxCdWZmZXIpKTsKKyAgICByZXR1cm4gY3JlYXRlKHsgfSwgZmFsc2UsIFJvdGF0aW9uOjpO
b25lLCBXVEZNb3ZlKGN2UGl4ZWxCdWZmZXIpKTsKIH0KIAotVmlkZW9GcmFtZUNWOjpWaWRlb0Zy
YW1lQ1YoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9S
b3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZm
ZXIpCitWaWRlb0ZyYW1lQ1Y6OlZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIpCiAgICAgOiBWaWRlb0ZyYW1lKHByZXNlbnRhdGlvblRp
bWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uKQogICAgICwgbV9waXhlbEJ1ZmZlcihXVEZNb3ZlKHBp
eGVsQnVmZmVyKSkKIHsKQEAgLTg5LDcgKzg5LDcgQEAgV2ViQ29yZTo6RmxvYXRTaXplIFZpZGVv
RnJhbWVDVjo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX3BpeGVsQnVmZmVyLmdldCgpKSksIHN0
YXRpY19jYXN0PGZsb2F0PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fcGl4ZWxCdWZmZXIuZ2V0
KCkpKSB9OwogfQogCi11aW50MzJfdCBWaWRlb0ZyYW1lQ1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBj
b25zdAordWludDMyX3QgVmlkZW9GcmFtZUNWOjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUobV9waXhlbEJ1ZmZlci5nZXQo
KSk7CiB9CkBAIC0xMDIsMjMgKzEwMiwxOCBAQCB2b2lkIFZpZGVvRnJhbWVDVjo6c2V0T3duZXJz
aGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogICAgIHNl
dE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihidWZmZXIsIHJlc291cmNlT3duZXIp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmFzVmlk
ZW9GcmFtZUNWKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQogSW1hZ2VPcmllbnRhdGlvbiBW
aWRlb0ZyYW1lQ1Y6Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICAvLyBTYW1wbGUgdHJhbnNm
b3JtIGZpcnN0IGZsaXBzIHgtY29vcmRpbmF0ZXMsIHRoZW4gcm90YXRlcy4KLSAgICBzd2l0Y2gg
KG1fcm90YXRpb24pIHsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
OgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2lu
VG9wUmlnaHQgOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OwotICAgIGNhc2UgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4gbV9pc01pcnJv
cmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5SaWdodFRvcDsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpVcHNpZGVEb3duOgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJp
Z2h0OwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6Ci0gICAgICAg
IHJldHVybiBtX2lzTWlycm9yZWQgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDog
SW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbTsKKyAgICBzd2l0Y2ggKHJvdGF0aW9u
KCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wUmlnaHQgOiBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRp
b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlv
bjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDsK
KyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IElt
YWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6
Um90YXRpb246OkxlZnQ6CisgICAgICAgIHJldHVybiBpc01pcnJvcmVkKCkgPyBJbWFnZU9yaWVu
dGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDogSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRv
bTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcAppbmRleCBl
OTU1ZTA0MmY4NWY5YzNjMTZmYjJkYTgzYjkzNWI3N2Q5Mzk0NTRmLi5iOWQzOGYwNDc0OGRkMTNi
M2Q0ZmQyZTMyNjcwODYzNTg1N2YyNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFt
ZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFZp
ZGVvRnJhbWVHU3RyZWFtZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1
ZmZlcihQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRh
dGlvblRpbWUsIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSwgZG91YmxlIGZyYW1lUmF0
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIHN0ZDo6
b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0YSkKK1JlZjxWaWRlb0Zy
YW1lR1N0cmVhbWVyPiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlciwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25U
aW1lLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUsIGRvdWJsZSBmcmFtZVJhdGUsIFJv
dGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxW
aWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogewogICAgIGVuc3VyZUdTdHJlYW1l
ckluaXRpYWxpemVkKCk7CiAKQEAgLTg1LDcgKzg1LDcgQEAgUmVmPFZpZGVvRnJhbWVHU3RyZWFt
ZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZl
ciYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lR1N0cmVhbWVyKFdURk1vdmUo
c2FtcGxlKSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBwcmVzZW50YXRpb25UaW1lLCB2aWRl
b1JvdGF0aW9uLCB2aWRlb01pcnJvcmVkLCBXVEZNb3ZlKG1ldGFkYXRhKSkpOwogfQogCi1WaWRl
b0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYm
IHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRp
bWUmIHByZXNlbnRhdGlvblRpbWUsIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiwgYm9vbCB2
aWRlb01pcnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0
YWRhdGEpCitWaWRlb0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBj
b25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24s
IGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
PiYmIG1ldGFkYXRhKQogICAgIDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCB2aWRlb01p
cnJvcmVkLCB2aWRlb1JvdGF0aW9uKQogICAgICwgbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQog
ICAgICwgbV9wcmVzZW50YXRpb25TaXplKHByZXNlbnRhdGlvblNpemUpCkBAIC05OCw3ICs5OCw3
IEBAIFZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoR1JlZlB0cjxHc3RT
YW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hCiAgICAgICAgIGJ1ZmZlciA9IHdlYmtpdEdzdEJ1
ZmZlclNldFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEoYnVmZmVyLCBXVEZNb3ZlKG1ldGFkYXRhKSk7
CiB9CiAKLVZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1Jl
ZlB0cjxHc3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGlt
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQorVmlkZW9GcmFtZUdTdHJlYW1lcjo6Vmlk
ZW9GcmFtZUdTdHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNhbXBsZSwgY29uc3Qg
TWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBSb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQogICAg
IDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBmYWxzZSwgdmlkZW9Sb3RhdGlvbikKICAg
ICAsIG1fc2FtcGxlKHNhbXBsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCmlu
ZGV4IDExYmY5MDJjMDBjMWE5MzIxM2E1OTA1Yjc4ZjI4OWI3M2Y4MTQ2MTMuLjFjODBjMjJlMDI2
NjU5NjZkMTdiOThhODZjMTI1MjZlMTZmYjkwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3Ry
ZWFtZXIuaApAQCAtMzAsMjYgKzMwLDI3IEBAIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBW
aWRlb0ZyYW1lR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0U2Ft
cGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBN
ZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIFZp
ZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlk
ZW9NaXJyb3JlZCA9IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+
JiYgbWV0YWRhdGEgPSBzdGQ6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hdFNp
emUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSA9
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFJvdGF0
aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUdTdHJlYW1lcihXVEZNb3ZlKHNh
bXBsZSksIHByZXNlbnRhdGlvblNpemUsIHByZXNlbnRhdGlvblRpbWUsIHZpZGVvUm90YXRpb24s
IHZpZGVvTWlycm9yZWQsIFdURk1vdmUobWV0YWRhdGEpKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0IEdSZWZQ
dHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUs
IFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpCisgICAg
c3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlv
blRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVHU3RyZWFtZXIoc2FtcGxlLCBw
cmVzZW50YXRpb25UaW1lLCB2aWRlb1JvdGF0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJl
ZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXIm
JiwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFt
ZVJhdGUgPSAxLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpO
b25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgUmVm
PFZpZGVvRnJhbWVHU3RyZWFtZXI+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYm
LCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCksIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSA9IHsgfSwgZG91YmxlIGZyYW1l
UmF0ZSA9IDEsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSwgYm9vbCB2
aWRlb01pcnJvcmVkID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0
YT4mJiBtZXRhZGF0YSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBHc3RTYW1wbGUqIHNhbXBsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9G
cmFtZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiwgY29uc3QgRmxvYXRTaXplJiBwcmVz
ZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCksIFZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBi
b29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKLSAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpOworICAgIFZpZGVvRnJhbWVHU3Ry
ZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9u
U2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQg
PSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmID0gc3RkOjpu
dWxsb3B0KTsKKyAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxl
PiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gPSBSb3RhdGlv
bjo6Tm9uZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3Qg
cGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAKICAgICBHUmVmUHRyPEdz
dFNhbXBsZT4gbV9zYW1wbGU7CiAgICAgRmxvYXRTaXplIG1fcHJlc2VudGF0aW9uU2l6ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAwMzgxODlmNzQ3ZGZiYjI4Zjg3NWY3ZTY3ZjViYzFm
YTMxNTg2Y2ZjLi44ZTc5ZjRiZWE4MzQwZGJkNjcxMWRkYzI4ZTJhNzA4ZWI5YTg2MjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6CiAg
ICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlKCk7CiAKQEAgLTExNiwxMiArMTE2LDEyIEBAIGlubGlu
ZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZXRBdWRpb1NvdXJjZShSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4mJiBhCiBpbmxpbmUgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2V0
VmlkZW9Tb3VyY2UoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgdmlkZW9Tb3VyY2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5yZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV92aWRlb1NvdXJjZSA9IFdURk1vdmUo
dmlkZW9Tb3VyY2UpOwogCiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9T
b3VyY2UtPmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291
cmNlLT5hZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiBpbmxpbmUgTWVkaWFSZWNv
cmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCkBAIC0xMzIsNyArMTMyLDcgQEAg
aW5saW5lIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp+TWVkaWFSZWNvcmRlclByaXZhdGUoKQogICAg
IGlmIChtX2F1ZGlvU291cmNlKQogICAgICAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVBdWRpb1Nh
bXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICBpZiAobV92aWRlb1NvdXJjZSkKLSAgICAgICAgbV92
aWRlb1NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1f
dmlkZW9Tb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNw
cAppbmRleCAxYzBkM2U1M2M2MWMyZjE2OGZhNWRjZmVmZTNkYTJjMzYzZDI5MmJkLi5hNzRlYmRk
OTM2YTQ1NTIzMTQxNjQ4MTVkMWQ5ODc4MTZkZWQ0NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC04MywxOSArODMsMTkgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2sm
JiBjYWxsYmEKICAgICBjYWxsYmFjayhTdHJpbmcobV93cml0ZXItPm1pbWVUeXBlKCkpLCBtX3dy
aXRlci0+YXVkaW9CaXRSYXRlKCksIG1fd3JpdGVyLT52aWRlb0JpdFJhdGUoKSk7CiB9CiAKLXZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVv
KCkpIHsKICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUpIHsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgICAgICBtX2JsYWNrRnJhbWUg
PSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUu
dmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBjcmVhdGVCbGFja1BpeGVs
QnVmZmVyKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgYXV0byBz
aXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBtX2JsYWNr
RnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRpbWUo
KSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgY3JlYXRl
QmxhY2tQaXhlbEJ1ZmZlcihzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAg
fQogICAgICAgICBtX3dyaXRlci0+YXBwZW5kVmlkZW9GcmFtZSgqbV9ibGFja0ZyYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fYmxhY2tGcmFtZSA9IG51bGxwdHI7Ci0gICAg
bV93cml0ZXItPmFwcGVuZFZpZGVvRnJhbWUoVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlLnBy
ZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxlLnZpZGVvUm90
YXRpb24oKSwgc2FtcGxlLnBpeGVsQnVmZmVyKCkpKTsKKyAgICBtX3dyaXRlci0+YXBwZW5kVmlk
ZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGwuaAppbmRleCA5NTdmNWQwODc3OWZhOWMzOTI3N2U5MTU5M2M1NjM5NjhjZDc4
ODI2Li4xMjg5NzM1OWNkYmQ3MDgxZTU5YzkxZDhlZGJmMGI1YzA1ZDU4MTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyPiYmKTsKIAogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCi0gICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0
YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyLmgKaW5kZXggNzRmMWU3MjM2NzRlOGQwMTk4MjVjNzQwYmM4NjcyZmM2N2Rh
ZjkyMi4uYjE1YzdiZTQxM2MxYmMxMDkxZmM5MmUxOWEwZGFlNTBkZTI0ZDZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBwcmVwYXJlUGlwZWxpbmUoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkgZmluYWwgeyB9OworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWwgeyB9OwogICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbCB7IH07CiAKICAg
ICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCAwNjE3NmM3NDAwMWVmZGY2ZjQ1OTFmNjhkMmUw
MGUxMGE3Y2MwZjhhLi43ZjZkYjNjN2IwNzM3ZmFmMGNlYjlhYTY5ZThkMGRlMzhkZDBiNmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpyZXN1bWVSZWNvcmRpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICBtX2J1ZmZl
ci5hcHBlbmQoIlZpZGVvIFRyYWNrIElEOiAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9j
ay5oCmluZGV4IDcyOTY0NjI1NTM2YzZmMTIwOTIwMzA4MmZmM2UwYjZhN2EzNzcyN2EuLmY5MzU5
MGE4MDg2NzVmZDgzM2RkMjQ0YTI4ZjM3YjU1ZjA1ODgwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZU1vY2suaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Ly8gTWVkaWFSZWNvcmRlclByaXZhdGUKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgdm9pZCB2aWRl
b0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5h
bDsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFs
OwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCBhZGNlNDgzMDJmNWRhOWY3MzA1ZjlkZjJmNGJiYjA4YzBjZDFlZGYwLi5mYWFj
NmM5ODhjZTZhMzcxZWYyNTNlYThmYjlmOTVlZTYxZDkzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTMyLDcgKzEzMiw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgeyBmYWxzZSB9
OwogCiAgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0ZXJEZWxl
Z2F0ZTsKLSAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3BlbmRpbmdW
aWRlb1NhbXBsZVF1ZXVlOworICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+
IG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZTsKICAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+PiBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlOwogCiAgICAgYm9vbCBtX2lzRmx1
c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAzMTY2ZTgxNDYyOWU5MDQ4ZTEwZDRjODkw
Yjg5YTJhN2U2MjBjMjUzLi4wMjRmMDlkZmU3Y2U5ZjlmZjE5YzJlODBhMDA1YTAwOGY3YTU5YjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmkKIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogewog
ICAgIG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuY2xlYXIoKTsKLSAgICBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFy
KCk7CiAgICAgaWYgKG1fd3JpdGVyKSB7CiAgICAgICAgIFttX3dyaXRlciBjYW5jZWxXcml0aW5n
XTsKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKQEAgLTI4MywxNSArMjgzLDE1IEBAIGJvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1
ZmZlcklmUG9zc2libGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9pc0Zs
dXNoaW5nU2FtcGxlcykgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IHdoaWxlICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fdmlkZW9B
c3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgYXBwZW5k
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUudGFr
ZUZpcnN0KCkuZ2V0KCkpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmlz
RW1wdHkoKSAmJiBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURh
dGFdKQorICAgICAgICBhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIobV9wZW5kaW5n
VmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgpKTsKIAogICAgIGlmICghW21fdmlkZW9B
c3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewotICAgICAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVy
SW5wdXQgKmFzCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNz
ZWRTYW1wbGVCdWZmZXJzKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBib29s
IGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMgPSAhbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5pc0Vt
cHR5KCk7Ci0gICAgYm9vbCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzID0gIW1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUuaXNFbXB0eSgpOworICAgIGJvb2wgaGFzUGVuZGluZ1ZpZGVvU2FtcGxlcyA9
ICFtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0eSgpOwogCiAgICAgaWYgKG1faGFzRW5j
b2RlZFZpZGVvU2FtcGxlcykgewogICAgICAgICBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzIHw9ICFb
bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdOwpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJl
c3NlZFNhbXBsZUJ1ZmZlcnMoRnVuY3Rpb248dm9pZCgpPiYmCiAKICAgICBBU1NFUlQoIW1faXNG
bHVzaGluZ1NhbXBsZXMpOwogICAgIG1faXNGbHVzaGluZ1NhbXBsZXMgPSB0cnVlOwotICAgIGF1
dG8gYmxvY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMsIGhhc1BlbmRpbmdWaWRlb1NhbXBsZXMsIGF1ZGlv
U2FtcGxlUXVldWUgPSBXVEZNb3ZlKG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUpLCB2aWRlb1Nh
bXBsZVF1ZXVlID0gV1RGTW92ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBoYXNQZW5kaW5nQXVk
aW9TYW1wbGVzLCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzLCBhdWRpb1NhbXBsZVF1ZXVlID0gV1RG
TW92ZShtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlKSwgdmlkZW9TYW1wbGVRdWV1ZSA9IFdURk1v
dmUobV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2Fs
bGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4Niw5ICszODYsOSBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIGZy
YW1lKQogICAgIGlmICghbV9maXJzdFZpZGVvRnJhbWUpIHsKICAgICAgICAgbV9maXJzdFZpZGVv
RnJhbWUgPSB0cnVlOwogICAgICAgICBtX3Jlc3VtZWRWaWRlb1RpbWUgPSBQQUw6OkNNQ2xvY2tH
ZXRUaW1lKFBBTDo6Q01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7Ci0gICAgICAgIGlmIChmcmFt
ZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfHwg
ZnJhbWUudmlkZW9NaXJyb3JlZCgpKSB7Ci0gICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGljX2Nhc3Q8aW50PihmcmFtZS52aWRl
b1JvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7Ci0gICAgICAgICAgICBpZiAoZnJhbWUudmlkZW9N
aXJyb3JlZCgpKQorICAgICAgICBpZiAoZnJhbWUucm90YXRpb24oKSAhPSBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6Tm9uZSB8fCBmcmFtZS5pc01pcnJvcmVkKCkpIHsKKyAgICAgICAgICAgIG1fdmlk
ZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxp
bnQ+KGZyYW1lLnJvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7CisgICAgICAgICAgICBpZiAoZnJh
bWUuaXNNaXJyb3JlZCgpKQogICAgICAgICAgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0Fm
ZmluZVRyYW5zZm9ybVNjYWxlKCptX3ZpZGVvVHJhbnNmb3JtLCAtMSwgMSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRhOTU3OTg3MmE3NzE1ZTU0MDQzOTVk
MDU3NGRjNGRkNzFlZmIyMzkuLjZmYTNiMWUwMWQ0ODg5NGM1YTU0NzU3ZjVkMTA2N2RmZWU0YTUx
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC03NSwxOCArNzUsMTggQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpyZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2Jz
ZXJ2ZXImIG9ic2VydmUKICAgICBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2
ZXIpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZFZpZGVvU2FtcGxlT2JzZXJ2
ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmFkZFZpZGVvRnJhbWVPYnNlcnZlcihWaWRlb0ZyYW1lT2JzZXJ2ZXImIG9ic2VydmVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdmlk
ZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0gICAgbV92aWRlb1NhbXBsZU9ic2VydmVycy5hZGQo
Jm9ic2VydmVyKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9j
ayB9OworICAgIG1fVmlkZW9GcmFtZU9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2Ft
cGxlT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxl
T2JzZXJ2ZXJzTG9jayB9OwotICAgIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMucmVtb3ZlKCZvYnNl
cnZlcik7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fVmlkZW9GcmFtZU9ic2VydmVyc0xvY2sgfTsK
KyAgICBtX1ZpZGVvRnJhbWVPYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CiB9CiAKIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpAQCAt
MTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dXBkYXRlSGFzU3RhcnRl
ZFByb2R1Y2luZ0RhdGEoKQogICAgIH0pOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSwgVmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9G
cmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhIG1ldGFkYXRhKQogewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICsrbV9mcmFt
ZUNvdW50OwpAQCAtMjEwLDkgKzIxMCw5IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlLCBWaWRlb0ZyCiAKICAg
ICB1cGRhdGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSgpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7
IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0gICAgZm9yIChhdXRvKiBvYnNlcnZlciA6
IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT52aWRlb1NhbXBsZUF2
YWlsYWJsZShtZWRpYVNhbXBsZSwgbWV0YWRhdGEpOworICAgIExvY2tlciBsb2NrZXIgeyBtX1Zp
ZGVvRnJhbWVPYnNlcnZlcnNMb2NrIH07CisgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fVmlk
ZW9GcmFtZU9ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnZpZGVvRnJhbWVBdmFpbGFibGUo
dmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3Jt
QXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggNzM0
ODM1MmJlMjUxOTM1OGI1NDZkZTY4ZDBjM2I4OTJhOWY0NGU0ZS4uMWE4OTk4ZGUzYjc5ZWM0MDZj
OTZhZDBhM2Y0OTM2MzJlNzc4MzhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMzgsMTAgKzM4
LDEwIEBACiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oIgor
I2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KQEAgLTk4LDEyICs5OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1heSBiZSBjYWxs
ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KICAgICAgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QgLypudW1iZXJPZkZyYW1lcyov
KSA9IDA7CiAgICAgfTsKLSAgICBjbGFzcyBWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAgICBjbGFz
cyBWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Vmlk
ZW9TYW1wbGVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB+VmlkZW9GcmFt
ZU9ic2VydmVyKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIC8vIE1heSBiZSBjYWxsZWQgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KLSAgICAgICAgdmlydHVhbCB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRp
bWVNZXRhZGF0YSkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291
cmNlKCkgPSBkZWZhdWx0OwpAQCAtMTQ3LDggKzE0Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZEF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZlcihBdWRp
b1NhbXBsZU9ic2VydmVyJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcihWaWRlb1NhbXBsZU9ic2VydmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2Vy
dmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIo
VmlkZW9GcmFtZU9ic2VydmVyJik7CiAKICAgICBjb25zdCBJbnRTaXplIHNpemUoKSBjb25zdDsK
ICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOwpAQCAtMjUwLDcgKzI1MCw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemVTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKSB7
IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVFY2hvQ2Fu
Y2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikgeyBtX2VjaG9DYW5jZWxsYXRpb24gPSBl
Y2hvQ2FuY2VsbGF0aW9uOyB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZh
aWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKICAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlv
RGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogCiAgICAgdm9p
ZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYpOwpAQCAt
Mjg5LDggKzI4OSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBMb2NrIG1fYXVkaW9TYW1wbGVP
YnNlcnZlcnNMb2NrOwogICAgIEhhc2hTZXQ8QXVkaW9TYW1wbGVPYnNlcnZlcio+IG1fYXVkaW9T
YW1wbGVPYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJz
TG9jayk7CiAKLSAgICBtdXRhYmxlIExvY2sgbV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2s7Ci0g
ICAgSGFzaFNldDxWaWRlb1NhbXBsZU9ic2VydmVyKj4gbV92aWRlb1NhbXBsZU9ic2VydmVycyBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBtdXRh
YmxlIExvY2sgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9jazsKKyAgICBIYXNoU2V0PFZpZGVvRnJh
bWVPYnNlcnZlcio+IG1fVmlkZW9GcmFtZU9ic2VydmVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
VmlkZW9GcmFtZU9ic2VydmVyc0xvY2spOwogCiAgICAgLy8gU2V0IG9uIHRoZSBtYWluIHRocmVh
ZCBmcm9tIGNvbnN0cmFpbnRzLgogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggOWE3MTA1NWQ4NmIzZTEwOWZmMjkxNzg3MmNmYmIw
YjI0ODRjZGJmYS4uMjczNmE0M2U3NmU5OTVkZWQ4NjAwYjc0MWQ4NTdkMDhlZTk5YTFiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpvYnNlcnZlU291cmNlKCkKIHZvaWQgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp1bm9ic2VydmVTb3VyY2UoKQogewogICAgIG1fdmlk
ZW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLSAgICBtX3ZpZGVvU291cmNlLT5zb3Vy
Y2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3ZpZGVvU291cmNl
LT5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJiBuZXdTb3VyY2UpCkBAIC0xMTQsMTMgKzExNCwxMyBAQCB2b2lkIFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RvcCgpCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6dXBkYXRlQmxhY2tGcmFtZXNTZW5kaW5nKCkKIHsKICAgICBpZiAoIW1fbXV0ZWQgJiYg
bV9lbmFibGVkKSB7Ci0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLmFkZFZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5hZGRW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAobV9ibGFja0ZyYW1lVGltZXIu
aXNBY3RpdmUoKSkKICAgICAgICAgICAgIG1fYmxhY2tGcmFtZVRpbWVyLnN0b3AoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJl
bW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgc2VuZEJsYWNrRnJhbWVzSWZOZWVk
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAppbmRleCBiMmFjMTY5
MDBhM2I1NmJmNzZhMGE1YzEyMGY4ZGQyMWZiN2M5NmU4Li4zMGUyZjkzN2IyNGE1NGM1NDY3YjQ4
Mjk1YmRjMGJmOWE0YjAwODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaApA
QCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UKICAgICA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Us
IFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgd2VicnRjOjpWaWRl
b1RyYWNrU291cmNlSW50ZXJmYWNlCiAgICAgLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpPYnNlcnZlcgotICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1Nh
bXBsZU9ic2VydmVyCisgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBMb2dn
ZXJIZWxwZXIKICNlbmRpZgpAQCAtMTM0LDggKzEzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0
cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgaW5p
dGlhbGl6ZUZyb21Tb3VyY2UoKTsgfQogICAgIHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQogCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJpZGUgeyB9CisgICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIEFQSQorICAgIHZvaWQgdmlkZW9G
cmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJp
ZGUgeyB9CiAKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fdmlkZW9Tb3VyY2U7
CiAgICAgVGltZXIgbV9ibGFja0ZyYW1lVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKaW5kZXggNTc5OWQwMDM4OTEyNWU0Y2ZiYjliZTljYTNhYTA1ZGNhMWY1ZmMzNy4u
ZWQ3ZDU2NGE5OTgxYWEwNmIxNmRkZmJjYTExNDg3MTFjZDc5N2ViMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMzY1LDkgKzM2NSw5IEBAIHZvaWQgUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+
IHdpZHRoLCBzCiAgICAgc2V0RnJhbWVSYXRlKG1hdGNoLT5yZXF1ZXN0ZWRGcmFtZVJhdGUpOwog
fQogCi12b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwYXRjaE1lZGlhU2FtcGxl
VG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmIHNhbXBsZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVN
ZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3Bh
dGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7Ci0gICAgTWVkaWFUaW1lIHNhbXBs
ZVRpbWUgPSBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpOworICAgIE1lZGlhVGltZSBzYW1wbGVU
aW1lID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCk7CiAKICAgICBhdXRvIGZyYW1lVGlt
ZSA9IHNhbXBsZVRpbWUudG9Eb3VibGUoKTsKICAgICBtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBz
LmFwcGVuZChmcmFtZVRpbWUpOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2U6OmRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBs
ZSYgc2FtCiAgICAgaWYgKGludGVydmFsID4gMSkKICAgICAgICAgbV9vYnNlcnZlZEZyYW1lUmF0
ZSA9IChtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBzLnNpemUoKSAvIGludGVydmFsKTsKIAotICAg
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZSwgbWV0YWRhdGEpOworICAgIHZpZGVvRnJhbWVB
dmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBmcmFtZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCA0ZTA5
YWUyMWY0NTgzYWJmNDczMjY3ODljZmJmMmIyN2VjMzlkOTYyLi4wYmRjMGQ1NjQ0MTcwM2ZmYzgz
ODcwNzk0Yjc1NjIzMDI4YjU3ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJWaWRlb1ByZXNldC5oIgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CkBAIC00Niw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNT
aXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxp
bnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2VuZXJhdGVQcmVzZXRzKCkgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb24oKSBjb25zdCB7IHJldHVybiBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQorICAgIHZpcnR1YWwgVmlkZW9GcmFtZTo6Um90YXRpb24g
dmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246
Ok5vbmU7IH0KIAogICAgIGRvdWJsZSBvYnNlcnZlZEZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JzZXJ2ZWRGcmFtZVJhdGU7IH0KICAgICBWZWN0b3I8VmlkZW9QcmVzZXREYXRhPiBwcmVz
ZXRzRGF0YSgpOwpAQCAtNzMsNyArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0
ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJik7CiAKLSAgICB2
b2lkIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOworICAgIHZvaWQgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9P
YnNlcnZlcnMoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOwogCiAgICAgc3Rh
dGljIFNwYW48Y29uc3QgSW50U2l6ZT4gc3RhbmRhcmRWaWRlb1NpemVzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKaW5kZXggYTIzNWQ0MjNmMjkxMDRjNTk0OTI4NTRmMGY3NTdhZjA3ZjkyNGEy
OC4uZjllODRmN2I1NzQwODhmMGNkZjY5YTVmOTU0ODQ4NjA3ZDdiYTQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6UmVhbHRp
bWVWaWRlb1NvdXJjZShSZWY8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U+JiYgc291cmMKIAog
UmVhbHRpbWVWaWRlb1NvdXJjZTo6flJlYWx0aW1lVmlkZW9Tb3VyY2UoKQogewotICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVt
b3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOwogfQogCkBAIC02OSwxOCArNjksMTggQEAgdm9pZCBSZWFsdGltZVZpZGVvU291
cmNlOjp3aGVuUmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxiYWNr
KQogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewogICAg
IG1fc291cmNlLT5zdGFydCgpOwotICAgIG1fc291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+YWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0K
IAogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAg
bV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNl
LT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5zdG9wKCk7
CiB9CiAKIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZW5kUHJvZHVjaW5nRGF0YSgpCiB7Ci0g
ICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5yZXF1
ZXN0VG9FbmQoKnRoaXMpOwogfQogCkBAIC0xMjUsMTIgKzEyNSwxMiBAQCB2b2lkIFJlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKCkKIHsKLSAgICBhdXRvIHJvdGF0aW9uID0gbV9z
b3VyY2UtPnNhbXBsZVJvdGF0aW9uKCk7CisgICAgYXV0byByb3RhdGlvbiA9IG1fc291cmNlLT52
aWRlb0ZyYW1lUm90YXRpb24oKTsKICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAg
aWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICBzaXplID0gbV9zb3VyY2UtPnNpemUoKTsKIAot
ICAgIGlmIChyb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCBy
b3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgaWYgKHJv
dGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHJvdGF0aW9uID09IFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNp
emUoKTsKIAogICAgIG1fY3VycmVudFNldHRpbmdzLnNldFdpZHRoKHNpemUud2lkdGgoKSk7CkBA
IC0xNzIsMTAgKzE3MiwxMCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVN0b3Bw
ZWQoKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1SZWZQdHI8TWVkaWFTYW1wbGU+IFJlYWx0
aW1lVmlkZW9Tb3VyY2U6OmFkYXB0VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSkK
K1JlZlB0cjxWaWRlb0ZyYW1lPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUo
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKLSAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Np
b24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSB2aWRlb0ZyYW1l
LnZpZGVvUGl4ZWxGb3JtYXQoKSkKLSAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IElt
YWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnZpZGVvUGl4ZWxGb3JtYXQo
KSwgbV9zaG91bGRVc2VJT1N1cmZhY2UpOworICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
biB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9IHZpZGVvRnJhbWUu
cGl4ZWxGb3JtYXQoKSkKKyAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnBpeGVsRm9ybWF0KCksIG1fc2hvdWxk
VXNlSU9TdXJmYWNlKTsKIAogICAgIEFTU0VSVChtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKTsKICAg
ICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUoTWVkaWFT
YW1wbGUmIHZpZGVvRnJhbWUKIH0KICNlbmRpZgogCi12b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgaWYgKG1fZnJhbWVEZWNpbWF0aW9uID4gMSAmJiArK21fZnJh
bWVEZWNpbWF0aW9uQ291bnRlciAlIG1fZnJhbWVEZWNpbWF0aW9uKQogICAgICAgICByZXR1cm47
CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYQogICAgIGF1dG8g
c2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBpZiAoIXNpemUuaXNFbXB0eSgpICYmIHNpemUgIT0g
ZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpKSkgewogICAgICAg
ICBpZiAoYXV0byBuZXdWaWRlb0ZyYW1lID0gYWRhcHRWaWRlb0ZyYW1lKHZpZGVvRnJhbWUpKSB7
Ci0gICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgq
bmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOworICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSgqbmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7Cisg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBt
ZXRhZGF0YSk7CiB9CiAKIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBSZWFsdGltZVZpZGVvU291
cmNlOjpjbG9uZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggYTcxOTQ5Nzg5ZTRlMDVhOTBhODlm
YzE0MDNiYjgwODhjZmZiZjhhOC4uNjQ2ZDU4YTIyMzdjYWM2NWM5MGVkMjY0MjgwMzEyZTc5MmZi
ZWY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOwogY2xhc3MgUmVhbHRpbWVWaWRlb1NvdXJjZSBmaW5hbAogICAgIDog
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpPYnNlcnZlcgotICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2Ft
cGxlT2JzZXJ2ZXIgeworICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZVZpZGVvU291cmNl
PiBjcmVhdGUoUmVmPFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlPiYmIHNvdXJjZSwgYm9vbCBz
aG91bGRVc2VJT1N1cmZhY2UgPSB0cnVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1l
VmlkZW9Tb3VyY2UoV1RGTW92ZShzb3VyY2UpLCBzaG91bGRVc2VJT1N1cmZhY2UpKTsgfQogCkBA
IC03MSwxMSArNzEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5h
bDsKICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBmaW5hbDsKIAotICAgIC8v
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZT4gYWRhcHRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJik7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+
IGFkYXB0VmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vVmlkZW9QcmVzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Zp
ZGVvUHJlc2V0LmgKaW5kZXggZjgwY2NlZWRkYTc2MGZlZmI3ZTdmZjM5YTBjOWNkNzdhOGIwYThm
Yy4uNmNkMjkwNzNiZjAxY2UyZjQ1Y2MyMTk1MWJiYTU2NmQ1NTc3MWUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA2ZWU5
NGEwZmE0YmY3ZDBkZDVkYzQ4OGI4MDBkMWVhMGE1M2FkZDEyLi40MDMwNGFiZTY5MDZjYjFmMzRj
NzBhZDJjNjBkNDA4ZjZiYjdiOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcApAQCAtMjkzLDM1ICsyOTMsMzUgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUoKQogICAgICAgICB1cGRhdGVGcmFtZVNpemUoKTsKICAgICB9
CiAKLSAgICBhdXRvIHNhbXBsZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCi0gICAgICAgIFt0aGlz
LCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYgc3VyZmFjZSkgLT4gUmVmUHRy
PE1lZGlhU2FtcGxlPiB7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gV1RGOjpzd2l0Y2hPbihmcmFt
ZSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiBz
dXJmYWNlKSAtPiBSZWZQdHI8VmlkZW9GcmFtZT4gewogICAgICAgICAgICAgaWYgKCFzdXJmYWNl
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4g
bV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwg
c2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZl
SW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlzLCBz
YW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPFZpZGVvRnJh
bWU+IHsKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVNZWRpYVNhbXBsZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBz
aXplKCkpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0
ZVZpZGVvRnJhbWUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6
ZSgpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4mIHNhbXBsZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAg
ICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiBzYW1w
bGUpIC0+IFJlZlB0cjxWaWRlb0ZyYW1lPiB7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1h
Z2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHNhbXBsZS5nZXQoKSwgc2FtcGxl
VGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9u
LT5jcmVhdGVWaWRlb0ZyYW1lKHNhbXBsZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAg
ICAgICAgfQogICAgICk7CiAKLSAgICBpZiAoIXNhbXBsZSkgeworICAgIGlmICghdmlkZW9GcmFt
ZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGE7CiAgICAgbWV0YWRhdGEu
Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwot
ICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCksIG1ldGFkYXRhKTsKKyAgICB2
aWRlb0ZyYW1lQXZhaWxhYmxlKCp2aWRlb0ZyYW1lLmdldCgpLCBtZXRhZGF0YSk7CiB9CiAKIHZv
aWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwdHVyZXJDb25maWd1cmF0aW9uQ2hhbmdl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2Nv
YS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXggYjllYjA4
NWQ0NzQ5MzRjNWUwNTFhNzVhYjFkZDAzY2M1NGU3Zjg1Mi4uNDQ4NjJkNWM5NjRmY2VkOTYzMmU2
NGI2MTM1NzlkM2U3MDQ5OGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgog
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM2LDEwICszNywx
MCBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotCi10eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IF9f
SU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7Cit1c2luZyBDR0ltYWdlUmVmID0gQ0dJbWFnZSo7Cit1
c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwordXNpbmcgSU9TdXJm
YWNlUmVmID0gc3RydWN0IF9fSU9TdXJmYWNlKjsKK3VzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0g
c3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBN
ZWRpYVRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291
cmNlLmNwcAppbmRleCAyNDNjYWFhNWM0Y2Y3MWZlYTg1ZDkyOTI4OGM2OTA3NTRiYWY5NDA0Li44
ZTEzMmVlMTVkYjk4MzM0M2M0YTA0ODQ5ODk4OGI3NmE5OTc1NDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY0Vuc3VyZVN0cmVhbUNvbGxlY3Rp
b25Qb3N0ZWQoV2ViS2l0TWVkaWFTdHJlYW1TcgogCiBjbGFzcyBJbnRlcm5hbFNvdXJjZSBmaW5h
bCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIsCiAgICAgcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIsCi0gICAgcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgIHB1YmxpYyBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEludGVybmFsU291cmNlKEdzdEVsZW1lbnQqIHBhcmVu
dCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBjb25zdCBTdHJpbmcmIHBhZE5hbWUp
CkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRp
bygpKQogICAgICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5hZGRBdWRpb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAg
ICAgbV90cmFjay5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAg
ICAgICAgIG1fdHJhY2suc291cmNlKCkuYWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAg
ICAgICAgbV9pc09ic2VydmluZyA9IHRydWU7CiAgICAgfQogCkBAIC0xOTYsNyArMTk2LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRpbygpKQogICAgICAgICAgICAgbV90
cmFjay5zb3VyY2UoKS5yZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAg
ZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAgICAgbV90cmFjay5zb3VyY2Uo
KS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fdHJhY2su
c291cmNlKCkucmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV90cmFj
ay5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgfQogCkBAIC0yNzIsMTMgKzI3MiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW1fcGFyZW50IHx8ICFt
X2lzT2JzZXJ2aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gc2FtcGxl
U2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgIEludFNpemUgY2FwdHVy
ZVNpemUoc2FtcGxlU2l6ZS53aWR0aCgpLCBzYW1wbGVTaXplLmhlaWdodCgpKTsKKyAgICAgICAg
YXV0byB2aWRlb0ZyYW1lU2l6ZSA9IHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOworICAg
ICAgICBJbnRTaXplIGNhcHR1cmVTaXplKHZpZGVvRnJhbWVTaXplLndpZHRoKCksIHZpZGVvRnJh
bWVTaXplLmhlaWdodCgpKTsKIAogICAgICAgICBhdXRvIHNldHRpbmdzID0gbV90cmFjay5zZXR0
aW5ncygpOwogICAgICAgICBtX2NvbmZpZ3VyZWRTaXplLnNldFdpZHRoKHNldHRpbmdzLndpZHRo
KCkpOwpAQCAtMjg5LDggKzI4OSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2NvbmZpZ3Vy
ZWRTaXplLmhlaWdodCgpKQogICAgICAgICAgICAgbV9jb25maWd1cmVkU2l6ZS5zZXRIZWlnaHQo
Y2FwdHVyZVNpemUuaGVpZ2h0KCkpOwogCi0gICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHNh
bXBsZS52aWRlb1JvdGF0aW9uKCk7Ci0gICAgICAgIGJvb2wgdmlkZW9NaXJyb3JlZCA9IHNhbXBs
ZS52aWRlb01pcnJvcmVkKCk7CisgICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHZpZGVvRnJh
bWUucm90YXRpb24oKTsKKyAgICAgICAgYm9vbCB2aWRlb01pcnJvcmVkID0gdmlkZW9GcmFtZS5p
c01pcnJvcmVkKCk7CiAgICAgICAgIGlmIChtX3ZpZGVvUm90YXRpb24gIT0gdmlkZW9Sb3RhdGlv
biB8fCBtX3ZpZGVvTWlycm9yZWQgIT0gdmlkZW9NaXJyb3JlZCkgewogICAgICAgICAgICAgbV92
aWRlb1JvdGF0aW9uID0gdmlkZW9Sb3RhdGlvbjsKICAgICAgICAgICAgIG1fdmlkZW9NaXJyb3Jl
ZCA9IHZpZGVvTWlycm9yZWQ7CkBAIC0zMDEsNyArMzAxLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHBhZC5nZXQoKSwgZ3N0X2V2ZW50X25ld190YWcoZ3N0X3Rh
Z19saXN0X25ldyhHU1RfVEFHX0lNQUdFX09SSUVOVEFUSU9OLCBvcmllbnRhdGlvbi51dGY4KCku
ZGF0YSgpLCBudWxscHRyKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogdmlkZW9GcmFt
ZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmc2FtcGxlKTsKKyAgICAgICAg
YXV0byogdmlkZW9GcmFtZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmdmlk
ZW9GcmFtZSk7CiAgICAgICAgIGF1dG8qIGdzdFNhbXBsZSA9IHZpZGVvRnJhbWUtPnNhbXBsZSgp
OwogICAgICAgICBpZiAoIW1fY29uZmlndXJlZFNpemUuaXNFbXB0eSgpICYmIG1fbGFzdEtub3du
U2l6ZSAhPSBtX2NvbmZpZ3VyZWRTaXplKSB7CiAgICAgICAgICAgICBtX2xhc3RLbm93blNpemUg
PSBtX2NvbmZpZ3VyZWRTaXplOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHByaXZhdGU6CiAgICAgSW50
U2l6ZSBtX2NvbmZpZ3VyZWRTaXplOwogICAgIEludFNpemUgbV9sYXN0S25vd25TaXplOwogICAg
IEdSZWZQdHI8R3N0U2FtcGxlPiBtX2JsYWNrRnJhbWU7Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5v
bmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBtX3ZpZGVvUm90YXRpb24geyBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wgbV92aWRlb01pcnJvcmVkIHsgZmFsc2Ug
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDQwMWU0YTE0OTdhYzIxYTA5OTFjNmU1OTkxNTQzZDVi
OTVhMWYyYWUuLjUwYjM5ZTUxMWMwNDliNmVjNDdmNjJmZGQ0ZjdiNjdhMmJhMTJkMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNjksMjQgKzY5LDI0IEBAIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJl
YW1lcjo6TW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyKFJlYWx0aW1lTWVkCiAgICAg
LCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgLCBtX2RldmljZVR5cGUoZGV2aWNlVHlw
ZSkKIHsKLSAgICBtX3NvdXJjZS0+YWRkVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAg
bV9zb3VyY2UtPmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIE1vY2tEaXNwbGF5
Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6fk1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1l
cigpCiB7Ci0gICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOwor
ICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lk
IE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6c3RvcFByb2R1Y2luZ0RhdGEoKQog
ewotICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBt
X3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+
c3RvcCgpOwogfQogCiB2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6cmVx
dWVzdFRvRW5kKE9ic2VydmVyJiBjYWxsaW5nT2JzZXJ2ZXIpCiB7CiAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6cmVxdWVzdFRvRW5kKGNhbGxpbmdPYnNlcnZlcik7Ci0gICAgbV9zb3VyY2UtPnJl
bW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVWaWRl
b0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5yZXF1ZXN0VG9FbmQoY2FsbGlu
Z09ic2VydmVyKTsKIH0KIApAQCAtOTYsOSArOTYsOSBAQCB2b2lkIE1vY2tEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUdTdHJlYW1lcjo6c2V0TXV0ZWQoYm9vbCBpc011dGVkKQogICAgIG1fc291cmNlLT5z
ZXRNdXRlZChpc011dGVkKTsKIH0KIAotdm9pZCBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3Ry
ZWFtZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCit2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdT
dHJlYW1lcjo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQogewotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZSwgbWV0YWRhdGEpOworICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQog
CiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBNb2NrRGlzcGxheUNhcHR1
cmVTb3VyY2VHU3RyZWFtZXI6OmNhcGFiaWxpdGllcygpCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9p
ZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6dXBkYXRlU2FtcGxlQnVmZmVyKCkK
ICAgICBtZXRhZGF0YS0+Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRz
U2luY2VFcG9jaCgpOwogICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygpKTsKICAgICBh
dXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZm
ZXIoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBwcmVzZW50YXRpb25UaW1lLCBzaXplKCksIGZyYW1l
UmF0ZSgpLCBzYW1wbGVSb3RhdGlvbigpLCBmYWxzZSwgV1RGTW92ZShtZXRhZGF0YSkpOwotICAg
IGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyh2aWRlb0ZyYW1lLmdldCgpLCB7IH0pOwor
ICAgIGRpc3BhdGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKHZpZGVvRnJhbWUuZ2V0KCksIHsgfSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmgKaW5kZXggMzE2MTdlMzhhNjM1ZGE5
ZDRhZGQ2NDRlYTA4NjY3YWViZmI5NjZmYi4uMDFjM2I1ODEyNjI3MjYyYzBmZTMzYzc2OGVmY2M3
YWY5Mzk0MTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlR1N0cmVhbWVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGNhblJlc2l6ZVZpZGVvRnJhbWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsK
IAotY2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyIGZpbmFsIDogcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2UsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2Jz
ZXJ2ZXIgeworY2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyIGZpbmFsIDog
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNy
ZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiwgU3RyaW5nJiYsIGNvbnN0IE1lZGlhQ29uc3RyYWlu
dHMqKTsKIApAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNdXRlZChib29s
IGlzTXV0ZWQpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVk
aWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAgICAvLyBSZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFp
bGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogCiBwcml2
YXRlOgogICAgIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcihSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlLCBSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI+JiYsIFN0
cmluZyYmLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKaW5k
ZXggOGFjYTA0MzlmNDliY2MwNjI5MjQ1YWY2YjdhOWU4NTI5MWY5NWYxYy4uNTc3MzI3NDZjNmJh
MGJlMjU0MDBhZGYxMDM0YjUwZGRlNTFkZWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTEw
MCw3ICsxMDAsNyBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lcjo6
c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTQogdm9pZCBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OmRpc3BhdGNoU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxl
PiYmIGdzdFNhbXBsZSkKIHsKICAgICBhdXRvKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZm
ZXIoZ3N0U2FtcGxlLmdldCgpKTsKLSAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZShWaWRlb0ZyYW1l
R1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2FtcGxlKGdzdFNhbXBsZSwgZnJvbUdzdENsb2NrVGlt
ZShHU1RfQlVGRkVSX1BUUyhidWZmZXIpKSksIHsgfSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJs
ZShWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2FtcGxlKGdzdFNhbXBsZSwgZnJv
bUdzdENsb2NrVGltZShHU1RfQlVGRkVSX1BUUyhidWZmZXIpKSksIHsgfSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KaW5kZXgg
MzViOTcwZDYwOGUzOGUzNTU2N2M5MzMzNTk3NmZlOGJjNWZhNWYxMy4uNTNiZTVkZGQwMTgzNmZk
OWJjM2M5ZWQ0YjU4MjEwZmExNDQ2YWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3Vy
Y2UubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIFJlcGxheUtpdENhcHR1cmVTb3VyY2U6OnN0
YXJ0KCkKICAgICB9KTsKIAogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlkZW50aWZpZXJdKE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKLSAgICAgICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBz
YWZlIHRvIGNhbGwgYHZpZGVvU2FtcGxlQXZhaWxhYmxlYCBmcm9tIGFueSB0aHJlYWQuIFRlc3Qg
dGhpcyBhbmQgZ2V0IHJpZCBvZiB0aGlzIG1haW4gdGhyZWFkIGhvcC4KKyAgICAgICAgLy8gRklY
TUU6IEl0IHNob3VsZCBiZSBzYWZlIHRvIGNhbGwgYHZpZGVvRnJhbWVBdmFpbGFibGVgIGZyb20g
YW55IHRocmVhZC4gVGVzdCB0aGlzIGFuZCBnZXQgcmlkIG9mIHRoaXMgbWFpbiB0aHJlYWQgaG9w
LgogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzLCBlcnJv
ciA9IHJldGFpblB0cihlcnJvciksIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzIHx8ICFlcnJvcikKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlk
ZW9GcmFtZUxpYldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAKaW5kZXggZWY4NzAwMjBjOWI5NjI1
NTc3MjlkZjdjMWU0YzU4NmU1ZmEzN2Y3OC4uYTJmMTBjNDRmOGRhZDY5OGE1YjVmZDllNjk3ZTFj
MzQzMGQzNmIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcApA
QCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFZpZGVvRnJh
bWVMaWJXZWJSVEM+IFZpZGVvRnJhbWVMaWJXZWJSVEM6OmNyZWF0ZShNZWRpYVRpbWUgcHJlc2Vu
dGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVy
c2lvbkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQorUmVmPFZpZGVvRnJhbWVMaWJXZWJS
VEM+IFZpZGVvRnJhbWVMaWJXZWJSVEM6OmNyZWF0ZShNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNpb25DYWxsYmFjayYm
IGNvbnZlcnNpb25DYWxsYmFjaykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0Zy
YW1lTGliV2ViUlRDKHByZXNlbnRhdGlvblRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uLCBXVEZN
b3ZlKGJ1ZmZlciksIFdURk1vdmUoY29udmVyc2lvbkNhbGxiYWNrKSkpOwogfQogCi1WaWRlb0Zy
YW1lTGliV2ViUlRDOjpWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGltZSBwcmVzZW50YXRpb25U
aW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24sIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBDb252ZXJzaW9uQ2Fs
bGJhY2smJiBjb252ZXJzaW9uQ2FsbGJhY2spCitWaWRlb0ZyYW1lTGliV2ViUlRDOjpWaWRlb0Zy
YW1lTGliV2ViUlRDKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQs
IFJvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNr
KQogICAgIDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBpc01pcnJvcmVkLCByb3RhdGlv
bikKICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICAsIG1fc2l6ZShtX2J1ZmZl
ci0+d2lkdGgoKSwgIG1fYnVmZmVyLT5oZWlnaHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFt
ZUxpYldlYlJUQy5oCmluZGV4IDNhNjYzOTA3YTQ2YjhmNzkzZDc1MDg4ZDg4YmM0OTY1OWMzNjJl
NDQuLjRjOWU1YTZjYzUyM2ZmMDg3ZjFmMDYwYjBhZmY1MTRlNTNhYWM1MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1l
TGliV2ViUlRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaApAQCAtNDIsMTYgKzQyLDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFZpZGVvRnJhbWVMaWJXZWJSVEMgZmluYWwgOiBwdWJsaWMgVmlk
ZW9GcmFtZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQ29udmVyc2lvbkNhbGxiYWNrID0gRnVuY3Rp
b248UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+KHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYp
PjsKLSAgICBzdGF0aWMgUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IGNyZWF0ZShNZWRpYVRpbWUs
IGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOworICAgIHN0YXRp
YyBSZWY8VmlkZW9GcmFtZUxpYldlYlJUQz4gY3JlYXRlKE1lZGlhVGltZSwgYm9vbCBpc01pcnJv
cmVkLCBSb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZl
cj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOwogCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAog
cHJpdmF0ZToKLSAgICBWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGltZSwgYm9vbCBpc01pcnJv
cmVkLCBWaWRlb1JvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJik7CisgICAgVmlkZW9GcmFtZUxpYldlYlJU
QyhNZWRpYVRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKIAog
ICAgIC8vIFZpZGVvRnJhbWUKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvUGl4ZWxGb3JtYXQ7IH0KKyAgICB1aW50MzJf
dCBwaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdmlkZW9QaXhlbEZvcm1hdDsg
fQogICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKIAogICAg
IGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IG1fYnVm
ZmVyOwpAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OlZpZGVvRnJhbWVMaWJXZWJSVEMpCiAgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZpZGVvRnJhbWUpIHsgcmV0dXJuIHZpZGVv
RnJhbWUuaXNMaWJXZWJSVEMoKTsgfQotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIGlzPFdlYkNvcmU6OlZpZGVv
RnJhbWU+KG1lZGlhU2FtcGxlKSAmJiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lTGliV2ViUlRDPihk
b3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkpOyB9CiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJ
QldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRD
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3Ry
ZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcAppbmRleCA3ZDk1
MGY2NzgwMDY1YjJlOWU1NzZkNDZjNTU2YTEzYTc1M2M1MGU5Li5jZjAyZTljMzYxNjYxYTE4YmRm
YjI5ZTEwZTc4ZDQyYjhkYWM0OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUxpYldlYlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJS
VEMuY3BwCkBAIC02MSwxMSArNjEsMTEgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VMaWJXZWJSVEM6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmEKICAgICBh
dXRvIHByZXNlbnRhdGlvblRpbWUgPSBmcm9tR3N0Q2xvY2tUaW1lKGZyYW1lLnRpbWVzdGFtcF91
cygpKTsKICAgICBpZiAoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCktPnR5cGUoKSA9PSB3ZWJy
dGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKICAgICAgICAgYXV0byogZnJh
bWVidWZmZXIgPSBzdGF0aWNfY2FzdDxHU3RyZWFtZXJWaWRlb0ZyYW1lTGliV2ViUlRDKj4oZnJh
bWUudmlkZW9fZnJhbWVfYnVmZmVyKCkuZ2V0KCkpOwotICAgICAgICB2aWRlb1NhbXBsZUF2YWls
YWJsZShWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2FtcGxlKGZyYW1lYnVmZmVy
LT5nZXRTYW1wbGUoKSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb24+KGZyYW1lLnJvdGF0aW9uKCkpKSwgeyB9KTsKKyAgICAgICAgdmlkZW9G
cmFtZWVBdmFpbGFibGUoVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlV3JhcHBlZFNhbXBsZShm
cmFtZWJ1ZmZlci0+Z2V0U2FtcGxlKCksIHByZXNlbnRhdGlvblRpbWUsIHN0YXRpY19jYXN0PFZp
ZGVvRnJhbWU6OlJvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSksIHsgfSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgYXV0byBnc3RTYW1wbGUgPSBjb252ZXJ0TGliV2ViUlRDVmlkZW9GcmFtZVRv
R1N0cmVhbWVyU2FtcGxlKGZyYW1lKTsKICAgICAgICAgYXV0byBtZXRhZGF0YSA9IHN0ZDo6bWFr
ZV9vcHRpb25hbChtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKGZyYW1lKSk7Ci0gICAgICAgIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKGdzdFNh
bXBsZSksIHsgfSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nhc3Q8TWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24+KGZyYW1lLnJvdGF0aW9uKCkpLCBmYWxzZSwgV1RGTW92ZShtZXRhZGF0YSkp
LCB7IH0pOworICAgICAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6
OmNyZWF0ZShXVEZNb3ZlKGdzdFNhbXBsZSksIHsgfSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGlj
X2Nhc3Q8VmlkZW9GcmFtZTo6Um90YXRpb24+KGZyYW1lLnJvdGF0aW9uKCkpLCBmYWxzZSwgV1RG
TW92ZShtZXRhZGF0YSkpLCB7IH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VMaWJXZWJSVEMuY3BwCmluZGV4IGM2ZGNhZDc1MjVlZGJlNjhkMTEwYWUwMjEyNTcxY2IzNmI0
Zjg2ZmIuLjBkMTU3MzAwNzA1MTI2MWZmNzQ1MzkzODViYmY3ODM4MzYxYTkzMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFt
ZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKQEAgLTUwLDE5ICs1MCwxOSBAQCBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEM6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUxpYldlYlJUQyhSZWY8TQogewogfQogCi12b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUxpYldlYlJUQzo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
TGliV2ViUlRDOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZp
ZGVvRnJhbWVUaW1lTWV0YWRhdGEpCiB7Ci0gICAgc3dpdGNoIChzYW1wbGUudmlkZW9Sb3RhdGlv
bigpKSB7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICBz
d2l0Y2ggKHZpZGVvRnJhbWUucm90YXRpb24oKSkgeworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90
YXRpb246Ok5vbmU6CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9S
b3RhdGlvbl8wOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpVcHNpZGVEb3duOgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lk
ZURvd246CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlv
bl8xODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246OlJpZ2h0OgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAg
ICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6CisgICAg
Y2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDoKICAgICAgICAgbV9jdXJyZW50Um90YXRp
b24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmgKaW5kZXggN2IxZGVkYzE4OGUzMzVhNWE4
ZDA2MmZlMmYwM2ExZGFmMTUzNGM5ZS4uNzAyNDgxNGFhYWY2YjdiZjFmYjRmZjE5YmJhODFmZjMz
ZmQ2YjVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oCkBAIC00MSw4ICs0
MSw4IEBAIHByaXZhdGU6CiAKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0Zy
YW1lQnVmZmVyPiBjcmVhdGVCbGFja0ZyYW1lKHNpemVfdCwgc2l6ZV90KSBmaW5hbDsKIAotICAg
IC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgQVBJCi0gICAgdm9p
ZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEpIGZpbmFsOworICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZl
ciBBUEkKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCAyNGUxMWFlMTNmYmJlN2MxYzg2ZmZhNmE4Zjcw
YjI0ZGY2MWZlNmExLi41ODBjY2JiZjU1NDQxMTJjMzZiM2YxMzg2ZDM1ZjlmZmJlYWU5NWYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgog
ICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYTsgfQogICAgIGJvb2wgaW50
ZXJydXB0ZWQoKSBjb25zdCBmaW5hbDsKIAotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
IHNhbXBsZVJvdGF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zYW1wbGVSb3RhdGlvbjsg
fQorICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHZpZGVvRnJhbWVSb3RhdGlvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fdmlkZW9GcmFtZVJvdGF0aW9uOyB9CiAgICAgdm9pZCBzZXRGcmFtZVJh
dGVXaXRoUHJlc2V0KGRvdWJsZSwgUmVmUHRyPFZpZGVvUHJlc2V0PikgZmluYWw7CiAgICAgYm9v
bCBwcmVmZXJzUHJlc2V0KFZpZGVvUHJlc2V0JikgZmluYWw7CiAgICAgdm9pZCBnZW5lcmF0ZVBy
ZXNldHMoKSBmaW5hbDsKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0
U2Vzc2lvblNpemVBbmRGcmFtZVJhdGUoKTsKICAgICBib29sIHNldFByZXNldChOU1N0cmluZyop
OwotICAgIHZvaWQgY29tcHV0ZVNhbXBsZVJvdGF0aW9uKCk7CisgICAgdm9pZCBjb21wdXRlVmlk
ZW9GcmFtZVJvdGF0aW9uKCk7CiAgICAgQVZGcmFtZVJhdGVSYW5nZSogZnJhbWVEdXJhdGlvbkZv
ckZyYW1lUmF0ZShkb3VibGUpOwogCiAgICAgLy8gT3JpZW50YXRpb25Ob3RpZmllcjo6T2JzZXJ2
ZXIgQVBJCkBAIC0xMTgsMTMgKzExOCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVmVy
aWZ5Q2FwdHVyaW5nVGltZXIoKTsKICAgICB2b2lkIHZlcmlmeUlzQ2FwdHVyaW5nKCk7CiAKLSAg
ICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1fYnVmZmVyOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiBt
X2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0PiBtX3ZpZGVv
T3V0cHV0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2lt
YWdlVHJhbnNmZXJTZXNzaW9uOwogCiAgICAgaW50IG1fc2Vuc29yT3JpZW50YXRpb24geyAwIH07
CiAgICAgaW50IG1fZGV2aWNlT3JpZW50YXRpb24geyAwIH07Ci0gICAgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gbV9zYW1wbGVSb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpOb25lIH07CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gbV92aWRlb0ZyYW1lUm90YXRpb24g
eyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogCiAgICAgc3RkOjpvcHRpb25hbDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdzOwogICAgIHN0ZDo6b3B0
aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMzc4YzlhZjk3ZDc1MjVjZGZjMjg1NWZl
MTg0MGE5Njg2MWFkYzE3ZS4uMmJjNjJmZTg1NDU3YzUzNjNiNGIwNThiZmNjY2FkNzEzMzA2OTJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjUxLDcgKzI1MSw3IEBAIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNl
dHRpbmdzKCkKICAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUoZnJhbWVSYXRlKCkpOwogCiAgICAg
YXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGlmIChtX3NhbXBsZVJvdGF0aW9uID09IE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IG1fc2FtcGxlUm90YXRpb24gPT0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIGlmIChtX3ZpZGVvRnJhbWVSb3Rh
dGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCB8fCBtX3ZpZGVvRnJhbWVSb3RhdGlv
biA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAgIHNpemUgPSBzaXplLnRy
YW5zcG9zZWRTaXplKCk7CiAgICAgCiAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgp
KTsKQEAgLTQ5Niw3ICs0OTYsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR1cENh
cHR1cmVTZXNzaW9uKCkKICAgICBzZXRTZXNzaW9uU2l6ZUFuZEZyYW1lUmF0ZSgpOwogCiAgICAg
bV9zZW5zb3JPcmllbnRhdGlvbiA9IHNlbnNvck9yaWVudGF0aW9uRnJvbVZpZGVvT3V0cHV0KG1f
dmlkZW9PdXRwdXQuZ2V0KCkpOwotICAgIGNvbXB1dGVTYW1wbGVSb3RhdGlvbigpOworICAgIGNv
bXB1dGVWaWRlb0ZyYW1lUm90YXRpb24oKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTIx
LDM4ICs1MjEsMzggQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6b3JpZW50YXRpb25DaGFu
Z2VkKGludCBvcmllbnRhdGlvbikKIHsKICAgICBBU1NFUlQob3JpZW50YXRpb24gPT0gMCB8fCBv
cmllbnRhdGlvbiA9PSA5MCB8fCBvcmllbnRhdGlvbiA9PSAtOTAgfHwgb3JpZW50YXRpb24gPT0g
MTgwKTsKICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247Ci0gICAgY29tcHV0
ZVNhbXBsZVJvdGF0aW9uKCk7Ci0gICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURF
TlRJRklFUiwgInJvdGF0aW9uID0gIiwgbV9zYW1wbGVSb3RhdGlvbiwgIiwgb3JpZW50YXRpb24g
PSAiLCBtX2RldmljZU9yaWVudGF0aW9uKTsKKyAgICBjb21wdXRlVmlkZW9GcmFtZVJvdGF0aW9u
KCk7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgInJvdGF0
aW9uID0gIiwgbV92aWRlb0ZyYW1lUm90YXRpb24sICIsIG9yaWVudGF0aW9uID0gIiwgbV9kZXZp
Y2VPcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNvbXB1dGVT
YW1wbGVSb3RhdGlvbigpCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjb21wdXRlVmlkZW9G
cmFtZVJvdGF0aW9uKCkKIHsKICAgICBib29sIGZyb250Q2FtZXJhID0gW2RldmljZSgpIHBvc2l0
aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlvbkZyb250OwotICAgIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHNhbXBsZVJvdGF0aW9uOworICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHZp
ZGVvRnJhbWVSb3RhdGlvbjsKICAgICBzd2l0Y2ggKG1fc2Vuc29yT3JpZW50YXRpb24gLSBtX2Rl
dmljZU9yaWVudGF0aW9uKSB7CiAgICAgY2FzZSAwOgotICAgICAgICBzYW1wbGVSb3RhdGlvbiA9
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgICAgICB2aWRlb0ZyYW1lUm90
YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSAxODA6CiAgICAgY2FzZSAtMTgwOgotICAgICAgICBzYW1wbGVSb3RhdGlvbiA9IE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOworICAgICAgICB2aWRlb0ZyYW1lUm90
YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSA5MDoKICAgICBjYXNlIC0yNzA6Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9uID0g
ZnJvbnRDYW1lcmEgPyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCA6IE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDsKKyAgICAgICAgdmlkZW9GcmFtZVJvdGF0aW9uID0g
ZnJvbnRDYW1lcmEgPyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCA6IFZpZGVvRnJhbWU6OlJv
dGF0aW9uOjpSaWdodDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAtOTA6CiAgICAgY2FzZSAy
NzA6Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9uID0gZnJvbnRDYW1lcmEgPyBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6UmlnaHQgOiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsK
KyAgICAgICAgdmlkZW9GcmFtZVJvdGF0aW9uID0gZnJvbnRDYW1lcmEgPyBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6UmlnaHQgOiBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHNhbXBsZVJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CisgICAg
ICAgIHZpZGVvRnJhbWVSb3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogICAg
IH0KLSAgICBpZiAoc2FtcGxlUm90YXRpb24gPT0gbV9zYW1wbGVSb3RhdGlvbikKKyAgICBpZiAo
dmlkZW9GcmFtZVJvdGF0aW9uID09IG1fdmlkZW9GcmFtZVJvdGF0aW9uKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3NhbXBsZVJvdGF0aW9uID0gc2FtcGxlUm90YXRpb247CisgICAgbV92aWRl
b0ZyYW1lUm90YXRpb24gPSB2aWRlb0ZyYW1lUm90YXRpb247CiAgICAgbm90aWZ5U2V0dGluZ3NE
aWRDaGFuZ2VPYnNlcnZlcnMoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6Oldp
ZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KTsKIH0KIApA
QCAtNTYxLDEyICs1NjEsMTIgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZU91
dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFWQ2EKICAgICBpZiAoKytt
X2ZyYW1lc0NvdW50IDw9IGZyYW1lc1RvRHJvcFdoZW5TdGFydGluZykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlQnVm
ZmVyLCBbY2FwdHVyZUNvbm5lY3Rpb24gaXNWaWRlb01pcnJvcmVkXSwgbV9zYW1wbGVSb3RhdGlv
bik7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlQnVm
ZmVyLCBbY2FwdHVyZUNvbm5lY3Rpb24gaXNWaWRlb01pcnJvcmVkXSwgbV92aWRlb0ZyYW1lUm90
YXRpb24pOwogICAgIG1fYnVmZmVyID0gJnZpZGVvRnJhbWUuZ2V0KCk7CiAgICAgc2V0SW50cmlu
c2ljU2l6ZShleHBhbmRlZEludFNpemUodmlkZW9GcmFtZS0+cHJlc2VudGF0aW9uU2l6ZSgpKSk7
CiAgICAgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YTsKICAgICBtZXRhZGF0YS5jYXB0
dXJlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCk7Ci0gICAg
ZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKFdURk1vdmUodmlkZW9GcmFtZSksIG1ldGFk
YXRhKTsKKyAgICBkaXNwYXRjaFZpZGVvRnJhbWVUb09ic2VydmVycyhXVEZNb3ZlKHZpZGVvRnJh
bWUpLCBtZXRhZGF0YSk7CiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1cmVT
ZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggMDM1MzI1OGFiNjFmNDJkYTQyM2MxNjU3NTQxYzA4
NzAzNTNiZGRkNC4uYzA1NWQzYzYzM2RkMGVmMDYxNGFlZjNjYmNkMDc5MTljNDc5MWQxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtOTMsMTYgKzkzLDE2
IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigp
CiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKCktPm5h
dGl2ZUltYWdlKCkpCiAgICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpOwogCi0gICAgYXV0byBzYW1wbGVUaW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRo
RG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNvbmRzKCkpOwotICAgIGF1dG8gc2Ft
cGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUocGxh
dGZvcm1JbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3RhdGlvbigpKTsK
LSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKKyAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMo
KSk7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRl
VmlkZW9GcmFtZShwbGF0Zm9ybUltYWdlLmdldCgpLCBwcmVzZW50YXRpb25UaW1lLCBzaXplKCks
IHZpZGVvRnJhbWVSb3RhdGlvbigpKTsKKyAgICBpZiAoIXZpZGVvRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpOwotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNhbXBsZUJ1ZmZlciA9IFdURk1vdmUoc2FtcGxlQnVm
ZmVyKSwgY2FwdHVyZVRpbWVdKCkgbXV0YWJsZSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdmlkZW9GcmFtZSA9IFdURk1v
dmUodmlkZW9GcmFtZSksIGNhcHR1cmVUaW1lXSgpIG11dGFibGUgewogICAgICAgICBWaWRlb0Zy
YW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgICAgICBtZXRhZGF0YS5jYXB0dXJlVGltZSA9
IGNhcHR1cmVUaW1lOwotICAgICAgICBkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoKnNh
bXBsZUJ1ZmZlciwgbWV0YWRhdGEpOworICAgICAgICBkaXNwYXRjaFZpZGVvRnJhbWVUb09ic2Vy
dmVycygqdmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCmluZGV4IDkyYzJmZWM2ODJkZDZh
ZTc2NGZiYjI5MDRjYWM4ZmVmYTQ5NjczNGYuLjFlOTEzM2U5ZjVjOTRmNDIyZTQ4MjI2YzVmYjNi
Y2YyNjViZTk4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5oCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9UcmFja0lu
dGVyZmFjZT4mJiwgU3RyaW5nJiYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBw
aXhlbEJ1ZmZlckZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpOwogICAg
IENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSk7Ci0gICAgUmVmUHRyPFZpZGVvRnJhbWU+IHRv
VmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbik7Ci0gICAgUmVmPFZpZGVvRnJhbWU+IGNyZWF0ZVZpZGVvU2FtcGxlRnJvbUNWUGl4
ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGlu
dDY0X3QpOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiB0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRj
OjpWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZTo6Um90YXRpb24pOworICAgIFJlZjxWaWRlb0ZyYW1l
PiBjcmVhdGVWaWRlb1NhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uLCBpbnQ2NF90KTsKIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5rSW50
ZXJmYWNlCiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmlu
ZGV4IGVlMjgyM2MxZWE3Mzg1ZDlhMTg0MDE5NmM3ZGNiYjZiMzEwNDFiMDUuLmUwMmY4MzAzOGE1
YzFhYmFlMjgxMzBmYWQ0OTQxNTQ2ZDNiZmMyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTkxLDEyICs5MSwxMiBAQCBDVlBpeGVs
QnVmZmVyUG9vbFJlZiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZm
ZXJQb29sKHNpemVfdCB3aQogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyUG9vbC5nZXQoKTsKIH0K
IAotUmVmPFZpZGVvRnJhbWU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpjcmVh
dGVWaWRlb1NhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZm
ZXIsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBpbnQ2NF90IHRpbWVTdGFt
cCkKK1JlZjxWaWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y3Jl
YXRlVmlkZW9TYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgaW50NjRfdCB0aW1lU3RhbXApCiB7
CiAgICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKE1lZGlhVGltZSh0aW1lU3RhbXAsIDEw
MDAwMDApLCBmYWxzZSwgcm90YXRpb24sIHBpeGVsQnVmZmVyKTsKIH0KIAotUmVmUHRyPFZpZGVv
RnJhbWU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUoY29u
c3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24g
cm90YXRpb24pCitSZWZQdHI8VmlkZW9GcmFtZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBWaWRl
b0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBpZiAobXV0ZWQoKSkgewogICAgICAg
ICBpZiAoIW1fYmxhY2tGcmFtZSB8fCBtX2JsYWNrRnJhbWVXaWR0aCAhPSBmcmFtZS53aWR0aCgp
IHx8IG1fYmxhY2tGcmFtZUhlaWdodCAhPSBmcmFtZS5oZWlnaHQoKSkgewpAQCAtMTQ0LDIwICsx
NDQsMjAgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShj
b25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIHdlYnJ0Y1YKICAgICB1bnNpZ25lZCB3aWR0aCA9IHdl
YnJ0Y1ZpZGVvRnJhbWUud2lkdGgoKTsKICAgICB1bnNpZ25lZCBoZWlnaHQgPSB3ZWJydGNWaWRl
b0ZyYW1lLmhlaWdodCgpOwogCi0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRp
b247CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb247CiAgICAgc3dpdGNoICh3ZWJy
dGNWaWRlb0ZyYW1lLnJvdGF0aW9uKCkpIHsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRp
b25fMDoKLSAgICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZTsKKyAgICAgICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDoKLSAgICAgICAg
cm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsKKyAgICAg
ICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOgotICAgICAgICByb3Rh
dGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDsKKyAgICAgICAgcm90YXRp
b24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ7CiAgICAgICAgIHN0ZDo6c3dhcCh3aWR0
aCwgaGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0
aW9uXzI3MDoKLSAgICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdDsKKyAgICAgICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDsKICAg
ICAgICAgc3RkOjpzd2FwKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0xNzEsNyArMTcxLDcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6
T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIHdlYnJ0Y1YKICAgICAgICAgcmV0dXJu
OwogCiAgICAgc2V0SW50cmluc2ljU2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICB2
aWRlb1NhbXBsZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFGcm9tVmlkZW9GcmFtZSh3
ZWJydGNWaWRlb0ZyYW1lKSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwg
bWV0YWRhdGFGcm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2EuY3BwCmluZGV4IDNhM2ZjYmY5NmVmODIwMWY5MGJjZTg3ZTVlMmRlYmMxZGQxY2Q2
MDYuLmJjZWY2YTE1MDYxZDAyYTYyNTg2ODMzNTI1ZDJmOGUyYTliYjQ3NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcApAQCAtNjMsNDYg
KzYzLDQ2IEBAIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlCiB7CiB9CiAKLXZvaWQgUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxl
JiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZUNvY29hOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJh
bWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCiB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgaWYgKCEoKyttX251bWJlck9mRnJhbWVzICUgNjApKQogICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJmcmFtZSAiLCBtX251bWJlck9mRnJhbWVzKTsKICNlbmRpZgogCi0g
ICAgc3dpdGNoIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSB7Ci0gICAgY2FzZSBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICBzd2l0Y2ggKHZpZGVvRnJhbWUucm90YXRpb24o
KSkgeworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6CiAgICAgICAgIG1fY3Vy
cmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgIGNh
c2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd246CiAgICAgICAgIG1fY3VycmVudFJv
dGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgorICAgIGNhc2UgVmlkZW9G
cmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0
Yzo6a1ZpZGVvUm90YXRpb25fOTA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OkxlZnQ6CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6
TGVmdDoKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9u
XzI3MDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRBcHBseVJvdGF0
aW9uID0gbV9zaG91bGRBcHBseVJvdGF0aW9uICYmIG1fY3VycmVudFJvdGF0aW9uICE9IHdlYnJ0
Yzo6a1ZpZGVvUm90YXRpb25fMDsKLSAgICBpZiAoIXNob3VsZEFwcGx5Um90YXRpb24gJiYgaXM8
VmlkZW9GcmFtZT4oc2FtcGxlKSkgewotICAgICAgICBpZiAoZG93bmNhc3Q8VmlkZW9GcmFtZT4o
c2FtcGxlKS5pc1JlbW90ZVByb3h5KCkpIHsKLSAgICAgICAgICAgIFJlZiB2aWRlb0ZyYW1lIHsg
ZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKSB9OwotICAgICAgICAgICAgYXV0byBzaXplID0g
c2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKLSAgICAgICAgICAgIHNlbmRGcmFtZSh3ZWJydGM6
OnRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlcigmdmlkZW9GcmFtZS5sZWFrUmVmKCksCisgICAgaWYg
KCFzaG91bGRBcHBseVJvdGF0aW9uKSB7CisgICAgICAgIGlmICh2aWRlb0ZyYW1lLmlzUmVtb3Rl
UHJveHkoKSkgeworICAgICAgICAgICAgUmVmIHJlbW90ZVZpZGVvRnJhbWUgeyB2aWRlb0ZyYW1l
IH07CisgICAgICAgICAgICBhdXRvIHNpemUgPSB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUo
KTsKKyAgICAgICAgICAgIHNlbmRGcmFtZSh3ZWJydGM6OnRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZl
cigmcmVtb3RlVmlkZW9GcmFtZS5sZWFrUmVmKCksCiAgICAgICAgICAgICAgICAgW10oYXV0byog
cG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHBvaW50ZXIpLT5waXhl
bEJ1ZmZlcigpOyB9LAogICAgICAgICAgICAgICAgIFtdKGF1dG8qIHBvaW50ZXIpIHsgc3RhdGlj
X2Nhc3Q8VmlkZW9GcmFtZSo+KHBvaW50ZXIpLT5kZXJlZigpOyB9LAogICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhl
aWdodCgpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChk
b3duY2FzdDxWaWRlb0ZyYW1lPihzYW1wbGUpLmlzTGliV2ViUlRDKCkpIHsKLSAgICAgICAgICAg
IHNlbmRGcmFtZShkb3duY2FzdDxWaWRlb0ZyYW1lTGliV2ViUlRDPihzYW1wbGUpLmJ1ZmZlcigp
KTsKKyAgICAgICAgaWYgKHZpZGVvRnJhbWUuaXNMaWJXZWJSVEMoKSkgeworICAgICAgICAgICAg
c2VuZEZyYW1lKGRvd25jYXN0PFZpZGVvRnJhbWVMaWJXZWJSVEM+KHZpZGVvRnJhbWUpLmJ1ZmZl
cigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBzYW1wbGUucGl4ZWxCdWZmZXIoKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gdmlkZW9GcmFtZS5waXhlbEJ1ZmZlcigpOwogICAgIGF1dG8gcGl4ZWxGb3JtYXRUeXBlID0g
Q1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlcik7CiAKICAgICBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydGVkQnVmZmVyID0gcGl4ZWxCdWZmZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oCmluZGV4IGZl
N2RkZDEwODY2Yzc3OTU5Y2YwMjczMmM3M2ExZGVlMmJlNjQxYmQuLmJmY2JhZmQyYWM0NDRiMjc1
ZDE2ZDlkZDYxZThiNWYzZTk3MWZhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYS5oCkBAIC00NCw4ICs0NCw4IEBAIHByaXZhdGU6CiAKICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBjcmVhdGVCbGFja0Zy
YW1lKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgZmluYWw7CiAKLSAgICAvLyBSZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIEFQSQotICAgIHZvaWQgdmlkZW9TYW1w
bGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsK
KyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgQVBJCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0VG9Z
VVYoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJv
dGF0ZVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5k
ZXggMzliOTk4ZDRmNTQ1OWI5OTI0MjA1NTYzYjk2ZjdkZDJiMjU0ZDgxZC4uZDQ3OGUxMzk3NWU2
ZDdkN2U3NWQyYzE0YjRhNzMzMDM4YzFmNDdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAi
QWZmaW5lVHJhbnNmb3JtLmgiCiAjaW1wb3J0ICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgiCiAj
aW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgogI2ltcG9ydCAiUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgogI2ltcG9ydCAiUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5o
IgogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IDNjZjc0NjBjODBlM2JlMWQ1YmEzZjBjZWQ3YzE5YjI1ZGYyOWFiZjIuLjRmZWM0ZDkzOWJi
MjkyZDY0NjQ5Zjk1ZGUyZDc3ZTk3Mjg2ODA3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xODAs
NyArMTgwLDcgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6c2V0dGluZ3MoKQogICAgIHNldHRpbmdzLnNldEZyYW1lUmF0ZShmcmFt
ZVJhdGUoKSk7CiAgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIGlmIChtb2NrQ2Ft
ZXJhKCkpIHsKLSAgICAgICAgaWYgKG1fZGV2aWNlT3JpZW50YXRpb24gPT0gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246OkxlZnQgfHwgbV9kZXZpY2VPcmllbnRhdGlvbiA9PSBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9u
ID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IG1fZGV2aWNlT3JpZW50YXRpb24gPT0g
VmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0KQogICAgICAgICAgICAgc2l6ZSA9IHNpemUudHJh
bnNwb3NlZFNpemUoKTsKICAgICB9CiAgICAgc2V0dGluZ3Muc2V0V2lkdGgoc2l6ZS53aWR0aCgp
KTsKQEAgLTQ5NiwxNiArNDk2LDE2IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Om9y
aWVudGF0aW9uQ2hhbmdlZChpbnQgb3JpZW50YXRpb24pCiAgICAgYXV0byBkZXZpY2VPcmllbnRh
dGlvbiA9IG1fZGV2aWNlT3JpZW50YXRpb247CiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewog
ICAgIGNhc2UgMDoKLSAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpOb25lOworICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gVmlkZW9G
cmFtZTo6Um90YXRpb246Ok5vbmU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgOTA6Ci0gICAg
ICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Umln
aHQ7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6
UmlnaHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgLTkwOgotICAgICAgICBtX2RldmljZU9y
aWVudGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ7CisgICAgICAgIG1f
ZGV2aWNlT3JpZW50YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSAxODA6Ci0gICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsKKyAgICAgICAgbV9kZXZpY2VPcmll
bnRhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
aAppbmRleCBmYzVmYzdhYTFjYjc2ZmE2ZDk3MzkwNTg2NWJmYWZlY2VkZTM2YmM3Li5kOGJhYzU2
MWRhNGIxM2ZjMzcyMWRjMDg0NDVjNTQyZDE0OWQwNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC02Miw3
ICs2Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIFNlY29uZHMgZWxhcHNlZFRpbWUoKTsKICAgICB2
b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc+KSBvdmVycmlkZTsKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBzYW1w
bGVSb3RhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb247IH0K
KyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiB2aWRlb0ZyYW1lUm90YXRpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBnZW5lcmF0ZVByZXNl
dHMoKSBvdmVycmlkZTsKIAogICAgIEludFNpemUgY2FwdHVyZVNpemUoKSBjb25zdDsKQEAgLTEy
Miw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIENvbG9yIG1fZmlsbENvbG9yIHsgQ29sb3I6OmJs
YWNrIH07CiAgICAgTW9ja01lZGlhRGV2aWNlIG1fZGV2aWNlOwogICAgIFJlZlB0cjxWaWRlb1By
ZXNldD4gbV9wcmVzZXQ7Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV9kZXZpY2VP
cmllbnRhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgVmlk
ZW9GcmFtZTo6Um90YXRpb24gbV9kZXZpY2VPcmllbnRhdGlvbiB7IFZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpOb25lIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTg2YWU1ZmYyYmNjNWMyNzM1NDJhOWNlZjM1ZTc0ZDdh
MGE4ZjYyMy4uNTY3MGI2YmZhNjdlM2RiNmRiNzY4Mjg5NjZiNjJmYjUxMThkYzNhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTUyNSw3ICs1NTI1LDcgQEAgdm9pZCBJ
bnRlcm5hbHM6OnN0b3BPYnNlcnZpbmdSZWFsdGltZU1lZGlhU291cmNlKCkKICAgICBjYXNlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvOgogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZTo6U2NyZWVuOgogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
V2luZG93OgotICAgICAgICBtX3RyYWNrU291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICAgICAgbV90cmFja1NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVy
KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1NTIsNyArNTU1
Miw3IEBAIHZvaWQgSW50ZXJuYWxzOjpvYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVh
bVRyYWNrJiB0cmFjaykKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVv
OgogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6U2NyZWVuOgogICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6V2luZG93OgotICAgICAgICBtX3RyYWNrU291cmNl
LT5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgbV90cmFja1NvdXJjZS0+
YWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTU1NjksMTMgKzU1NjksMTMgQEAgdm9pZCBJbnRlcm5hbHM6Om1lZGlhU3RyZWFt
VHJhY2tWaWRlb0ZyYW1lUm90YXRpb24oRE9NUHJvbWlzZURlZmVycmVkPElETFNob3J0PiYKICAg
ICBwcm9taXNlLnJlc29sdmUobV90cmFja1ZpZGVvUm90YXRpb24pOwogfQogCi12b2lkIEludGVy
bmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSkKK3ZvaWQgSW50ZXJuYWxzOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVv
RnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCiB7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2FtcGxlID0g
UmVmIHsgc2FtcGxlIH1dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB2aWRlb0ZyYW1lID0gUmVmIHsgdmlkZW9GcmFtZSB9XSB7CiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fdHJh
Y2tWaWRlb1NhbXBsZUNvdW50Kys7Ci0gICAgICAgIG1fdHJhY2tWaWRlb1JvdGF0aW9uID0gc3Rh
dGljX2Nhc3Q8aW50PihzYW1wbGUtPnZpZGVvUm90YXRpb24oKSk7CisgICAgICAgIG1fdHJhY2tW
aWRlb1JvdGF0aW9uID0gc3RhdGljX2Nhc3Q8aW50Pih2aWRlb0ZyYW1lLT5yb3RhdGlvbigpKTsK
ICAgICAgICAgaWYgKCFtX25leHRUcmFja0ZyYW1lUHJvbWlzZSkKICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtNTU4Myw3ICs1NTgzLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZh
aWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEKICAgICAg
ICAgaWYgKCF2aWRlb1NldHRpbmdzLndpZHRoKCkgfHwgIXZpZGVvU2V0dGluZ3MuaGVpZ2h0KCkp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byByZ2JhID0gc2FtcGxlLT5nZXRS
R0JBSW1hZ2VEYXRhKCk7CisgICAgICAgIGF1dG8gcmdiYSA9IHZpZGVvRnJhbWUtPmdldFJHQkFJ
bWFnZURhdGEoKTsKICAgICAgICAgaWYgKCFyZ2JhKQogICAgICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBhOTJhZmQ4MjU1YTFlY2Q0Yzc5ZmVhNWU1
NTMyMmY5OWQ1MzBiZWZkLi45NzM0NmQ5ZGIyOTVjNTRmMmQ0ZTA1YWQxZTJlMDhhNjJhNmM4MTI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBjbGFz
cyBJbnRlcm5hbHMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcm5hbHM+LCBwcml2YXRl
IENvbnRleHREZXN0cnVjdGlvbgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICAgICAsIHByaXZhdGUgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAgICwgcHJpdmF0ZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlcgogI2VuZGlmCiAgICAgewogcHVibGljOgpAQCAt
MTI5Niw3ICsxMjk2LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCi0gICAgdm9pZCB2aWRlb1Nh
bXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFs
OworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRp
bWVNZXRhZGF0YSkgZmluYWw7CiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1w
bGVPYnNlcnZlciBBUEkKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBzaXplX3QpIGZpbmFsIHsgbV90cmFja0F1ZGlvU2FtcGxlQ291bnQrKzsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggMGUxNmRiYWY4MDc1NTM3YzE0
NzQzNjdlMzk5ZWVmNWYzNGU4MmYyNC4uYjNhMTk4MGUzN2YyMzFmYjkxMjE4MmEwMDc2ZjA3YWVl
MzE4YjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtNTYsMTMg
KzU2LDkgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29weVRleHR1cmVGcm9tVmlk
ZW9GcmFtZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWUKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIE5vdGU6IFRoaXMgZXh0
cmEgY2FzdGluZyBpcyBuZWVkZWQgc2luY2UgVmlkZW9GcmFtZXMgYXJlIHN0aWxsIE1lZGlhU2Ft
cGxlcy4KLSAgICBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiB2aWRlb0ZyYW1lQ1Y7Ci0g
ICAgaWYgKGlzPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4oKnZpZGVvRnJhbWUpKQotICAgICAgICB2
aWRlb0ZyYW1lQ1YgPSAmZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPigqdmlkZW9GcmFt
ZSk7Ci0gICAgZWxzZSBpZiAoaXM8V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDPigqdmlkZW9G
cmFtZSkpCi0gICAgICAgIHZpZGVvRnJhbWVDViA9IGRvd25jYXN0PFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlQVZGT2JqQz4oKnZpZGVvRnJhbWUpLnZpZGVvRnJhbWUoKTsKLSAgICBlbHNlIHsKKworICAg
IGF1dG8gdmlkZW9GcmFtZUNWID0gdmlkZW9GcmFtZS0+YXNWaWRlb0ZyYW1lQ1YoKTsKKyAgICBp
ZiAoIXZpZGVvRnJhbWVDVikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gUHJv
Z3JhbW1pbmcgZXJyb3IsIG5vdCBhIElQQyBhdHRhY2suCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKaW5k
ZXggMDhiODBhNThmZWY5NWQyYWFjNzBjZWNkZTljZTY3MjBhNTdhNzk5Mi4uNGJhYzliMzY4NTMz
ZWEwOTcxNTIzZDEzMjQ3NWZkMjQ0YTMwZjRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZUFWRk9iakMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1ZpZGVvRnJhbWVDVi5oPgogI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oPgogI2VuZGlmCkBAIC04NCw3ICs4Myw3IEBAIHZvaWQgUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXA6OmNsb3NlKCkKICAgICAvLyBUT0RPOiBhZGQgY2FuIGhhcHBlbiBhZnRl
ciBzdG9wcGluZy4KIH0KIAotUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjphZGQoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmIGZy
YW1lKQorUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVP
YmplY3RIZWFwOjphZGQoUmVmPFdlYkNvcmU6OlZpZGVvRnJhbWU+JiYgZnJhbWUpCiB7CiAgICAg
YXV0byB3cml0ZSA9IFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5jZTo6Z2VuZXJhdGVGb3JB
ZGQoKTsKICAgICBhdXRvIG5ld0ZyYW1lUmVmZXJlbmNlID0gd3JpdGUucmV0aXJlZFJlZmVyZW5j
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaAppbmRleCA1M2VkNTZlMGFlMGRlZWY2MTU0YzhjZTA0
YTliMTZjZjE1MGU2OGIwLi5jMDhhNWE0Yzc3ZjYwNTIxNjYyN2M1MGIxMGE0MTFlZjFhYjkyYzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9G
cmFtZU9iamVjdEhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCIKICNpbmNsdWRl
ICJUaHJlYWRTYWZlT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvRnJhbWUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGlj
OgogICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOwogCiAgICAgdm9pZCBjbG9zZSgp
OwotICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBhZGQoUmVmPFdlYkNvcmU6
Ok1lZGlhU2FtcGxlPiYmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+IGdldChS
ZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJlYWQpIHsgcmV0dXJuIG1faGVhcC5yZXRp
cmUoV1RGTW92ZShyZWFkKSwgMF9zKTsgfQorICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJv
cGVydGllcyBhZGQoUmVmPFdlYkNvcmU6OlZpZGVvRnJhbWU+JiYpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpWaWRlb0ZyYW1lPiBnZXQoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiByZWFk
KSB7IHJldHVybiBtX2hlYXAucmV0aXJlKFdURk1vdmUocmVhZCksIDBfcyk7IH0KIAogICAgIHZv
aWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYp
IHsgY2xvc2UoKTsgfQogCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICBUaHJlYWRTYWZl
T2JqZWN0SGVhcDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlPj4gbV9oZWFwOworICAgIFRocmVhZFNhZmVPYmplY3RIZWFwPFJlbW90ZVZpZGVv
RnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZT4+IG1faGVhcDsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIG1fc2hhcmVkVmlk
ZW9GcmFtZVdyaXRlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXggZDhhMjkyMjY2MTZiMjY0
N2YxMWY4NDU2MDI5ZjNkZWRlZTIzZTIxNC4uMGY4MmQ5NDU1YTk5NTRlYjMwZWI2ZTNhYTFmZjEw
ZjNhNjc5MjJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC05Nyw3ICs5Nyw3IEBAIGF1dG8gTGliV2Vi
UlRDQ29kZWNzUHJveHk6OmNyZWF0ZURlY29kZXJDYWxsYmFjayhSVENEZWNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyCiAgICAgaWYgKHVzZVJlbW90ZUZyYW1lcykKICAgICAgICAgdmlkZW9GcmFt
ZU9iamVjdEhlYXAgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLnB0cigpOwogICAgIHJldHVybiBb
aWRlbnRpZmllciwgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbiwgcmVzb3VyY2VPd25lciA9IG1f
cmVzb3VyY2VPd25lciwgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBXVEZNb3ZlKHZpZGVvRnJhbWVP
YmplY3RIZWFwKV0gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIHVpbnQzMl90IHRpbWVT
dGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApIG11dGFibGUgewotICAgICAgICBhdXRvIHZpZGVv
RnJhbWUgPSBXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShNZWRpYVRpbWUodGltZVN0YW1w
TnMsIDEpLCBmYWxzZSwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUs
IHBpeGVsQnVmZmVyKTsKKyAgICAgICAgYXV0byB2aWRlb0ZyYW1lID0gV2ViQ29yZTo6VmlkZW9G
cmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSwgZmFsc2UsIFdlYkNvcmU6
OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBwaXhlbEJ1ZmZlcik7CiAgICAgICAgIGlmIChy
ZXNvdXJjZU93bmVyKQogICAgICAgICAgICAgdmlkZW9GcmFtZS0+c2V0T3duZXJzaGlwSWRlbnRp
dHkocmVzb3VyY2VPd25lcik7CiAgICAgICAgIGlmICh2aWRlb0ZyYW1lT2JqZWN0SGVhcCkgewpA
QCAtMjE1LDE2ICsyMTUsMTYgQEAgTGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZXIqIExpYldl
YlJUQ0NvZGVjc1Byb3h5OjpmaW5kRW5jb2RlcihSVENFbmNvZGVySWRlbnQKICAgICByZXR1cm4g
Jml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVvUm90YXRp
b24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uKQorc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVvUm90YXRpb24gdG9XZWJS
VENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQog
ewogICAgIHN3aXRjaCAocm90YXRpb24pIHsKLSAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpOb25lOgorICAgIGNhc2UgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90
YXRpb246Ok5vbmU6CiAgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjoK
KyAgICBjYXNlIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgogICAg
ICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBXZWJDb3JlOjpW
aWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRl
b1JvdGF0aW9uXzkwOwotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246OkxlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDoK
ICAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcwOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDUyZjYxOGEzODZjMzBlYWY2
ZGJlMDg4MDE2NGY0YzlmMzI2OThiMTEuLmJmMGI5NDJlNDYxMzUzNGQwYTlmYTgzYmM4ODgyNGFm
YmExMWM5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIFJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0
X3QgbnVtYmVyTwogICAgIG1fd3JpdGVyLT5hcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcigqbV9hdWRp
b0J1ZmZlckxpc3QsIG1fZGVzY3JpcHRpb24sIHRpbWUsIG51bWJlck9mRnJhbWVzKTsKIH0KIAot
dm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShTaGFyZWRWaWRl
b0ZyYW1lJiYgc2hhcmVkVmlkZW9GcmFtZSkKK3ZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlk
ZW9GcmFtZUF2YWlsYWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYgc2hhcmVkVmlkZW9GcmFtZSkKIHsK
ICAgICBpZiAoYXV0byBmcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVJlYWRlci5yZWFkKFdURk1v
dmUoc2hhcmVkVmlkZW9GcmFtZSkpKQogICAgICAgICBtX3dyaXRlci0+YXBwZW5kVmlkZW9GcmFt
ZSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCAxY2MxYmIzYmZhMDA4MjAwMTFiMDc1OWJiMjcwZWRj
M2U1MzU0MTU2Li4zZjgxZWZiNDM0NTcxNWU4N2VjYzVlYTA1YTA4NDgwODY0YzA4OTUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKFNoYXJlZFZpZGVvRnJhbWUmJik7CisgICAgdm9pZCB2aWRlb0ZyYW1l
QXZhaWxhYmxlKFNoYXJlZFZpZGVvRnJhbWUmJik7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJik7CiAgICAg
dm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1l
c3NhZ2VzLmluCmluZGV4IDliN2Q5NmY2M2RkNDI4ZjJhMGRjY2ZiNjU4ZTJlODlhOWM2ZjYwMDcu
LjEyYmM4MDUwYjY0NWUzYjA4MzgzY2ZkYmJhM2U2YmQzYjg0MjBmYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1l
ZGlhUmVjb3JkZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5n
ZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3Jl
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKQogICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUgdGltZSwgdWludDY0
X3QgbnVtYmVyT2ZGcmFtZXMpCi0gICAgVmlkZW9TYW1wbGVBdmFpbGFibGUoc3RydWN0IFdlYktp
dDo6U2hhcmVkVmlkZW9GcmFtZSBmcmFtZSkKKyAgICBWaWRlb0ZyYW1lQXZhaWxhYmxlKHN0cnVj
dCBXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUpCiAgICAgRmV0Y2hEYXRhKCkgLT4gKElQ
Qzo6RGF0YVJlZmVyZW5jZSBidWZmZXIsIGRvdWJsZSB0aW1lQ29kZSkKICAgICBTdG9wUmVjb3Jk
aW5nKCkgLT4gKCkKICAgICBQYXVzZSgpIC0+ICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAKaW5kZXggOGQwNGYyY2M1YTc4OWE3YTRlOTU4NzQwYzdiNjhiNTM5M2U1YmE0Yi4u
MWQ3YWRhYjU2OTM5MzJlZDhkM2QzOThhNDA0ZGQ5M2U2NDAyMTg4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNm
b3JtIHRyYQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVSb290TGF5ZXJB
ZmZpbmVUcmFuc2Zvcm0odHJhbnNmb3JtKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFdlYkNv
cmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQordm9pZCBSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3Vu
ZHMsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihi
b3VuZHMsIHJvdGF0aW9uLCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2hvdWxkVXBk
YXRlUm9vdExheWVyOjpZZXMpOwogfQpAQCAtMTE2LDE1ICsxMTYsMTUgQEAgdm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci0+cGF1c2UoKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmVucXVldWUoU2hhcmVkVmlkZW9GcmFtZSYmIGZyYW1lKQordm9pZCBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVWaWRlb0ZyYW1lKFNoYXJlZFZpZGVvRnJhbWUmJiBm
cmFtZSkKIHsKICAgICBpZiAoYXV0byB2aWRlb0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lUmVh
ZGVyLnJlYWQoV1RGTW92ZShmcmFtZSkpKQotICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+ZW5xdWV1ZSh2aWRlb0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT5wcmVz
ZW50YXRpb25UaW1lKCkpOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5x
dWV1ZUJ1ZmZlcih2aWRlb0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT5wcmVzZW50
YXRpb25UaW1lKCkpOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQordm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQogewotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LT5jbGVhckVucXVldWVkU2FtcGxlcygpOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LT5jbGVhclZpZGVvRnJhbWVzKCk7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCAxNjFmM2M5NTllZDNjYmE3YjM4MmNlMjJm
NTI0OGI2ZDFiY2IyNDhmLi41OTc2ODg4OTczZDEyZjlkZTZkZWVkNmY1M2IyYzIwZDY4NzE5Y2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTcwLDEzICs3MCwxMyBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNw
bGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcik7CiAgICAgdm9pZCB1cGRhdGVBZmZpbmVUcmFu
c2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0pOwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRp
b24oQ0dSZWN0LCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CisgICAgdm9p
ZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJv
dGF0aW9uKTsKICAgICB2b2lkIGZsdXNoKCk7CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdl
KCk7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwotICAgIHZvaWQgZW5xdWV1
ZShTaGFyZWRWaWRlb0ZyYW1lJiYpOwotICAgIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKTsK
KyAgICB2b2lkIGVucXVldWVWaWRlb0ZyYW1lKFNoYXJlZFZpZGVvRnJhbWUmJik7CisgICAgdm9p
ZCBjbGVhclZpZGVvRnJhbWVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBo
b3JlKElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9y
eShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCmluZGV4IDczMTBlYmFmOWEyZjkxNTgwZTFm
ZDgxY2Q5ZGEyYjY2OTgwZWZhNzUuLjUyNGY0NWViNmYwNWNlNWFhZmJlMTEyNmZhNmY2NWRmZGY3
ZjM5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2Vz
LmluCkBAIC0yOSwxMSArMjksMTEgQEAgbWVzc2FnZXMgLT4gUmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAgICAgVXBkYXRlRGlzcGxheU1vZGUo
Ym9vbCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpCiAgICAgVXBkYXRlQWZm
aW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSkKLSAgICBVcGRhdGVCb3Vu
ZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiByb3RhdGlvbikKKyAgICBVcGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91
bmRzLCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikKICAgICBGbHVzaCgp
CiAgICAgRmx1c2hBbmRSZW1vdmVJbWFnZSgpCi0gICAgRW5xdWV1ZShzdHJ1Y3QgV2ViS2l0OjpT
aGFyZWRWaWRlb0ZyYW1lIGZyYW1lKQotICAgIENsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKKyAgICBF
bnF1ZXVlVmlkZW9GcmFtZShzdHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1lIGZyYW1lKQor
ICAgIENsZWFyVmlkZW9GcmFtZXMoKQogICAgIFBsYXkoKQogICAgIFBhdXNlKCkKICAgICBTZXRT
aGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmQ0NTNlNGRhNzljMmQ4MmQxYTkxZDA0MmYzNDUx
ZWI4ZWRkYzUwYi4uZmM1NzQ4MjQ1YzFlNDIzN2EyMmVmNTMxODI4YzA1NDVkZDc3ZTUzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQ
cm94eQogICAgIDogcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgogICAgICwg
cHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb1NhbXBsZU9ic2VydmVyCi0gICAgLCBw
cml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgICwg
cHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNvdXJjZVByb3h5KFJlYWx0aW1l
TWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24sIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIsIFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiYmIHNvdXJjZSwgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwPiYmIHZpZGVv
RnJhbWVPYmplY3RIZWFwKQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86CiAgICAgICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6U2NyZWVuOgogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGU6OldpbmRvdzoKLSAgICAgICAgICAgIG1fc291cmNlLT5hZGRWaWRlb1NhbXBsZU9i
c2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fc291cmNlLT5hZGRWaWRlb0ZyYW1lT2JzZXJ2
ZXIoKnRoaXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6Tm9uZToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6VmlkZW86CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
U2NyZWVuOgogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OldpbmRvdzoK
LSAgICAgICAgICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6Tm9uZToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTc4LDE2ICsx
NzgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY2FwdHVyZVNlbWFwaG9yZS0+c2lnbmFs
KCk7CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiByb3RhdGVWaWRlb0ZyYW1lSWZO
ZWVkZWQoTWVkaWFTYW1wbGUmIHNhbXBsZSkKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gcm90YXRl
VmlkZW9GcmFtZUlmTmVlZGVkKFZpZGVvRnJhbWUmIGZyYW1lKQogICAgIHsKLSAgICAgICAgaWYg
KG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lKSB7Ci0gICAgICAgICAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gcm90YXRlUGl4ZWxCdWZmZXIoc2FtcGxlKTsKLSAgICAgICAgICAgIHJldHVybiBWaWRl
b0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9N
aXJyb3JlZCgpLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgV1RGTW92ZShwaXhl
bEJ1ZmZlcikpOworICAgICAgICBpZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIGZyYW1lLnJv
dGF0aW9uKCkgIT0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUpIHsKKyAgICAgICAgICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihmcmFtZSk7CisgICAgICAgICAgICBy
ZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoZnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCBmcmFt
ZS5pc01pcnJvcmVkKCksIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKHBpeGVs
QnVmZmVyKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICZzYW1wbGU7CisgICAgICAgIHJl
dHVybiAmZnJhbWU7CiAgICAgfQogCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYgZnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpIGZpbmFsCisg
ICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIGZyYW1lLCBWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5hbAogICAgIHsKICAgICAgICAgYXV0byB2aWRlb0Zy
YW1lID0gcm90YXRlVmlkZW9GcmFtZUlmTmVlZGVkKGZyYW1lKTsKICAgICAgICAgaWYgKCF2aWRl
b0ZyYW1lKQpAQCAtMTk1LDM1ICsxOTUsMzUgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1fcmVz
b3VyY2VPd25lcikKICAgICAgICAgICAgIHZpZGVvRnJhbWUtPnNldE93bmVyc2hpcElkZW50aXR5
KG1fcmVzb3VyY2VPd25lcik7CiAgICAgICAgIGlmICghbV92aWRlb0ZyYW1lT2JqZWN0SGVhcCkg
ewotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJl
U2FtcGxlTWFuYWdlcjo6VmlkZW9GcmFtZUF2YWlsYWJsZUNWKG1faWQsIHZpZGVvRnJhbWUtPnBp
eGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnZpZGVvUm90YXRpb24oKSwgdmlkZW9GcmFtZS0+dmlk
ZW9NaXJyb3JlZCgpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCksIG1ldGFkYXRhKSwg
MCk7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyOjpWaWRlb0ZyYW1lQXZhaWxhYmxlQ1YobV9pZCwgdmlkZW9GcmFtZS0+
cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cm90YXRpb24oKSwgdmlkZW9GcmFtZS0+aXNNaXJy
b3JlZCgpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCksIG1ldGFkYXRhKSwgMCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBwcm9wZXJ0aWVzID0g
bV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+YWRkKCp2aWRlb0ZyYW1lKTsKICAgICAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6VmlkZW9G
cmFtZUF2YWlsYWJsZShtX2lkLCBwcm9wZXJ0aWVzLCBtZXRhZGF0YSksIDApOwogICAgIH0KIAot
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihNZWRpYVNh
bXBsZSYgc2FtcGxlKQorICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhl
bEJ1ZmZlcihWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFtX3Jv
dGF0aW9uU2Vzc2lvbikKICAgICAgICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1
ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPigpOwogCiAgICAgICAgIEltYWdlUm90YXRpb25TZXNz
aW9uVlQ6OlJvdGF0aW9uUHJvcGVydGllcyByb3RhdGlvbjsKLSAgICAgICAgc3dpdGNoIChzYW1w
bGUudmlkZW9Sb3RhdGlvbigpKSB7Ci0gICAgICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb246Ok5vbmU6CisgICAgICAgIHN3aXRjaCAodmlkZW9GcmFtZS5yb3RhdGlvbigpKSB7Cisg
ICAgICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJvdGF0aW9uLmFuZ2xlID0gMDsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpV
cHNpZGVEb3duOgorICAgICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3du
OgogICAgICAgICAgICAgcm90YXRpb24uYW5nbGUgPSAxODA7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAgICAg
IGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAgICAgICAgcm90YXRpb24u
YW5nbGUgPSA5MDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpMZWZ0OgorICAgICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9u
OjpMZWZ0OgogICAgICAgICAgICAgcm90YXRpb24uYW5nbGUgPSAyNzA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24tPnJvdGF0
ZShzYW1wbGUsIHJvdGF0aW9uLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21w
YXRpYmxlOjpObyk7CisgICAgICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHZp
ZGVvRnJhbWUsIHJvdGF0aW9uLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21w
YXRpYmxlOjpObyk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1v
cnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZm9y
bWF0LCBzaXplX3QgZnJhbWVDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAppbmRleCBhYjhm
NjkyOGFlZjczM2U1OTBlN2FkOWZkODBmNDliNDA2ODI4MzgxLi5lODFiMjNmOTBiNTE3YzE1Mjgz
Yzc1MTYzNzVhN2IxYzAxYTA1ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCkBAIC00Miwx
NSArNDIsMTUgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90ZVZpZGVvRnJhbWVQcm94
eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoV2ViS2l0OjpS
ZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYgcmVmZXJlbmNlLCBjb25zdCBXZWJDb3JlOjpNZWRp
YVNhbXBsZSYgbWVkaWFTYW1wbGUpCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMg
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVJlZmVyZW5jZSYmIHJlZmVyZW5jZSwgY29uc3QgV2ViQ29yZTo6VmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSkKIHsKICAgICByZXR1cm4gewogICAgICAgICBXVEZNb3ZlKHJlZmVyZW5jZSksCi0gICAg
ICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwKLSAgICAgICAgbWVkaWFTYW1wbGUu
dmlkZW9NaXJyb3JlZCgpLAotICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1JvdGF0aW9uKCksCi0g
ICAgICAgIGV4cGFuZGVkSW50U2l6ZShtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25TaXplKCkpLAot
ICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1BpeGVsRm9ybWF0KCkKKyAgICAgICAgdmlkZW9GcmFt
ZS5wcmVzZW50YXRpb25UaW1lKCksCisgICAgICAgIHZpZGVvRnJhbWUuaXNNaXJyb3JlZCgpLAor
ICAgICAgICB2aWRlb0ZyYW1lLnJvdGF0aW9uKCksCisgICAgICAgIGV4cGFuZGVkSW50U2l6ZSh2
aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKSksCisgICAgICAgIHZpZGVvRnJhbWUucGl4ZWxG
b3JtYXQoKQogICAgIH07CiB9CiAKQEAgLTk0LDcgKzk0LDcgQEAgUmVtb3RlVmlkZW9GcmFtZVJl
YWRSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpuZXdSZWFkUmVmZXJlbmNlKCkgY29u
c3QKICAgICByZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLnJlYWQoKTsKIH0KIAotdWludDMyX3Qg
UmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3VpbnQzMl90
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVy
biBtX3BpeGVsRm9ybWF0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKaW5kZXggY2U0MDcxMGQ3MWUw
NDJjY2IxNzc5YmNjM2U0NWIzYmFiMmYzNDEyNi4uZTQ0ZDI5ZmVlMzZhOTA0Zjc3NDU1ZjY3MjA0
NDZjZWExMWE4ZmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlIHJlZmVyZW5j
ZTsKICAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWU7CiAgICAgICAgIGJvb2wgaXNN
aXJyb3JlZCB7IGZhbHNlIH07Ci0gICAgICAgIFZpZGVvUm90YXRpb24gcm90YXRpb24geyBWaWRl
b1JvdGF0aW9uOjpOb25lIH07CisgICAgICAgIFJvdGF0aW9uIHJvdGF0aW9uIHsgUm90YXRpb246
Ok5vbmUgfTsKICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOwogICAgICAgICB1aW50MzJf
dCBwaXhlbEZvcm1hdCB7IDAgfTsKIApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3BlcnRp
ZXM+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHBy
b3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYsIGNvbnN0IFdlYkNv
cmU6Ok1lZGlhU2FtcGxlJik7CisgICAgc3RhdGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhXZWJL
aXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiwgY29uc3QgV2ViQ29yZTo6VmlkZW9GcmFt
ZSYpOwogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+IGNyZWF0ZShJUEM6
OkNvbm5lY3Rpb24mLCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFByb3h5JiwgUHJvcGVydGll
cyYmKTsKIApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJDb3JlOjpWaWRl
b0ZyYW1lIG92ZXJyaWRlcy4KICAgICBXZWJDb3JlOjpGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHVpbnQzMl90IHZpZGVvUGl4
ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVm
ZmVyKCkgY29uc3QgZmluYWw7CkBAIC0xMTYsMTIgKzExNiwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGll
cz4gUmVtbwogICAgIGF1dG8gcmVmZXJlbmNlID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8UmVt
b3RlVmlkZW9GcmFtZVJlZmVyZW5jZT4oKTsKICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBk
ZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxNZWRpYVRpbWU+KCk7CiAgICAgYXV0byBpc01pcnJvcmVk
ID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8Ym9vbD4oKTsKLSAgICBhdXRvIHZpZGVvUm90YXRp
b24gPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxWaWRlb1JvdGF0aW9uPigpOworICAgIGF1dG8g
cm90YXRpb24gPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSb3RhdGlvbj4oKTsKICAgICBhdXRv
IHNpemUgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxXZWJDb3JlOjpJbnRTaXplPigpOwogICAg
IGF1dG8gcGl4ZWxGb3JtYXQgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTx1aW50MzJfdD4oKTsK
ICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcmVmZXJlbmNlKSwgV1RGTW92ZSgq
cHJlc2VudGF0aW9uVGltZSksICppc01pcnJvcmVkLCAqdmlkZW9Sb3RhdGlvbiwgKnNpemUsICpw
aXhlbEZvcm1hdCB9OworICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcmVmZXJlbmNl
KSwgV1RGTW92ZSgqcHJlc2VudGF0aW9uVGltZSksICppc01pcnJvcmVkLCAqcm90YXRpb24sICpz
aXplLCAqcGl4ZWxGb3JtYXQgfTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJik7CkBAIC0xMjks
NyArMTI5LDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUmVt
b3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJik7CiB9CiAKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkpCi0gICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1
cm4gaXM8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpICYmIGRvd25jYXN0PFdlYkNv
cmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKS5pc1JlbW90ZVByb3h5KCk7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyBy
ZXR1cm4gdmlkZW9GcmFtZS5pc1JlbW90ZVByb3h5KCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBmZDEyMmRiZTU3M2NhYWE5Yjk0
NGM4NjU3YTQ1NDVhMGRhNWM1YjY2Li42ZDNhZTBlMDViNDhiYzZlOGZlZWE0MWIyZWY3MWQxYjAz
MjJkMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9M
aWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTEwMiwyMCArMTAyLDIwIEBAIHN0YXRpYyBpbnQz
Ml90IGluaXRpYWxpemVWaWRlb0VuY29kZXIod2VicnRjOjpXZWJLaXRWaWRlb0VuY29kZXIgZW5j
b2RlciwgY29uc3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRD
Q29kZWNzKCkuaW5pdGlhbGl6ZUVuY29kZXIoKnN0YXRpY19jYXN0PExpYldlYlJUQ0NvZGVjczo6
RW5jb2Rlcio+KGVuY29kZXIpLCBjb2RlYy53aWR0aCwgY29kZWMuaGVpZ2h0LCBjb2RlYy5zdGFy
dEJpdHJhdGUsIGNvZGVjLm1heEJpdHJhdGUsIGNvZGVjLm1pbkJpdHJhdGUsIGNvZGVjLm1heEZy
YW1lcmF0ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24g
dG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24od2VicnRjOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9u
KQorc3RhdGljIGlubGluZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbiB0b1ZpZGVvUm90YXRpb24od2Vi
cnRjOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHN3aXRjaCAocm90YXRpb24pIHsK
ICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDoKLSAgICAgICAgcmV0dXJuIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgICAgICByZXR1cm4gVmlkZW9GcmFtZTo6
Um90YXRpb246Ok5vbmU7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDoKLSAg
ICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOworICAg
ICAgICByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd247CiAgICAgY2FzZSB3
ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOgotICAgICAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb246OlJpZ2h0OworICAgICAgICByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246
OlJpZ2h0OwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA6Ci0gICAgICAgIHJl
dHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAgICAgICAgcmV0dXJuIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CisgICAgcmV0
dXJuIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmlu
ZyBmb3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZSh3ZWJydGM6OlZpZGVvQ29kZWNUeXBlIHR5
cGUpCkBAIC00OTQsNyArNDk0LDcgQEAgaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmVuY29kZUZy
YW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKIAotICAg
IFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFtZSB7IE1lZGlhVGltZShmcmFtZS50aW1l
c3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDApLCBmYWxzZSwgdG9NZWRpYVNhbXBsZVZpZGVvUm90
YXRpb24oZnJhbWUucm90YXRpb24oKSksIFdURk1vdmUoKmJ1ZmZlcikgfTsKKyAgICBTaGFyZWRW
aWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUgeyBNZWRpYVRpbWUoZnJhbWUudGltZXN0YW1wX3Vz
KCkgKiAxMDAwLCAxMDAwMDAwKSwgZmFsc2UsIHRvVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlv
bigpKSwgV1RGTW92ZSgqYnVmZmVyKSB9OwogICAgIGVuY29kZXIuY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1lIHsgZW5jb2Rlci5pZGVu
dGlmaWVyLCBzaGFyZWRWaWRlb0ZyYW1lLCBmcmFtZS50aW1lc3RhbXAoKSwgc2hvdWxkRW5jb2Rl
QXNLZXlGcmFtZSB9LCAwKTsKICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX09LOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IDA0ODUwNjU0ZGExOTM1NmE0ZTExZjY1ODg1OTM1
ZDMyMTk3ZjZkOTcuLjg1ODUyNjQ1ZDI1N2JhYmM1NjBiZDQ1N2FkMTYwMDQwZjgzY2YxNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTkyLDI1ICs5MiwyNSBAQCBNZWRpYVJlY29yZGVy
UHJpdmF0ZTo6fk1lZGlhUmVjb3JkZXJQcml2YXRlKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9
CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZp
ZGVvRnJhbWVUaW1lTWV0YWRhdGEpCiB7CiAgICAgaWYgKHNob3VsZE11dGVWaWRlbygpKSB7CiAg
ICAgICAgIGlmICghbV9ibGFja0ZyYW1lU2l6ZSkgewotICAgICAgICAgICAgYXV0byBzaXplID0g
c2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAgICAgIGF1dG8gc2l6ZSA9IHZpZGVv
RnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOwogICAgICAgICAgICAgbV9ibGFja0ZyYW1lU2l6ZSA9
IFdlYkNvcmU6OkludFNpemUgeyBzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRp
Y19jYXN0PGludD4oc2l6ZS5oZWlnaHQoKSkgfTsKICAgICAgICAgfQotICAgICAgICBTaGFyZWRW
aWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUgeyBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBz
YW1wbGUudmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCAqbV9ibGFja0Zy
YW1lU2l6ZSB9OwotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUmVjb3JkZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgc2hhcmVkVmlkZW9GcmFtZSB9LCBt
X2lkZW50aWZpZXIpOworICAgICAgICBTaGFyZWRWaWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUg
eyB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCks
IHZpZGVvRnJhbWUucm90YXRpb24oKSwgKm1fYmxhY2tGcmFtZVNpemUgfTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb0ZyYW1l
QXZhaWxhYmxlIHsgc2hhcmVkVmlkZW9GcmFtZSB9LCBtX2lkZW50aWZpZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgbV9ibGFja0ZyYW1lU2l6ZSA9IHsgfTsKLSAgICBhdXRvIHNo
YXJlZFZpZGVvRnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUoc2FtcGxlLAor
ICAgIGF1dG8gc2hhcmVkVmlkZW9GcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0
ZSh2aWRlb0ZyYW1lLAogICAgICAgICBbdGhpc10oYXV0byYgc2VtYXBob3JlKSB7IG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6U2V0U2hhcmVkVmlkZW9G
cmFtZVNlbWFwaG9yZSB7IHNlbWFwaG9yZSB9LCBtX2lkZW50aWZpZXIpOyB9LAogICAgICAgICBb
dGhpc10oYXV0byYgaGFuZGxlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFSZWNvcmRlcjo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGhhbmRsZSB9LCBtX2lk
ZW50aWZpZXIpOyB9CiAgICAgKTsKICAgICBpZiAoc2hhcmVkVmlkZW9GcmFtZSkKLSAgICAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb1Nh
bXBsZUF2YWlsYWJsZSB7IFdURk1vdmUoKnNoYXJlZFZpZGVvRnJhbWUpIH0sIG1faWRlbnRpZmll
cik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNv
cmRlcjo6VmlkZW9GcmFtZUF2YWlsYWJsZSB7IFdURk1vdmUoKnNoYXJlZFZpZGVvRnJhbWUpIH0s
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA3MjEwYzBj
ZWIxMDdjYjdkN2U0MTZmYjY4MzJmMzhmMjI2OGI5YzQ4Li5lMjRlYWJlMGViYjI1YjliODJlM2Q1
Yjc5MWVlMmZjODQ2MjQ4N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYs
IFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9G
cmFtZUF2YWlsYWJsZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiwgV2ViQ29yZTo6VmlkZW9GcmFtZVRp
bWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29y
ZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAKaW5kZXggNzE5OTJmMDRmMjliNGIwZWQ1NjViMzNiOTk2NGFmODM2NzgwMTJk
OC4uNzQ1Y2ZmNmM3MzIwMjhiZWUxMTI5ZmM1ODU2NDhjZjliNGViYThjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6VXBkYXRlQWZmaW5lVHJhbnNmb3JtIHsgdHJhbnNmb3JtIH0sIG1f
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVC
b3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbikKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNB
bmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikK
IHsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6VXBkYXRlQm91bmRzQW5kUG9zaXRpb24geyBib3VuZHMsIHJvdGF0aW9uIH0s
IG1faWRlbnRpZmllcik7CiB9CkBAIC0xMjcsMjQgKzEyNywyNCBAQCB2b2lkIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6cGF1c2UoKQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpQYXVzZSB7IH0sIG1faWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVZp
ZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKICAgICBpZiAobV9wYXVzZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hhcmVkVmlkZW9GcmFtZSA9IG1fc2hhcmVkVmlk
ZW9GcmFtZVdyaXRlci53cml0ZShzYW1wbGUsCisgICAgYXV0byBzaGFyZWRWaWRlb0ZyYW1lID0g
bV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHZpZGVvRnJhbWUsCiAgICAgICAgIFt0aGlz
XShhdXRvJiBzZW1hcGhvcmUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUgeyBz
ZW1hcGhvcmUgfSwgbV9pZGVudGlmaWVyKTsgfSwKICAgICAgICAgW3RoaXNdKGF1dG8mIGhhbmRs
ZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGhhbmRsZSB9LCBtX2lkZW50aWZp
ZXIpOyB9CiAgICAgKTsKICAgICBpZiAoIXNoYXJlZFZpZGVvRnJhbWUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpFbnF1ZXVlIHsgKnNoYXJlZFZpZGVvRnJhbWUgfSwgbV9pZGVudGlmaWVy
KTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6RW5xdWV1ZVZpZGVvRnJhbWUgeyAqc2hhcmVkVmlkZW9GcmFtZSB9LCBtX2lk
ZW50aWZpZXIpOwogfQogCi12b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1
ZXVlZFNhbXBsZXMoKQordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyVmlkZW9G
cmFtZXMoKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpDbGVhckVucXVldWVkU2FtcGxlcyB7IH0sIG1faWRlbnRpZmll
cik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OkNsZWFyVmlkZW9GcmFtZXMgeyB9LCBtX2lkZW50aWZpZXIpOwogfQogCiBQ
bGF0Zm9ybUxheWVyKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJvb3RMYXllcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDVlODQzNGE5ZjQyNDQ4MGQxMDIyZTQ1YWU4Yjg2
OTkzMzQ2NzEzY2MuLjA3NDAxZjY0NzE3OTVmNWZkYzFlZDJmNTlkY2JmZDU4YzEzNWNlOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC02MiwxMyArNjIsMTMgQEAgcHJpdmF0ZToK
ICAgICBib29sIGRpZEZhaWwoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURpc3BsYXlN
b2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKSBmaW5hbDsKICAg
ICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgZmluYWw7Ci0g
ICAgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0
aW9uKENHUmVjdCwgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24pIGZpbmFsOwogICAgIHZv
aWQgZmx1c2goKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5hbDsK
ICAgICB2b2lkIHBsYXkoKSBmaW5hbDsKICAgICB2b2lkIHBhdXNlKCkgZmluYWw7Ci0gICAgdm9p
ZCBlbnF1ZXVlU2FtcGxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJikgZmluYWw7Ci0gICAgdm9pZCBj
bGVhckVucXVldWVkU2FtcGxlcygpIGZpbmFsOworICAgIHZvaWQgZW5xdWV1ZVZpZGVvRnJhbWUo
V2ViQ29yZTo6VmlkZW9GcmFtZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygp
IGZpbmFsOwogICAgIFBsYXRmb3JtTGF5ZXIqIHJvb3RMYXllcigpIGZpbmFsOwogCiAgICAgLy8g
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAppbmRleCBjZThlYzVm
Y2RjNzJkMjU3ZjBkOTRjZWIyODhiZmJiM2JiYWIzZWNlLi4zOWI3NGJmNDZkZWJkYTVkYjY5ZjY3
ZmIyYmM2YThkZThmZDRlOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcApAQCAtOTMsMTUgKzkzLDE1IEBA
IGJvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6cHJlcGFyZVdyaXRpbmcoY29uc3QgU2hhcmVk
VmlkZW9GcmFtZUluZm8mIGluZm8sIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8U2hhcmVkVmlkZW9GcmFtZT4gU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d3JpdGUoTWVk
aWFTYW1wbGUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBu
ZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCitzdGQ6Om9wdGlvbmFsPFNoYXJl
ZFZpZGVvRnJhbWU+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlKFZpZGVvRnJhbWUmIGZy
YW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVD
YWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCiB7CiAgICAgYXV0byBidWZmZXIgPSB3cml0ZUJ1ZmZl
cihmcmFtZSwgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNhbGxiYWNrKTsKICAgICBp
ZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gU2hhcmVkVmlkZW9G
cmFtZSB7IGZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwgZnJhbWUudmlkZW9NaXJyb3JlZCgpLCBm
cmFtZS52aWRlb1JvdGF0aW9uKCksIFdURk1vdmUoKmJ1ZmZlcikgfTsKKyAgICByZXR1cm4gU2hh
cmVkVmlkZW9GcmFtZSB7IGZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwgZnJhbWUuaXNNaXJyb3Jl
ZCgpLCBmcmFtZS5yb3RhdGlvbigpLCBXVEZNb3ZlKCpidWZmZXIpIH07CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3
cml0ZUJ1ZmZlcihNZWRpYVNhbXBsZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpT
ZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3N0ZDo6
b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVy
Ojp3cml0ZUJ1ZmZlcihWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQogewog
ICAgIGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KGZyYW1lKSkKICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oZnJhbWUpLm5ld1JlYWRSZWZlcmVuY2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJl
ZFZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJl
ZFZpZGVvRnJhbWUuaAppbmRleCBmYTNkODNjNWQ5NGI4YWZkMGU1ZDc5YzAwZGRjZDM5ZGZlM2Ez
MzM3Li5hMTUwMWU3NWE2NGYyMTM3ZmE1YzE2OTE2NTJjNDEwMmNiOGZmOTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFt
ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOwog
c3RydWN0IFNoYXJlZFZpZGVvRnJhbWUgewogICAgIE1lZGlhVGltZSB0aW1lOwogICAgIGJvb2wg
bWlycm9yZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uIHsgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUg
fTsKKyAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiB7IFdlYkNvcmU6
OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lIH07CiAgICAgdXNpbmcgQnVmZmVyID0gc3RkOjp2
YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSwgTWFj
aFNlbmRSaWdodCwgV2ViQ29yZTo6SW50U2l6ZT47CiAgICAgQnVmZmVyIGJ1ZmZlcjsKIApAQCAt
NjgsNyArNjgsNyBAQCBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyIHsKIHB1YmxpYzoKICAg
ICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyKCk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZp
ZGVvRnJhbWU+IHdyaXRlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgY29uc3QgRnVuY3Rpb248dm9p
ZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmKT4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+
IHdyaXRlKFdlYkNvcmU6OlZpZGVvRnJhbWUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2Vt
YXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYpPiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3
cml0ZUJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2Vt
YXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYpPiYsIGJvb2wgY2FuU2VuZElPU3VyZmFjZSA9IHRydWUpOwogI2lmIFVTRShMSUJXRUJS
VEMpCiAgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IHdyaXRlQnVm
ZmVyKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpT
ZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+Jik7CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvY2F0
ZVN0b3JhZ2Uoc2l6ZV90LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJik+Jik7CiAgICAgYm9vbCBwcmVwYXJlV3JpdGluZyhjb25zdCBXZWJDb3JlOjpT
aGFyZWRWaWRlb0ZyYW1lSW5mbyYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUm
KT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+
Jik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gd3JpdGVC
dWZmZXIoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2Vt
YXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYpPiYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3
cml0ZUJ1ZmZlcihXZWJDb3JlOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mKTsKICNpZiBVU0UoTElCV0VCUlRDKQogICAgIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3cml0ZUJ1ZmZlcih3ZWJydGM6OlZpZGVvRnJhbWVCdWZm
ZXImLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyLmNwcAppbmRleCA3NjRlYzBkNWY3N2JkM2VlMDUyNDUwMzg3ZTRmODFk
ZWY2ZDZhYWU5Li5mZmJmYTMxZmVhMGQyMThjOGNiNTUwNzQ1OTQxMjQ3NWQyNjhmNzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKQEAgLTE1OSwxMSArMTU5LDEwIEBAIHZvaWQgUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVvRnJhbWVBdmFpbGFibGUoUmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0
byBmaW5kIHNvdXJjZSAlbGx1IGZvciB2aWRlb0ZyYW1lQXZhaWxhYmxlIiwgaWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIHZpZGVvRnJhbWVT
aXplID0gdmlkZW9GcmFtZS0+c2l6ZSgpOwotICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9GcmFt
ZUF2YWlsYWJsZShXVEZNb3ZlKHZpZGVvRnJhbWUpLCB2aWRlb0ZyYW1lU2l6ZSwgbWV0YWRhdGEp
OworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3RlVmlkZW9GcmFtZUF2YWlsYWJsZShXVEZNb3Zl
KHZpZGVvRnJhbWUpLCBtZXRhZGF0YSk7CiB9CiAKLXZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXI6OnZpZGVvRnJhbWVBdmFpbGFibGVDVihSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBwaXhlbEJ1ZmZlciwg
V2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9y
ZWQsIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9G
cmFtZUF2YWlsYWJsZUNWKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpWaWRl
b0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7
CiAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblJ1bkxvb3AoKSk7CiAgICAgYXV0byBpdGVyYXRvciA9
IG1fdmlkZW9Tb3VyY2VzLmZpbmQoaWRlbnRpZmllcik7CkBAIC0xNzMsOCArMTcyLDcgQEAgdm9p
ZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9GcmFtZUF2YWlsYWJsZUNWKFJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGkKICAgICB9CiAKICAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRl
b0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lLCBtaXJyb3JlZCwgcm90YXRpb24sIFdU
Rk1vdmUocGl4ZWxCdWZmZXIpKTsKLSAgICBhdXRvIHNpemUgPSB2aWRlb0ZyYW1lLT5wcmVzZW50
YXRpb25TaXplKCk7Ci0gICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb0ZyYW1lQXZhaWxhYmxlKHZp
ZGVvRnJhbWUuZ2V0KCksIHsgc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKCkpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemUuaGVpZ2h0KCkpIH0sIG1ldGFkYXRhKTsKKyAgICBpdGVyYXRvci0+dmFs
dWUtPnJlbW90ZVZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZS5nZXQoKSwgbWV0YWRhdGEp
OwogfQogCiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3RlQXVkaW86OlJlbW90ZUF1
ZGlvKFJlZjxSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlPiYmIHNvdXJjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyLmgKaW5kZXggM2VjOTJiNWRlMDg4NWQyNzM1YjEyYzE4NjQ2ODcxZWUwZjhmYWIzYS4u
NWUzZjgzNDA3NjhiYmU4YTljYjg5YzQ4MjdhMzJhOTE3ZTkzODdkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVN
YW5hZ2VyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgTWVkaWFU
aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxh
YmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OlByb3BlcnRpZXMmJiwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7
CiAgICAgLy8gRklYTUU6IFdpbGwgYmUgcmVtb3ZlZCBvbmNlIFJlbW90ZVZpZGVvRnJhbWVQcm94
eSBwcm92aWRlcnMgYXJlIHRoZSBvbmx5IG9uZXMgc2VuZGluZyBkYXRhLgotICAgIHZvaWQgdmlk
ZW9GcmFtZUF2YWlsYWJsZUNWKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
LCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSwgV2ViQ29yZTo6VmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSk7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiYmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFU
aW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKIAogICAgIHZvaWQgc2V0Q29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCmluZGV4IDcxYjM0NzA4NTMyNjMwYWM3ZmEzMWZhYTdkYmYxZDIzYjM1MTA4
ZmIuLmU1Y2RmYzI1M2Y0MTMxYWEwZGY1NzFhMmY0NmJlNDNmYmYyNTFhYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1
ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIg
aWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2ViQ29y
ZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1iZXJP
ZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgY2FwdHVyZVNlbWFwaG9yZSwgTWVkaWFUaW1lIG1lZGlh
VGltZSwgc2l6ZV90IGZyYW1lQ2h1bmtTaXplKTsKICAgICBWaWRlb0ZyYW1lQXZhaWxhYmxlKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJLaXQ6OlJlbW90ZVZp
ZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBzYW1wbGUsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb0Zy
YW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQotICAgIFZpZGVvRnJhbWVBdmFpbGFibGVDVihXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIHN0
cnVjdCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQorICAgIFZpZGVv
RnJhbWVBdmFpbGFibGVDVihXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBp
ZCwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpWaWRl
b0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFk
YXRhKQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IGU2ZWIzMmI5ZjM5ODBjYThhNDQ4
NDJhNWJlZjUxNmFkYjQzZGEzZDUuLmQxYjg1OTk1ZjM5ZDZhODRjZDQxYjc0MDdlODQ2MjMzOWYw
NTg3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVS
ZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNhcHR1cmVTdG9wcGVkKGJvb2wgZGlkRmFpbCk7CiAKLSAgICB2b2lkIHZpZGVv
RnJhbWVBdmFpbGFibGUoV2ViQ29yZTo6VmlkZW9GcmFtZSYgZnJhbWUsIFdlYkNvcmU6OkludFNp
emUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpIHsgdmlkZW9TYW1w
bGVBdmFpbGFibGUoZnJhbWUsIG1ldGFkYXRhKTsgfQorICAgIHZvaWQgcmVtb3RlVmlkZW9GcmFt
ZUF2YWlsYWJsZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6VmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgeyB2aWRlb0ZyYW1lQXZhaWxhYmxlKGZyYW1lLCBtZXRh
ZGF0YSk7IH0KICAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZChib29sIHZhbHVlLCBib29sIGlu
dGVycnVwdGVkKTsKIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2NlZWRlZChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJik7Cg==
</data>
<flag name="commit-queue"
          id="483168"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455236</attachid>
            <date>2022-03-21 05:37:17 -0700</date>
            <delta_ts>2022-03-21 06:48:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237884-20220321133713.patch</filename>
            <type>text/plain</type>
            <size>180682</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwOTYzNDY1YjQzZGFi
MWFlNjkyYjg2YWRmODMzYjliN2FhMmZhZi4uMzgzMmQ4MmI2MWI5M2ZhZTZmNjYxZmRlNGVmZDlj
ZmE5YjBlZWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlIHRvIFZp
ZGVvRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yaW5nIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC0gUmVuYW1pbmcgb2Yg
VmlkZW9TYW1wbGVPYnNlcnZlciB0byBWaWRlb0ZyYW1lT2JzZXJ2ZXIsIHZpZGVvU2FtcGxlQXZh
aWxhYmxlIHRvIHZpZGVvRnJhbWVBdmFpbGFibGUuLi4KKyAgICAgICAgLSB2aWRlb0ZyYW1lQXZh
aWxhYmxlIHRha2VzIGEgVmlkZW9GcmFtZSBpbnN0ZWFkIG9mIGEgTWVkaWFTYW1wbGUKKyAgICAg
ICAgLSBVc2UgVmlkZW9GcmFtZTo6cm90YXRpb24gYW5kIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQu
CisgICAgICAgIC0gVXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uIGluc3RlYWQgb2YgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24KKyAgICAgICAgVXBkYXRlIGNvZGUgYWNjb3JkaW5nIHRoaXMgcmVu
YW1pbmcuCisgICAgICAgIE1vdmUgZnJvbSB1c2luZyBNZWRpYVNhbXBsZSB0byBWaWRlb0ZyYW1l
IHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAgIFByZXBhcmUgZm9yIHJlbW92YWwgb2Yg
TWVkaWFTYW1wbGUgYXMgcGFyZW50IGNsYXNzIG9mIFZpZGVvRnJhbWUuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
SW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9GcmFtZUNWLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b0ZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDIyLTAzLTIxICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0IGJlIGNhbGxlZCBpbiBzZXRSYW5nZVRleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODE4N2Y1MGI2MzM4NGMxZDA0ZDliZTNlZjM2NGUzNmQzMWYzMTljNy4uNDc3
NzlkYzZjNDFhNTEyN2Y2ZjlmMDM0NjZiOWZkMDQyNDczOTdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwzOSBAQAogMjAyMi0wMy0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
KyAgICAgICAgTW92ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZSB0byBWaWRlb0ZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGZyb20gdXNpbmcgTWVkaWFTYW1wbGUgdG8g
VmlkZW9GcmFtZSBkaXJlY3RseS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRW
aWRlb0ZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCisyMDIyLTAzLTE4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgdXNlIG9mIE1lZGlhU2FtcGxlQVZG
T2JqQyBmcm9tIFdlYlJUQyBwaXBlbGluZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzcwNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA0MjUz
OTE+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDhhMGQ0ZTQ0
MDkxM2Y1YzhiZmIyMWIxMjE2YTA0NzE5NThiM2U1ZDEuLjkxNWFlOGNkZjg4NjYzODczNDkwNjFi
NzM1MjlmNTc2MGRiZDRlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
azo6U291cmNlOjpjYXB0dXJlQ2FudmFzKCkKIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEg
bWV0YWRhdGE7CiAgICAgbWV0YWRhdGEuY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KS5zZWNvbmRzU2luY2VFcG9jaCgpOwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCp2aWRlb0Zy
YW1lLCBtZXRhZGF0YSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0
YWRhdGEpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2s6OmNsb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMjZkOTJlZDhiN2E5NzI3
ZDg5MTQ5ZmY0NjYzZDM0YzMyOTRhMTAzMC4uNzc4YjdkYTFlZGZjMTEwMjk5MWQzY2M3NGY3MGZm
OTYzNDI2YjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNywxMCArMTM3LDYgQEAKICNpbmNs
dWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgotI2VuZGlmCi0KICNpZiAhVVNFKEFOR0xFKQog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaWYgVVNFKE9QRU5HTF9FUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDY3NDYxOWZhNjIyZWFjOTk1
OGY1ZjQwOTU5NWM3ZWU4MDcxNDI2MGEuLjk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5MWM0OWIy
ZGUwMGEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMTE3LDkg
KzExNyw5IEBAIHB1YmxpYzoKICAgICAgICAgUmlnaHQgPSA5MCwKICAgICAgICAgTGVmdCA9IDI3
MCwKICAgICB9OwotICAgIHZpcnR1YWwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aWRl
b01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90
IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggZDViYzczMzZhZmJjMjBlZTE3NDhhZmZhYWRhMTIx
NDlmZWJlM2NmNS4uZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBN
ZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcHJlc2VudGF0aW9uVGltZTsKIH0KIAotTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gVmlk
ZW9GcmFtZTo6dmlkZW9Sb3RhdGlvbigpIGNvbnN0CitWaWRlb0ZyYW1lOjpSb3RhdGlvbiBWaWRl
b0ZyYW1lOjpyb3RhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcm90YXRpb247CiB9CiAK
LWJvb2wgVmlkZW9GcmFtZTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0Citib29sIFZpZGVvRnJhbWU6
OmlzTWlycm9yZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzTWlycm9yZWQ7CiB9CkBAIC0x
MzAsNyArMTMwLDcgQEAgUmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZTo6YXNWaWRlb0Zy
YW1lQ1YoKQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIHZpZGVvTWly
cm9yZWQoKSwgdmlkZW9Sb3RhdGlvbigpLCBidWZmZXIpOworICAgIHJldHVybiBWaWRlb0ZyYW1l
Q1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIGlzTWlycm9yZWQoKSwgcm90YXRpb24oKSwg
YnVmZmVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKaW5k
ZXggYWJhNGI2Y2NiOTJhMjdiMjQzNzI4NzRkMTkxMTI4OTUxYjY0MTk5Ny4uOGFhNDJlZWZmYWFm
NmFiNGQzN2U5YTg1NmEyNDU5N2NjYmE1NzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVv
RnJhbWUuaApAQCAtNDIsMTAgKzQyLDEyIEBAIGNsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVk
aWFTYW1wbGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CiAK
KyAgICB1c2luZyBSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOworCiAgICAg
Ly8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgogICAgIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKICAgICAvLyBGSVhNRTogV2hlbiBWaWRl
b0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgogICAg
IFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxh
dGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggODhmZjI3NWE0ODJjODM0MDY5MjNjOTQ4OWNlYzhh
NzRjNjVjYTkwNS4uNzk3OTg4NzY5OTlhNWYzZmMyMDEzYTI3YzNhOGY0OGFkY2MyYjgyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMjUsOCAr
MjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgVmlkZW9GcmFtZTsKIAog
Y2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHsKIHB1YmxpYzoKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVE
aXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpID0gMDsK
QEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVl
U2FtcGxlKE1lZGlhU2FtcGxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckVucXVldWVk
U2FtcGxlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9G
cmFtZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygpID0gMDsKIAog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApp
bmRleCBhNjZiMjczNWJjZWFlZGVjMzU2ZWM3ZjA4Mzc0MjM1NjU0ZWRiMjNkLi40OTQ2NTAzYzky
ZTIwMjY3YzZjNzk3MzQ4ZjlhNWQ5NTRlYTJkZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFJldGFpblB0
cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4mJiwgQ2xpZW50Jik7CiAgICAgfkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKKyAgICB2b2lkIGVucXVldWVCdWZmZXIoQ1ZQaXhl
bEJ1ZmZlclJlZiwgTWVkaWFUaW1lKTsKKwogICAgIC8vIEFQSSB1c2VkIGJ5IFdlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIKICAgICB2b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdl
KCk7CiAgICAgdm9pZCBsYXllckVycm9yRGlkQ2hhbmdlKCk7CkBAIC01NiwxMiArNTgsMTIgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm1MYXllciogZGlzcGxheUxheWVyKCk7CiAKLSAgICBQbGF0
Zm9ybUxheWVyKiByb290TGF5ZXIoKSBmaW5hbDsKLQogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBk
YXRlUm9vdExheWVyIHsgTm8sIFllcyB9OwotICAgIHZvaWQgdXBkYXRlUm9vdExheWVyQm91bmRz
QW5kUG9zaXRpb24oQ0dSZWN0LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgU2hvdWxkVXBk
YXRlUm9vdExheWVyKTsKKyAgICB2b2lkIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcik7CiAg
ICAgdm9pZCB1cGRhdGVSb290TGF5ZXJBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0p
OwogCisgICAgLy8gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorICAgIFBsYXRmb3JtTGF5ZXIq
IHJvb3RMYXllcigpIGZpbmFsOwogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5
ZXIsIEludFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBkaWRTdWNjZWVkKT4mJikg
ZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlm
aWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpIGZpbmFsIHsgbV9sb2dJZGVudGlmaWVyID0gV1RG
TW92ZShsb2dJZGVudGlmaWVyKTsgfQpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RM
YXllcikgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRy
YW5zZm9ybSkgIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCb3Vu
ZHNBbmRQb3NpdGlvbihDR1JlY3QsIFZpZGVvRnJhbWU6OlJvdGF0aW9uKSBmaW5hbDsKIAogICAg
IHZvaWQgZmx1c2goKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5h
bDsKQEAgLTc5LDE3ICs4MSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5KCkgZmluYWw7CiAg
ICAgdm9pZCBwYXVzZSgpIGZpbmFsOwogCi0gICAgdm9pZCBlbnF1ZXVlKENWUGl4ZWxCdWZmZXJS
ZWYsIE1lZGlhVGltZSk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJikgZmlu
YWw7Ci0gICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpIGZpbmFsOworICAgIHZvaWQgZW5x
dWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJWaWRlb0Zy
YW1lcygpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVuZGVyUG9saWN5KFJlbmRlclBvbGljeSkgZmlu
YWw7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1
ZSgpOwotICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmKTsKKwor
ICAgIHZvaWQgcmVtb3ZlT2xkVmlkZW9GcmFtZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CisgICAgdm9p
ZCBhZGRWaWRlb0ZyYW1lVG9QZW5kaW5nUXVldWUoUmVmPFZpZGVvRnJhbWU+JiYpOwogICAgIHZv
aWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgIHZvaWQg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgc2V0Um9vdExheWVy
Qm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOwor
ICAgIHZvaWQgc2V0Um9vdExheWVyQm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgVmlkZW9GcmFt
ZTo6Um90YXRpb24pOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBvbkly
cmVndWxhckZyYW1lUmF0ZU5vdGlmaWNhdGlvbihNb25vdG9uaWNUaW1lIGZyYW1lVGltZSwgTW9u
b3RvbmljVGltZSBsYXN0RnJhbWVUaW1lKTsKQEAgLTEwNCw4ICsxMDUsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcHJvY2Vzc2luZ1F1ZXVlOwogCiAgICAgLy8gT25seSBh
Y2Nlc3NlZCB0aHJvdWdoIG1fcHJvY2Vzc2luZ1F1ZXVlIG9yIGlmIG1fcHJvY2Vzc2luZ1F1ZXVl
IGlzIG51bGwuCi0gICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlh
U2FtcGxlPj47Ci0gICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVl
dWU7CisgICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPFZpZGVvRnJhbWU+
PjsKKyAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlOwogICAg
IAogICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IDFjY2Rk
ZmE4ODE1YTRmNzY0ZTI0OTFjNzA0NzViOGQyMGJkYzQ5MDQuLjQ1OGM1YTM5YWYwNWQ4YTBhMGUw
YmQ1NWMwYmZiMTAxYTEzZGQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMSw3ICszMSw2IEBACiAj
aW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiSW50U2l6ZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGll
cy5oIgogCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aD4KQEAgLTQyLDggKzQxLDkgQEAKICNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9N
ZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0
aW9uU1BJLmg+Ci0KKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtMTk4LDcgKzE5OCw3IEBAIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp+TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQogCiAgICAgW21fc3RhdHVzQ2hhbmdl
TGlzdGVuZXIgc3RvcF07CiAKLSAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7
CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFyKCk7CiAKICAgICBbbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaF07CkBAIC0yNjUsMjggKzI2NSwyOCBAQCB2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZp
bmVUcmFuc2Zvcm0gdHJhbgogICAgIH0pOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZpZGVvRnJh
bWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBv
c2l0aW9uKGJvdW5kcywgcm90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcjo6Tm8pOwogfQog
Ci12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJCb3VuZHNB
bmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24pCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJC
b3VuZHNBbmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24pCiB7CiAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IHsgYm91bmRzLnNpemUud2lkdGggLyAy
LCBib3VuZHMuc2l6ZS5oZWlnaHQgLyAyfTsKLSAgICBpZiAocm90YXRpb24gPT0gTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0IHx8IHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0KQorICAgIGlmIChyb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6UmlnaHQgfHwgcm90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQpCiAgICAg
ICAgIHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAog
ICAgIG1fcm9vdExheWVyLmdldCgpLnBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgbV9yb290TGF5
ZXIuZ2V0KCkuYm91bmRzID0gYm91bmRzOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRz
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgU2hvdWxkVXBkYXRlUm9vdExh
eWVyIHNob3VsZFVwZGF0ZVJvb3RMYXllcikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBTaG91bGRVcGRhdGVSb290TGF5ZXIgc2hvdWxk
VXBkYXRlUm9vdExheWVyKQogewogICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CiAgICAg
ICAgIGlmIChzaG91bGRVcGRhdGVSb290TGF5ZXIgPT0gU2hvdWxkVXBkYXRlUm9vdExheWVyOjpZ
ZXMpCiAgICAgICAgICAgICBzZXRSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbnMoYm91bmRzLCBy
b3RhdGlvbik7CiAKLSAgICAgICAgaWYgKHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpSaWdodCB8fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdCkKKyAgICAgICAgaWYgKHJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdo
dCB8fCByb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCkKICAgICAgICAgICAg
IHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAogICAg
ICAgICBDR1BvaW50IHBvc2l0aW9uID0geyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5z
aXplLmhlaWdodCAvIDJ9OwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQogCiBzdGF0aWMgY29uc3QgZG91
YmxlIHJlbmRlcmVyTGF0ZW5jeSA9IDAuMDI7CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECkBAIC0zMjEsMjIgKzMyMSwxNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZSA9
IFJlZiB7IHNhbXBsZSB9XSB7CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCB2aWRlb0ZyYW1lID0gUmVmIHsgdmlkZW9GcmFtZSB9XSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0p
IHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlICgle3B1YmxpY31zKSBub3QgcmVhZHkgZm9yIG1vcmUg
bWVkaWEgZGF0YSIsIG1fbG9nSWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7CisgICAgICAgICAgICBhZGRWaWRlb0Zy
YW1lVG9QZW5kaW5nUXVldWUoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiAgICAgICAgICAgICByZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihzYW1wbGUpOworICAg
ICAgICBlbnF1ZXVlQnVmZmVyKHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUt
PnByZXNlbnRhdGlvblRpbWUoKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
LXsKLSAgICBlbnF1ZXVlKHNhbXBsZS5waXhlbEJ1ZmZlcigpLCBzYW1wbGUucHJlc2VudGF0aW9u
VGltZSgpKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRp
YXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQogewogICAgIENGQXJyYXlSZWYg
YXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50
c0FycmF5KHNhbXBsZUJ1ZmZlciwgdHJ1ZSk7CkBAIC0zNDYsNyArMzQxLDcgQEAgc3RhdGljIHZv
aWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRpYXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyKQogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTM2MSw3ICsz
NTYsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlKENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIE1lZGlhVAogICAgIGNvbnN0ZXhwciBzaXplX3QgZnJh
bWVDb3VudFBlckxvZyA9IDE4MDA7IC8vIGxvZyBldmVyeSBtaW51dGUgYXQgMzAgZnBzCiAgICAg
aWYgKCEobV9mcmFtZVJhdGVNb25pdG9yLmZyYW1lQ291bnQoKSAlIGZyYW1lQ291bnRQZXJMb2cp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBtZXRyaWNzID0gW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIHZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzXSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdl
YlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICgle3B1YmxpY31zKSBtZXRyaWNz
LCB0b3RhbD0lbHUsIGRyb3BwZWQ9JWx1LCBjb3JydXB0ZWQ9JWx1LCBkaXNwbGF5LWNvbXBvc2l0
ZWQ9JWx1LCBub24tZGlzcGxheS1jb21wb3NpdGVkPSVsdSAocGVuZGluZz0lbHUpIiwgbV9sb2dJ
ZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIG1ldHJpY3MudG90YWxOdW1iZXJPZlZpZGVvRnJhbWVz
LCBtZXRyaWNzLm51bWJlck9mRHJvcHBlZFZpZGVvRnJhbWVzLCBtZXRyaWNzLm51bWJlck9mQ29y
cnVwdGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEaXNwbGF5Q29tcG9zaXRlZFZpZGVv
RnJhbWVzLCBtZXRyaWNzLm51bWJlck9mTm9uRGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcywg
bV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKCV7cHVibGljfXMpIG1l
dHJpY3MsIHRvdGFsPSVsdSwgZHJvcHBlZD0lbHUsIGNvcnJ1cHRlZD0lbHUsIGRpc3BsYXktY29t
cG9zaXRlZD0lbHUsIG5vbi1kaXNwbGF5LWNvbXBvc2l0ZWQ9JWx1IChwZW5kaW5nPSVsdSkiLCBt
X2xvZ0lkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgbWV0cmljcy50b3RhbE51bWJlck9mVmlkZW9G
cmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEcm9wcGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVy
T2ZDb3JydXB0ZWRWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJPZkRpc3BsYXlDb21wb3NpdGVk
VmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZOb25EaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJh
bWVzLCBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuc2l6ZSgpKTsKICAgICB9CiAgICAgbV9mcmFt
ZVJhdGVNb25pdG9yLnVwZGF0ZSgpOwogI2VuZGlmCkBAIC0zNzMsNDQgKzM2OCw0NCBAQCB2b2lk
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpvbklycmVndWxhckZyYW1lUmF0ZU5vdGlm
aWNhdGlvbihNb25vdG9uaWNUaQogICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lVGltZSA9IGZy
YW1lVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIGxhc3RGcmFtZVRpbWUgPSBsYXN0
RnJhbWVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgb2JzZXJ2ZWRGcmFtZVJhdGUg
PSBtX2ZyYW1lUmF0ZU1vbml0b3Iub2JzZXJ2ZWRGcmFtZVJhdGUoKSwgZnJhbWVDb3VudCA9IG1f
ZnJhbWVSYXRlTW9uaXRvci5mcmFtZUNvdW50KCksIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIgKCV7cHVibGljfXMpIGF0ICVmLCBwcmV2aW91cyBmcmFtZSB3YXMg
YXQgJWYsIG9ic2VydmVkIGZyYW1lIHJhdGUgaXMgJWYsIGRlbGF5IHNpbmNlIGxhc3QgZnJhbWUg
aXMgJWYgbXMsIGZyYW1lIGNvdW50IGlzICVsdSIsIHdlYWtUaGlzLT5tX2xvZ0lkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSwgZnJhbWVUaW1lLCBsYXN0RnJhbWVUaW1lLCBvYnNlcnZlZEZyYW1lUmF0
ZSwgKGZyYW1lVGltZSAtIGxhc3RGcmFtZVRpbWUpICogMTAwMCwgZnJhbWVDb3VudCk7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpl
bnF1ZXVlVmlkZW9GcmFtZSAoJXtwdWJsaWN9cykgYXQgJWYsIHByZXZpb3VzIGZyYW1lIHdhcyBh
dCAlZiwgb2JzZXJ2ZWQgZnJhbWUgcmF0ZSBpcyAlZiwgZGVsYXkgc2luY2UgbGFzdCBmcmFtZSBp
cyAlZiBtcywgZnJhbWUgY291bnQgaXMgJWx1Iiwgd2Vha1RoaXMtPm1fbG9nSWRlbnRpZmllci51
dGY4KCkuZGF0YSgpLCBmcmFtZVRpbWUsIGxhc3RGcmFtZVRpbWUsIG9ic2VydmVkRnJhbWVSYXRl
LCAoZnJhbWVUaW1lIC0gbGFzdEZyYW1lVGltZSkgKiAxMDAwLCBmcmFtZUNvdW50KTsKICAgICB9
KTsKIH0KICNlbmRpZgogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZW1v
dmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZW1vdmVPbGRWaWRlb0ZyYW1lc0Zyb21QZW5kaW5nUXVldWUoKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKG1fcGVuZGluZ1ZpZGVvU2FtcGxl
UXVldWUuaXNFbXB0eSgpKQorICAgIGlmIChtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9yZW5kZXJQb2xpY3kgPT0gUmVuZGVy
UG9saWN5OjpJbW1lZGlhdGVseSkgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KTsKLSAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
Zmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9G
cmFtZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuZmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOwogICAg
ICAgICBpZiAocHJlc2VudGF0aW9uVGltZS5pc1ZhbGlkKCkgJiYgcHJlc2VudGF0aW9uVGltZSA+
IG5vdykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1
ZXVlLnJlbW92ZUZpcnN0KCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5yZW1v
dmVGaXJzdCgpOwogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFZpZGVvRnJhbWVUb1BlbmRpbmdRdWV1ZShS
ZWY8VmlkZW9GcmFtZT4mJiB2aWRlb0ZyYW1lKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKTsKLSAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChzYW1wbGUpOworICAgIHJlbW92ZU9sZFZpZGVv
RnJhbWVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5h
cHBlbmQoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQogewogICAgIG1fcHJvY2Vzc2luZ1F1
ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
IH0pOwogfQogCkBAIC00MjQsMTMgKzQxOSwxMyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKICAg
ICAgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgICAgICBb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogCi0g
ICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9w
ZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBlbnF1
ZXVlU2FtcGxlQnVmZmVyKHNhbXBsZSk7CisgICAgICAgICAgICAgICAgYXV0byB2aWRlb0ZyYW1l
ID0gbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAg
IGVucXVldWVCdWZmZXIodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uVGltZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAyY2MxN2FkZjhkN2NiNGExZjNlM2M2NTU1MjY0NGRi
NzZjZjZlNTFiLi4xZDkzMWM2ZjlkNDVlZjMwODEwZWEzZjEzZDgwMDIyZWYxMTUzMDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3NTQsNyArMjc1NCw3IEBAIFJlZlB0cjxWaWRlb0Zy
YW1lPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb0ZyYW1lRm9yQ3Vy
cmVudFRpbWUoCiAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQ
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAg
cmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9
KTsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCA1YmU3MDgzZjU0ZjA4ODMzYTRhZmFmNGRlNjhiMTg1NzZhN2NiODRiLi45Yzkx
M2U0ZjQzZjczMDM4ZThjM2IwZDRjMjZjNWJhNTQ5NDJhNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC03NDcsNyArNzQ3LDcgQEAgUmVmUHRyPFZpZGVvRnJhbWU+IE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZW9GcmFtZUZvckN1cnJlbnRUaW0KICAg
ICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAgcmV0dXJuIFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9KTsKIH0KIAog
RGVzdGluYXRpb25Db2xvclNwYWNlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6Y29sb3JTcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDkyZGFkMzA5ZmJj
YWY5NDE2M2M3MzkwZTljZmRiNGMwNzY0MDI1ZmEuLjBlNzQxODdjMTMwZDVkYzZmZWNlZGY3ZjY3
ZThiMTkxMGJmMmMzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yOCw5ICsyOCw5
IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
IGZpbmFsCiAgICAgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAgICAgLCBw
cml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW9GcmFtZU9ic2VydmVyCiAgICAgLCBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpDbGllbnQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiB7CkBAIC0xMzYsOSArMTM2
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmx1c2hSZW5kZXJlcnMoKTsKIAotICAgIHZvaWQg
cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7Ci0gICAgdm9pZCBlbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmKTsK
LSAgICB2b2lkIHJlZW5xdWV1ZUN1cnJlbnRWaWRlb1NhbXBsZUlmTmVlZGVkKCk7CisgICAgdm9p
ZCBwcm9jZXNzTmV3VmlkZW9GcmFtZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7Cisg
ICAgdm9pZCByZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAKICAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMjEx
LDggKzIxMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKIAotICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgotICAgIHZvaWQgdmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAg
ICAvLyBSZWFsdGltZU1lZGlhU291Y2U6OlZpZGVvRnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlk
ZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CiAKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIAog
ICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7Ci0gICAgICAgIFJlZlB0cjxNZWRp
YVNhbXBsZT4gbWVkaWFTYW1wbGU7CisgICAgICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiB2aWRlb0Zy
YW1lOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gcGl4
ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKICAgICBDdXJyZW50RnJhbWVQYWludGVyIG1faW1h
Z2VQYWludGVyOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gV3JpdHRlbiBv
biBtYWluIHRocmVhZCwgcmVhZCBvbiBzYW1wbGUgdGhyZWFkLgogICAgIGJvb2wgbV9jYW5FbnF1
ZXVlRGlzcGxheUxheWVyIHsgZmFsc2UgfTsKICAgICAvLyBVc2VkIG9uIHNhbXBsZSB0aHJlYWQu
Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBt
X3ZpZGVvUm90YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wg
bV92aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9n
Z2VyOwpAQCAtMjcyLDggKzI3Miw4IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8V2ViUm9v
dFNhbXBsZUJ1ZmZlckJvdW5kc0NoYW5nZUxpc3RlbmVyPiBtX2JvdW5kc0NoYW5nZUxpc3RlbmVy
OwogCi0gICAgTG9jayBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2s7Ci0gICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBtX2N1cnJlbnRWaWRlb1NhbXBsZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY3VycmVu
dFZpZGVvU2FtcGxlTG9jayk7CisgICAgTG9jayBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jazsKKyAg
ICBSZWZQdHI8VmlkZW9GcmFtZT4gbV9jdXJyZW50VmlkZW9GcmFtZSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fY3VycmVudFZpZGVvRnJhbWVMb2NrKTsKIAogICAgIGJvb2wgbV9wbGF5aW5nIHsgZmFs
c2UgfTsKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IDRkZDgxYmFhZjk1ODkwNWU2YWI5NjkyMWZiZmRjZDU3ZGQwZDIwNDMuLmU0NjQ2
ZDZiM2RjNTg2NzkxYjViZmIxZDNkYWNhMTQ1YzFkZDJhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EuaCIKICNpbXBvcnQgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2ltcG9ydCAi
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMTYwLDcgKzE1OSw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQygpCiAgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKIAogICAgIGlmIChtX2FjdGl2ZVZpZGVvVHJhY2spCi0gICAgICAgIG1fYWN0aXZlVmlk
ZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICAgICAgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJj
ZSgpLnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAKICAgICBbbV9ib3VuZHNDaGFu
Z2VMaXN0ZW5lciBpbnZhbGlkYXRlXTsKIApAQCAtMjI5LDI5ICsyMjgsMjkgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1
cHBvcnRzVHlwZShjb24KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTYW1wbGVCdWZm
ZXIgTWV0aG9kcwogCi1zdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNm
b3JtYXRpb25NYXRyaXgoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3N0YXRpYyBpbmxpbmUgQ0dBZmZp
bmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChWaWRlb0ZyYW1lJiB2aWRlb0Zy
YW1lKQogewotICAgIGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAg
YXV0byBzaXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CiAgICAgc2l6ZV90IHdp
ZHRoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpOwogICAgIHNpemVfdCBoZWln
aHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUuaGVpZ2h0KCkpOwogICAgIGlmICghd2lkdGgg
fHwgIWhlaWdodCkKICAgICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CiAK
LSAgICBhdXRvIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24o
c3RhdGljX2Nhc3Q8aW50PihzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAxODApOwot
ICAgIGlmIChzYW1wbGUudmlkZW9NaXJyb3JlZCgpKQorICAgIGF1dG8gdmlkZW9UcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxpbnQ+KHZpZGVvRnJh
bWUucm90YXRpb24oKSkgKiBNX1BJIC8gMTgwKTsKKyAgICBpZiAodmlkZW9GcmFtZS5pc01pcnJv
cmVkKCkpCiAgICAgICAgIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh2
aWRlb1RyYW5zZm9ybSwgLTEsIDEpOwogCiAgICAgcmV0dXJuIHZpZGVvVHJhbnNmb3JtOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRh
ZGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBwcm9jZXNzTmV3VmlkZW9TYW1wbGUo
c2FtcGxlLCBtZXRhZGF0YSwgcHJlc2VudGF0aW9uVGltZSk7Ci0gICAgZW5xdWV1ZVZpZGVvU2Ft
cGxlKHNhbXBsZSk7CisgICAgcHJvY2Vzc05ld1ZpZGVvRnJhbWUodmlkZW9GcmFtZSwgbWV0YWRh
dGEsIHByZXNlbnRhdGlvblRpbWUpOworICAgIGVucXVldWVWaWRlb0ZyYW1lKHZpZGVvRnJhbWUp
OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSkKIHsKICAgICBpZiAoIW1faXNQYWdlVmlzaWJsZSB8fCAhbV9pc1Zpc2libGVJblZpZXdQ
b3J0KQogICAgICAgICByZXR1cm47CkBAIC0yNjMsNTIgKzI2Miw1MiBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU2Ft
cGxlJiBzYW1wbAogICAgIGlmICghbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyIHx8ICFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciB8fCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFp
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSAh
PSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWly
cm9yZWQpIHsKLSAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24o
KTsKLSAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVvTWlycm9yZWQoKTsKKyAg
ICBpZiAodmlkZW9GcmFtZS5yb3RhdGlvbigpICE9IG1fdmlkZW9Sb3RhdGlvbiB8fCB2aWRlb0Zy
YW1lLmlzTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQpIHsKKyAgICAgICAgbV92aWRlb1Jv
dGF0aW9uID0gdmlkZW9GcmFtZS5yb3RhdGlvbigpOworICAgICAgICBtX3ZpZGVvTWlycm9yZWQg
PSB2aWRlb0ZyYW1lLmlzTWlycm9yZWQoKTsKICAgICAgICAgbV9zaG91bGRVcGRhdGVEaXNwbGF5
TGF5ZXIgPSB0cnVlOwogICAgIH0KICAgICBpZiAobV9zaG91bGRVcGRhdGVEaXNwbGF5TGF5ZXIp
IHsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUFmZmluZVRyYW5z
Zm9ybSh2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSkpOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQWZmaW5lVHJhbnNmb3JtKHZpZGVvVHJhbnNmb3Jt
YXRpb25NYXRyaXgodmlkZW9GcmFtZSkpOwogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+dXBkYXRlQm91bmRzQW5kUG9zaXRpb24obV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PnJvb3RMYXllcigpLmJvdW5kcywgbV92aWRlb1JvdGF0aW9uKTsKICAgICAgICAgbV9zaG91bGRV
cGRhdGVEaXNwbGF5TGF5ZXIgPSBmYWxzZTsKICAgICB9CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShzYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLT5lbnF1ZXVlVmlkZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZW5xdWV1ZUN1cnJlbnRWaWRlb1Nh
bXBsZUlmTmVlZGVkKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpyZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fY3Vy
cmVudFZpZGVvU2FtcGxlTG9jay50cnlMb2NrKCkpCisgICAgaWYgKCFtX2N1cnJlbnRWaWRlb0Zy
YW1lTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
QWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgQWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jayB9OwogCi0gICAgaWYgKCFtX2N1
cnJlbnRWaWRlb1NhbXBsZSAmJiAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYg
KCFtX2N1cnJlbnRWaWRlb0ZyYW1lICYmICFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVmlkZW9TYW1wbGUobV9jdXJyZW50VmlkZW9TYW1w
bGUgPyAqbV9jdXJyZW50VmlkZW9TYW1wbGUgOiAqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
OworICAgIGVucXVldWVWaWRlb0ZyYW1lKG1fY3VycmVudFZpZGVvRnJhbWUgPyAqbV9jdXJyZW50
VmlkZW9GcmFtZSA6ICptX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhLCBTZWNv
bmRzIHByZXNlbnRhdGlvblRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSwgU2Vjb25kcyBwcmVzZW50YXRpb25UaW1lKQog
ewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fY3VycmVudFZpZGVvU2FtcGxlTG9jayB9OwotICAgICAgICAgICAgbV9j
dXJyZW50VmlkZW9TYW1wbGUgPSAmc2FtcGxlOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICBtX2N1cnJlbnRWaWRlb0Zy
YW1lID0gJnZpZGVvRnJhbWU7CiAgICAgICAgIH0KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWVd
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7CisgICAg
ICAgICAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdmlkZW9GcmFtZTsKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vha1RoaXMtPm1fY3VycmVudFZpZGVvU2Ft
cGxlTG9jayB9OwotICAgICAgICAgICAgICAgIHNhbXBsZSA9IFdURk1vdmUod2Vha1RoaXMtPm1f
Y3VycmVudFZpZGVvU2FtcGxlKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vh
a1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICAgICAgdmlkZW9G
cmFtZSA9IFdURk1vdmUod2Vha1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICBpZiAoIXZpZGVvRnJh
bWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB3ZWFrVGhpcy0+cHJv
Y2Vzc05ld1ZpZGVvU2FtcGxlKCpzYW1wbGUsIG1ldGFkYXRhLCBwcmVzZW50YXRpb25UaW1lKTsK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzTmV3VmlkZW9GcmFtZSgqdmlkZW9GcmFtZSwg
bWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTMxNiwxNiArMzE1LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhCiAg
ICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUgfHwgbV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFn
ZSkgewotICAgICAgICBtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSA9ICZzYW1wbGU7CisgICAg
aWYgKCFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lIHx8IG1fZGlzcGxheU1vZGUgIT0gUGF1c2Vk
SW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSA9ICZ2aWRlb0ZyYW1l
OwogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkK
ICAgICAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKICAgICB9CiAKICAgICBtX3ByZXNlbnRh
dGlvblRpbWUgPSBwcmVzZW50YXRpb25UaW1lOwotICAgIG1fdmlkZW9GcmFtZVNpemUgPSBzYW1w
bGUucHJlc2VudGF0aW9uU2l6ZSgpOwotICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpID09
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IHNhbXBsZS52aWRlb1JvdGF0aW9u
KCkgPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIG1fdmlkZW9GcmFt
ZVNpemUgPSB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICBpZiAodmlkZW9GcmFt
ZS5yb3RhdGlvbigpID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHZpZGVvRnJhbWUu
cm90YXRpb24oKSA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAgIG1fdmlk
ZW9GcmFtZVNpemUgPSB7IG1fdmlkZW9GcmFtZVNpemUuaGVpZ2h0KCksIG1fdmlkZW9GcmFtZVNp
emUud2lkdGgoKSB9OwogICAgIG1fc2FtcGxlTWV0YWRhdGEgPSBtZXRhZGF0YTsKICAgICArK21f
c2FtcGxlQ291bnQ7CkBAIC0zNjAsOCArMzU5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBp
ZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmRpZEZhaWwoKSkgewogICAgICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgICAgICBpZiAo
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCi0gICAgICAgICAgICBlbnF1ZXVlVmlkZW9TYW1w
bGUoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICAgICAgaWYgKG1faW1hZ2VQYWlu
dGVyLnZpZGVvRnJhbWUpCisgICAgICAgICAgICBlbnF1ZXVlVmlkZW9GcmFtZSgqbV9pbWFnZVBh
aW50ZXIudmlkZW9GcmFtZSk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiAgICAgfQog
fQpAQCAtNTY5LDcgKzU2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpwbGF5KCkKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAg
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wbGF5KCk7CiAgICAgdXBkYXRlRGlzcGxh
eU1vZGUoKTsKLSAgICByZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpOworICAg
IHJlZW5xdWV1ZUN1cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKTsKIAogICAgIHNjaGVkdWxlRGVm
ZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKQEAgLTY0MSw3
ICs2NDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
UGFnZUlzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKIAogICAgIG1faXNQYWdlVmlzaWJsZSA9IGlz
VmlzaWJsZTsKICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgIHJlZW5xdWV1ZUN1cnJlbnRWaWRl
b1NhbXBsZUlmTmVlZGVkKCk7CisgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJhbWVJZk5lZWRl
ZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlzaWJsZUZvckNhbnZhcyhib29sKQpAQCAtNjgxLDcgKzY4MCw3IEBAIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudFJl
YWR5U3RhdGUoCiAgICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVh
bVByaXZhdGUtPmFjdGl2ZSgpIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+aGFzVHJhY2tzKCkp
CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAK
LSAgICBib29sIHdhaXRpbmdGb3JJbWFnZSA9IGFjdGl2ZVZpZGVvVHJhY2soKSAmJiAhbV9pbWFn
ZVBhaW50ZXIubWVkaWFTYW1wbGU7CisgICAgYm9vbCB3YWl0aW5nRm9ySW1hZ2UgPSBhY3RpdmVW
aWRlb1RyYWNrKCkgJiYgIW1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWU7CiAgICAgaWYgKHdhaXRp
bmdGb3JJbWFnZSAmJiAoIW1faGF2ZVNlZW5NZXRhZGF0YSB8fCBtX3dhaXRpbmdGb3JGaXJzdElt
YWdlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGlu
ZzsKIApAQCAtNzQwLDcgKzczOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpzY2hlZHVsZVJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKICAgICBzY2hlZHVsZURl
ZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBt
X3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKLSAgICAgICAgcmVlbnF1ZXVlQ3VycmVu
dFZpZGVvU2FtcGxlSWZOZWVkZWQoKTsKKyAgICAgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJh
bWVJZk5lZWRlZCgpOwogICAgIH0pOwogfQogCkBAIC04OTQsNyArODkzLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNr
KCkKIAogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewogICAgICAgICBpZiAo
IW1fYWN0aXZlVmlkZW9UcmFjaykKLSAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5jbGVhckVucXVldWVkU2FtcGxlcygpOworICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmNsZWFyVmlkZW9GcmFtZXMoKTsKICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPnVwZGF0ZURpc3BsYXlNb2RlKGhpZGVWaWRlb0xheWVyIHx8IG1fZGlzcGxh
eU1vZGUgPCBQYXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigpKTsKICAgICB9CiAKQEAgLTkwMiwx
MSArOTAxLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
aGVja1NlbGVjdGVkVmlkZW9UcmFjaygpCiAKICAgICBpZiAob2xkVmlkZW9UcmFjayAhPSBtX2Fj
dGl2ZVZpZGVvVHJhY2spIHsKICAgICAgICAgaWYgKG9sZFZpZGVvVHJhY2spCi0gICAgICAgICAg
ICBvbGRWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgb2xkVmlkZW9UcmFjay0+c3RyZWFtVHJhY2so
KS5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAo
bV9hY3RpdmVWaWRlb1RyYWNrKSB7CiAgICAgICAgICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgJiYgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLmlz
Q2FwdHVyZVNvdXJjZSgpKQogICAgICAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5zZXRSZW5kZXJQb2xpY3koU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW5kZXJQb2xp
Y3k6OkltbWVkaWF0ZWx5KTsKLSAgICAgICAgICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFt
VHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAg
ICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb0Zy
YW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAib2JzZXJ2aW5nIHZpZGVvIHNvdXJjZSAiLCBtX2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRy
YWNrKCkubG9nSWRlbnRpZmllcigpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTk4Nyw3ICs5ODYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogewotICAgIGlmICht
X2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAg
ICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZl
ckNvbmZvcm1lcikKQEAgLTk5Nyw3ICs5OTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgIGlmICghbV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvIHBpeGVsQnVmZmVyID0gbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBpeGVs
QnVmZmVyKCkpCisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlUGFpbnRlci52aWRl
b0ZyYW1lLT5waXhlbEJ1ZmZlcigpKQogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+
Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIApAQCAtMTAwNiw3
ICsxMDA1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAobV9kaXNwbGF5TW9k
ZSA9PSBOb25lIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBQYWlu
dEl0QmxhY2sgJiYgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYgKG1fZGlzcGxh
eU1vZGUgIT0gUGFpbnRJdEJsYWNrICYmIG1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpCiAgICAg
ICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC0xMDE1LDEyICsxMDE0LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAg
IGlmICghbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5j
Z0ltYWdlOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIGlt
YWdlLT5zaXplKCkgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAg
QWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJp
eCgqbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSk7CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVk
RGVzdFJlY3QgPSB2YWx1ZU9yRGVmYXVsdCh2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5z
Zm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CkBAIC0xMDMyLDEyICsxMDMxLDcgQEAgUmVmUHRy
PFZpZGVvRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9G
cmFtZUZvckN1cnJlbnRUaW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKG1fZGlz
cGxheU1vZGUgPT0gUGFpbnRJdEJsYWNrKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpZiAoaXM8VmlkZW9GcmFtZT4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKSkKLSAg
ICAgICAgcmV0dXJuICZkb3duY2FzdDxWaWRlb0ZyYW1lPigqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwotICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSkpOwotICAgIHJldHVybiBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+
KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkudmlkZW9GcmFtZSgpOworICAgIHJldHVybiBt
X2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjb2xvclNwYWNlKCkKQEAgLTExMTEs
NyArMTEwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
Y2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogewog
ICAgIGNnSW1hZ2UgPSBudWxscHRyOwotICAgIG1lZGlhU2FtcGxlID0gbnVsbHB0cjsKKyAgICB2
aWRlb0ZyYW1lID0gbnVsbHB0cjsKICAgICBwaXhlbEJ1ZmZlckNvbmZvcm1lciA9IG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXgg
NWRjZmMwMmRhMWI4YjNmYzE2NDZjYjIyMWY5MTJmMTJiZDFlZDlmMi4uNmM1YWU1MzNiODdmMDA1
MzRhN2VlZTRlZGFlODVhY2FmMDZlMjNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmgKQEAgLTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+
PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRp
c3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBWaWRlb1JvdGF0aW9uIHZpZGVv
Um90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvdGF0aW9uOyB9Ci0gICAgYm9v
bCB2aWRlb01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3JlZDsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5h
bDsKKyAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbWlycm9yZWQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCBwaXhlbEZvcm1h
dCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVy
c2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggYTA0NTg3MGVkN2U2ODdk
MjFmMzM3OTE0MGIyODA0NjZlYTMxZjkyOC4uMTMxMWIzMzcxOGE4NGUzM2QxMzkzMTEzMDJkMDQ3
NWZkOTYzYzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQz
Ml90IE1lZGlhU2FtcGxlQVZGT2JqQzo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit1aW50MzJf
dCBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7CiAgICAgcmV0dXJuIENWUGl4ZWxC
dWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KaW5kZXggMDNmN2U0NTNjMmY0ZTFhOWM3ZDlmNTAyZmNmMjVmYTM1OGIzMzYz
OC4uNzE1NDJmNzliN2MyZDMzNjI5OWZjYzJhZDUyZTkzMWIyMGVkYzQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCkBAIC03ODEsNyArNzgxLDcgQEAgUmVmUHRyPFZpZGVvRnJh
bWU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb1ZpZGVv
RnJhbWUoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobV9yZXNvdXJjZU93bmVy
KQogICAgICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIobWVkaWFTYW1w
bGVQaXhlbEJ1ZmZlci5nZXQoKSwgbV9yZXNvdXJjZU93bmVyKTsKLSAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUoeyB9LCBmYWxzZSwgVmlkZW9GcmFtZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgV1RGTW92ZShtZWRpYVNhbXBsZVBpeGVsQnVmZmVyKSk7CisgICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKHsgfSwgZmFsc2UsIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBXVEZN
b3ZlKG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZU
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vz
c2lvblZULmgKaW5kZXggZDM4OTE5ODFlODVlODAzZGY4NGU1MDU3MGIyZDQwYWQ0MmVjMTU4Ny4u
NzM5MjQ0NmExMDUyMDIxZDg5ZDA0ZWNmYmI0ZmVjYmZhZDRiNjc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25T
ZXNzaW9uVlQuaApAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZm
ZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFZpZGVvRnJhbWU7CiAKIGNsYXNzIEltYWdlUm90YXRp
b25TZXNzaW9uVlQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTaXplJiByb3RhdGVkU2l6ZSgpIHsg
cmV0dXJuIG1fcm90YXRlZFNpemU7IH0KIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiByb3RhdGUoQ1ZQaXhlbEJ1ZmZlclJlZik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZShNZWRpYVNhbXBsZSYsIGNvbnN0IFJvdGF0aW9uUHJv
cGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGUoVmlkZW9GcmFtZSYsIGNvbnN0IFJvdGF0aW9u
UHJvcGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBGbG9hdFNpemUsIElzQ0dJbWFn
ZUNvbXBhdGlibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW0KaW5kZXggM2VhYjA2ODllOTA0
NTFhZDQ1OGNlZjM4OTY5NGZmOWU2OWIwNmY3Ni4uYTI2YWY4MWQ2MTk0MjZhYWVlOTczNzkxZjNm
MDUyOGE5Mzc3ZjM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW1wb3J0ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAi
VmlkZW9GcmFtZS5oIgogCiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCAi
VmlkZW9Ub29sYm94U29mdExpbmsuaCIKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoTWVkaWFTYW1wbGUmIHZpZGVv
RnJhbWUsIGNvbnN0IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBh
dGlibGUgY2dJbWFnZUNvbXBhdGlibGUpCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0
IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBhdGlibGUgY2dJbWFn
ZUNvbXBhdGlibGUpCiB7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHZpZGVvRnJhbWUucGl4ZWxC
dWZmZXIoKTsKICAgICBBU1NFUlQocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
CmluZGV4IGJhODEwNGQ2OTgxNGI0ZDgxYTJjNTk0MDllNWUyZGZmN2EzNTQ5YzcuLmQyMDUxMzQw
YThhMTU0OTczNDM0YmZmYmQyOGJmNGY2NzVlZTkwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4obmV3IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQo
cGl4ZWxGb3JtYXQsIHNob3VsZFVzZUlPU3VyZmFjZSkpOwogICAgIH0KIAotICAgIFJlZlB0cjxN
ZWRpYVNhbXBsZT4gY29udmVydFZpZGVvRnJhbWUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXpl
Jik7Ci0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVm
LCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9
IGZhbHNlKTsKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2Ft
cGxlQnVmZmVyUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9v
bCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY29udmVydFZpZGVv
RnJhbWUoVmlkZW9GcmFtZSYsIGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFt
ZT4gY3JlYXRlVmlkZW9GcmFtZShDR0ltYWdlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJ
bnRTaXplJiwgVmlkZW9GcmFtZTo6Um90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9u
ZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY3JlYXRl
VmlkZW9GcmFtZShDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50
U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUs
IGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShJ
T1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29s
IG1pcnJvcmVkID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0ZyYW1l
PiBjcmVhdGVWaWRlb0ZyYW1lKElPU3VyZmFjZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
SW50U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5v
bmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAjZW5kaWYKIAogICAgIHVpbnQzMl90IHBpeGVs
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0KaW5kZXggOGI2ZDc5NDU1YWI3MzMyYzM0Mzk5MjgxNDkzM2M2MDVmOTc5Y2M2ZC4u
YTczNTg2ZDlkNjljYzVmMTZlOTkzMTU2YTE3YzBkZGQyZmJlMmJiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVDTVNhbXBsZUJ1ZmZlcihJT1N1cmYK
IH0KICNlbmRpZgogCi1SZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNvbnZlcnRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBjb25zdCBJbnRTaXpl
JiBzaXplKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZl
cnRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgaWYgKHNpemUgPT0gZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0
aW9uU2l6ZSgpKSkKICAgICAgICAgcmV0dXJuICZ2aWRlb0ZyYW1lOwpAQCAtMjY0LDExICsyNjQs
MTEgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0
VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW8KICAgICBpZiAoIXJlc2l6ZWRCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRl
KHZpZGVvRnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb0ZyYW1lLnZpZGVvTWlycm9yZWQo
KSwgdmlkZW9GcmFtZS52aWRlb1JvdGF0aW9uKCksIFdURk1vdmUocmVzaXplZEJ1ZmZlcikpOwor
ICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRp
bWUoKSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgV1RG
TW92ZShyZXNpemVkQnVmZmVyKSk7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi1S
ZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2Ft
cGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNv
bnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBi
b29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNyZWF0ZVZpZGVvRnJhbWUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IE1lZGlhVGltZSYg
c2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVD
TVNhbXBsZUJ1ZmZlcihzdXJmYWNlLCBzYW1wbGVUaW1lLCBzaXplKTsKICAgICBpZiAoIXNhbXBs
ZUJ1ZmZlcikKQEAgLTI3OCw3ICsyNzgsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYQogfQog
I2VuZGlmCiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlTWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVU
aW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbiwgYm9vbCBtaXJyb3JlZCkKK1JlZlB0cjxWaWRlb0ZyYW1lPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGVWaWRlb0ZyYW1lKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IE1lZGlhVGlt
ZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24g
cm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVh
dGVDTVNhbXBsZUJ1ZmZlcihpbWFnZSwgc2FtcGxlVGltZSwgc2l6ZSk7CiAgICAgaWYgKCFzYW1w
bGVCdWZmZXIpCkBAIC0yODcsNyArMjg3LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmIGltYWdlLAogICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIG1pcnJvcmVk
LCByb3RhdGlvbik7CiB9CiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyLCBjb25zdCBN
ZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+
IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZVZpZGVvRnJhbWUoQ01TYW1wbGVCdWZmZXJS
ZWYgYnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNp
emUsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQogewogICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gY29udmVydENNU2FtcGxlQnVmZmVyKGJ1ZmZlciwgc2l6ZSwg
JnNhbXBsZVRpbWUpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAppbmRleCA5M2EzZTcxNTdl
NjFmNTA5MTA1MmJmM2Y1ZjQwNGNmMDkyNjgxYzg0Li4wY2QyZTEwOWJjNzg2MDM1YTVhZGYxOTY0
YzFjZTM5ZGYxZTY5Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlZpZGVv
RnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLXVzaW5nIENWUGl4ZWxCdWZm
ZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7Cit1c2luZyBDTVNhbXBsZUJ1ZmZlclJlZiA9IHN0
cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzksOCArMzksOCBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3MgVmlkZW9GcmFtZUNWIDog
cHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wg
aXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0ZyYW1lQ1Y+IGNyZWF0ZShNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFt
ZUNWPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24p
OwogICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GcmFtZUNWPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWVDVigpOwogCkBA
IC01MiwyNyArNTIsMjYgQEAgcHVibGljOgogCiAgICAgLy8gVmlkZW9GcmFtZSBvdmVycmlkZXMu
CiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUo
KSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB2aWRlb1BpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3QgcGl4ZWxGb3Jt
YXQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElk
ZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogICAgIGJvb2wgaXNDVigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpIGZpbmFsOwogCiBwcml2YXRlOgot
ICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZUNWKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4mJik7CiAKICAgICBjb25zdCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
bV9waXhlbEJ1ZmZlcjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVmlk
ZW9GcmFtZUNWOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1fcHJlc2VudGF0aW9uVGltZSA8PCBtX2lzTWlycm9yZWQgPDwgbV9yb3RhdGlvbiA8PCBt
X3BpeGVsQnVmZmVyOworICAgIGVuY29kZXIgPDwgcHJlc2VudGF0aW9uVGltZSgpIDw8IGlzTWly
cm9yZWQoKSA8PCByb3RhdGlvbigpIDw8IG1fcGl4ZWxCdWZmZXI7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFZpZGVvRnJhbWVDVj4+IFZpZGVv
RnJhbWVDVjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcmVzZW50YXRp
b25UaW1lID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8TWVkaWFUaW1lPigpOwogICAgIGF1dG8g
aXNNaXJyb3JlZCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPGJvb2w+KCk7Ci0gICAgYXV0byBy
b3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFZpZGVvUm90YXRpb24+KCk7CisgICAg
YXV0byByb3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFJvdGF0aW9uPigpOwogICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4+KCk7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSB8fCAhKnBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODMsNyArODIsNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxWaWRlb0ZyYW1l
Q1Y+PiBWaWRlb0ZyYW1lQ1Y6OmRlYwogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlZpZGVvRnJhbWVDVikKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlkZW9GcmFtZS5pc0NWKCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlh
U2FtcGxlKSB7IHJldHVybiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYg
aXM8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPihkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lPiht
ZWRpYVNhbXBsZSkpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFt
ZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNW
Lm1tCmluZGV4IGFiZDdlMmZjODk3YjA3MWJiMGI1ZmYzOTc2ZDk5ZjBjMTllMTQ0NmMuLmJmZmUy
YjRiZDZiNTU3YTI4Nzk4Y2IyZGVjMTJiYjlkNDg2M2M4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0Zy
YW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaXJy
b3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1JlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgYm9vbCBpc01pcnJv
cmVkLCBSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KHNhbXBsZUJ1ZmZlcikpOwogICAgIGF1dG8gdGltZVN0YW1wID0gUEFMOjpDTVNhbXBsZUJ1ZmZl
ckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOwpAQCAtNDQsNyAr
NDQsNyBAQCBSZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaQogICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6
OmNyZWF0ZShQQUw6OnRvTWVkaWFUaW1lKHRpbWVTdGFtcCksIGlzTWlycm9yZWQsIHJvdGF0aW9u
LCBwaXhlbEJ1ZmZlcik7CiB9CiAKLVJlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90
YXRpb24gcm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVy
KQorUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24sIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyKQogewogICAgIEFTU0VSVChwaXhlbEJ1
ZmZlcik7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUNWKHByZXNlbnRhdGlv
blRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uLCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSkpOwpAQCAt
NzMsMTAgKzczLDEwIEBAIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3JlYXRl
RnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7Ci0gICAg
cmV0dXJuIGNyZWF0ZSh7IH0sIGZhbHNlLCBWaWRlb1JvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKGN2
UGl4ZWxCdWZmZXIpKTsKKyAgICByZXR1cm4gY3JlYXRlKHsgfSwgZmFsc2UsIFJvdGF0aW9uOjpO
b25lLCBXVEZNb3ZlKGN2UGl4ZWxCdWZmZXIpKTsKIH0KIAotVmlkZW9GcmFtZUNWOjpWaWRlb0Zy
YW1lQ1YoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9S
b3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZm
ZXIpCitWaWRlb0ZyYW1lQ1Y6OlZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIpCiAgICAgOiBWaWRlb0ZyYW1lKHByZXNlbnRhdGlvblRp
bWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uKQogICAgICwgbV9waXhlbEJ1ZmZlcihXVEZNb3ZlKHBp
eGVsQnVmZmVyKSkKIHsKQEAgLTg5LDcgKzg5LDcgQEAgV2ViQ29yZTo6RmxvYXRTaXplIFZpZGVv
RnJhbWVDVjo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX3BpeGVsQnVmZmVyLmdldCgpKSksIHN0
YXRpY19jYXN0PGZsb2F0PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fcGl4ZWxCdWZmZXIuZ2V0
KCkpKSB9OwogfQogCi11aW50MzJfdCBWaWRlb0ZyYW1lQ1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBj
b25zdAordWludDMyX3QgVmlkZW9GcmFtZUNWOjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUobV9waXhlbEJ1ZmZlci5nZXQo
KSk7CiB9CkBAIC0xMDIsMjMgKzEwMiwxOCBAQCB2b2lkIFZpZGVvRnJhbWVDVjo6c2V0T3duZXJz
aGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogICAgIHNl
dE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihidWZmZXIsIHJlc291cmNlT3duZXIp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmFzVmlk
ZW9GcmFtZUNWKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQogSW1hZ2VPcmllbnRhdGlvbiBW
aWRlb0ZyYW1lQ1Y6Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICAvLyBTYW1wbGUgdHJhbnNm
b3JtIGZpcnN0IGZsaXBzIHgtY29vcmRpbmF0ZXMsIHRoZW4gcm90YXRlcy4KLSAgICBzd2l0Y2gg
KG1fcm90YXRpb24pIHsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
OgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2lu
VG9wUmlnaHQgOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OwotICAgIGNhc2UgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4gbV9pc01pcnJv
cmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5SaWdodFRvcDsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpVcHNpZGVEb3duOgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJp
Z2h0OwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6Ci0gICAgICAg
IHJldHVybiBtX2lzTWlycm9yZWQgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDog
SW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbTsKKyAgICBzd2l0Y2ggKHJvdGF0aW9u
KCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wUmlnaHQgOiBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRp
b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlv
bjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDsK
KyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IElt
YWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6
Um90YXRpb246OkxlZnQ6CisgICAgICAgIHJldHVybiBpc01pcnJvcmVkKCkgPyBJbWFnZU9yaWVu
dGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDogSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRv
bTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcAppbmRleCBl
OTU1ZTA0MmY4NWY5YzNjMTZmYjJkYTgzYjkzNWI3N2Q5Mzk0NTRmLi5iOWQzOGYwNDc0OGRkMTNi
M2Q0ZmQyZTMyNjcwODYzNTg1N2YyNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFt
ZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFZp
ZGVvRnJhbWVHU3RyZWFtZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1
ZmZlcihQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRh
dGlvblRpbWUsIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSwgZG91YmxlIGZyYW1lUmF0
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIHN0ZDo6
b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0YSkKK1JlZjxWaWRlb0Zy
YW1lR1N0cmVhbWVyPiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlciwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25U
aW1lLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUsIGRvdWJsZSBmcmFtZVJhdGUsIFJv
dGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxW
aWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogewogICAgIGVuc3VyZUdTdHJlYW1l
ckluaXRpYWxpemVkKCk7CiAKQEAgLTg1LDcgKzg1LDcgQEAgUmVmPFZpZGVvRnJhbWVHU3RyZWFt
ZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZl
ciYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lR1N0cmVhbWVyKFdURk1vdmUo
c2FtcGxlKSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBwcmVzZW50YXRpb25UaW1lLCB2aWRl
b1JvdGF0aW9uLCB2aWRlb01pcnJvcmVkLCBXVEZNb3ZlKG1ldGFkYXRhKSkpOwogfQogCi1WaWRl
b0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYm
IHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRp
bWUmIHByZXNlbnRhdGlvblRpbWUsIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiwgYm9vbCB2
aWRlb01pcnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0
YWRhdGEpCitWaWRlb0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBj
b25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24s
IGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
PiYmIG1ldGFkYXRhKQogICAgIDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCB2aWRlb01p
cnJvcmVkLCB2aWRlb1JvdGF0aW9uKQogICAgICwgbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQog
ICAgICwgbV9wcmVzZW50YXRpb25TaXplKHByZXNlbnRhdGlvblNpemUpCkBAIC05OCw3ICs5OCw3
IEBAIFZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoR1JlZlB0cjxHc3RT
YW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hCiAgICAgICAgIGJ1ZmZlciA9IHdlYmtpdEdzdEJ1
ZmZlclNldFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEoYnVmZmVyLCBXVEZNb3ZlKG1ldGFkYXRhKSk7
CiB9CiAKLVZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1Jl
ZlB0cjxHc3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGlt
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQorVmlkZW9GcmFtZUdTdHJlYW1lcjo6Vmlk
ZW9GcmFtZUdTdHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNhbXBsZSwgY29uc3Qg
TWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBSb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQogICAg
IDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBmYWxzZSwgdmlkZW9Sb3RhdGlvbikKICAg
ICAsIG1fc2FtcGxlKHNhbXBsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCmlu
ZGV4IDExYmY5MDJjMDBjMWE5MzIxM2E1OTA1Yjc4ZjI4OWI3M2Y4MTQ2MTMuLjFjODBjMjJlMDI2
NjU5NjZkMTdiOThhODZjMTI1MjZlMTZmYjkwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3Ry
ZWFtZXIuaApAQCAtMzAsMjYgKzMwLDI3IEBAIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBW
aWRlb0ZyYW1lR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0U2Ft
cGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBN
ZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIFZp
ZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlk
ZW9NaXJyb3JlZCA9IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+
JiYgbWV0YWRhdGEgPSBzdGQ6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hdFNp
emUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSA9
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFJvdGF0
aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUdTdHJlYW1lcihXVEZNb3ZlKHNh
bXBsZSksIHByZXNlbnRhdGlvblNpemUsIHByZXNlbnRhdGlvblRpbWUsIHZpZGVvUm90YXRpb24s
IHZpZGVvTWlycm9yZWQsIFdURk1vdmUobWV0YWRhdGEpKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0IEdSZWZQ
dHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUs
IFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpCisgICAg
c3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlv
blRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVHU3RyZWFtZXIoc2FtcGxlLCBw
cmVzZW50YXRpb25UaW1lLCB2aWRlb1JvdGF0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJl
ZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXIm
JiwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFt
ZVJhdGUgPSAxLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpO
b25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgUmVm
PFZpZGVvRnJhbWVHU3RyZWFtZXI+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYm
LCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCksIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSA9IHsgfSwgZG91YmxlIGZyYW1l
UmF0ZSA9IDEsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSwgYm9vbCB2
aWRlb01pcnJvcmVkID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0
YT4mJiBtZXRhZGF0YSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBHc3RTYW1wbGUqIHNhbXBsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9G
cmFtZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiwgY29uc3QgRmxvYXRTaXplJiBwcmVz
ZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCksIFZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBi
b29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKLSAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpOworICAgIFZpZGVvRnJhbWVHU3Ry
ZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9u
U2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQg
PSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmID0gc3RkOjpu
dWxsb3B0KTsKKyAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxl
PiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gPSBSb3RhdGlv
bjo6Tm9uZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3Qg
cGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAKICAgICBHUmVmUHRyPEdz
dFNhbXBsZT4gbV9zYW1wbGU7CiAgICAgRmxvYXRTaXplIG1fcHJlc2VudGF0aW9uU2l6ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAwMzgxODlmNzQ3ZGZiYjI4Zjg3NWY3ZTY3ZjViYzFm
YTMxNTg2Y2ZjLi44ZTc5ZjRiZWE4MzQwZGJkNjcxMWRkYzI4ZTJhNzA4ZWI5YTg2MjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6CiAg
ICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlKCk7CiAKQEAgLTExNiwxMiArMTE2LDEyIEBAIGlubGlu
ZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZXRBdWRpb1NvdXJjZShSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4mJiBhCiBpbmxpbmUgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2V0
VmlkZW9Tb3VyY2UoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgdmlkZW9Tb3VyY2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5yZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV92aWRlb1NvdXJjZSA9IFdURk1vdmUo
dmlkZW9Tb3VyY2UpOwogCiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9T
b3VyY2UtPmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291
cmNlLT5hZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiBpbmxpbmUgTWVkaWFSZWNv
cmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCkBAIC0xMzIsNyArMTMyLDcgQEAg
aW5saW5lIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp+TWVkaWFSZWNvcmRlclByaXZhdGUoKQogICAg
IGlmIChtX2F1ZGlvU291cmNlKQogICAgICAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVBdWRpb1Nh
bXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICBpZiAobV92aWRlb1NvdXJjZSkKLSAgICAgICAgbV92
aWRlb1NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1f
dmlkZW9Tb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNw
cAppbmRleCAxYzBkM2U1M2M2MWMyZjE2OGZhNWRjZmVmZTNkYTJjMzYzZDI5MmJkLi5hNzRlYmRk
OTM2YTQ1NTIzMTQxNjQ4MTVkMWQ5ODc4MTZkZWQ0NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC04MywxOSArODMsMTkgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2sm
JiBjYWxsYmEKICAgICBjYWxsYmFjayhTdHJpbmcobV93cml0ZXItPm1pbWVUeXBlKCkpLCBtX3dy
aXRlci0+YXVkaW9CaXRSYXRlKCksIG1fd3JpdGVyLT52aWRlb0JpdFJhdGUoKSk7CiB9CiAKLXZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVv
KCkpIHsKICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUpIHsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgICAgICBtX2JsYWNrRnJhbWUg
PSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUu
dmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBjcmVhdGVCbGFja1BpeGVs
QnVmZmVyKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgYXV0byBz
aXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBtX2JsYWNr
RnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRpbWUo
KSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgY3JlYXRl
QmxhY2tQaXhlbEJ1ZmZlcihzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAg
fQogICAgICAgICBtX3dyaXRlci0+YXBwZW5kVmlkZW9GcmFtZSgqbV9ibGFja0ZyYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fYmxhY2tGcmFtZSA9IG51bGxwdHI7Ci0gICAg
bV93cml0ZXItPmFwcGVuZFZpZGVvRnJhbWUoVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlLnBy
ZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxlLnZpZGVvUm90
YXRpb24oKSwgc2FtcGxlLnBpeGVsQnVmZmVyKCkpKTsKKyAgICBtX3dyaXRlci0+YXBwZW5kVmlk
ZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGwuaAppbmRleCA5NTdmNWQwODc3OWZhOWMzOTI3N2U5MTU5M2M1NjM5NjhjZDc4
ODI2Li4xMjg5NzM1OWNkYmQ3MDgxZTU5YzkxZDhlZGJmMGI1YzA1ZDU4MTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyPiYmKTsKIAogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCi0gICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0
YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyLmgKaW5kZXggNzRmMWU3MjM2NzRlOGQwMTk4MjVjNzQwYmM4NjcyZmM2N2Rh
ZjkyMi4uYjE1YzdiZTQxM2MxYmMxMDkxZmM5MmUxOWEwZGFlNTBkZTI0ZDZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBwcmVwYXJlUGlwZWxpbmUoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkgZmluYWwgeyB9OworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWwgeyB9OwogICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbCB7IH07CiAKICAg
ICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCAwNjE3NmM3NDAwMWVmZGY2ZjQ1OTFmNjhkMmUw
MGUxMGE3Y2MwZjhhLi43ZjZkYjNjN2IwNzM3ZmFmMGNlYjlhYTY5ZThkMGRlMzhkZDBiNmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpyZXN1bWVSZWNvcmRpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICBtX2J1ZmZl
ci5hcHBlbmQoIlZpZGVvIFRyYWNrIElEOiAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9j
ay5oCmluZGV4IDcyOTY0NjI1NTM2YzZmMTIwOTIwMzA4MmZmM2UwYjZhN2EzNzcyN2EuLmY5MzU5
MGE4MDg2NzVmZDgzM2RkMjQ0YTI4ZjM3YjU1ZjA1ODgwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZU1vY2suaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Ly8gTWVkaWFSZWNvcmRlclByaXZhdGUKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgdm9pZCB2aWRl
b0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5h
bDsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFs
OwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCBhZGNlNDgzMDJmNWRhOWY3MzA1ZjlkZjJmNGJiYjA4YzBjZDFlZGYwLi5mYWFj
NmM5ODhjZTZhMzcxZWYyNTNlYThmYjlmOTVlZTYxZDkzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTMyLDcgKzEzMiw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgeyBmYWxzZSB9
OwogCiAgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0ZXJEZWxl
Z2F0ZTsKLSAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3BlbmRpbmdW
aWRlb1NhbXBsZVF1ZXVlOworICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+
IG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZTsKICAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+PiBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlOwogCiAgICAgYm9vbCBtX2lzRmx1
c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAzMTY2ZTgxNDYyOWU5MDQ4ZTEwZDRjODkw
Yjg5YTJhN2U2MjBjMjUzLi4wMjRmMDlkZmU3Y2U5ZjlmZjE5YzJlODBhMDA1YTAwOGY3YTU5YjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmkKIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogewog
ICAgIG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuY2xlYXIoKTsKLSAgICBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFy
KCk7CiAgICAgaWYgKG1fd3JpdGVyKSB7CiAgICAgICAgIFttX3dyaXRlciBjYW5jZWxXcml0aW5n
XTsKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKQEAgLTI4MywxNSArMjgzLDE1IEBAIGJvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1
ZmZlcklmUG9zc2libGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9pc0Zs
dXNoaW5nU2FtcGxlcykgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IHdoaWxlICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fdmlkZW9B
c3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgYXBwZW5k
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUudGFr
ZUZpcnN0KCkuZ2V0KCkpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmlz
RW1wdHkoKSAmJiBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURh
dGFdKQorICAgICAgICBhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIobV9wZW5kaW5n
VmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgpKTsKIAogICAgIGlmICghW21fdmlkZW9B
c3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewotICAgICAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVy
SW5wdXQgKmFzCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNz
ZWRTYW1wbGVCdWZmZXJzKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBib29s
IGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMgPSAhbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5pc0Vt
cHR5KCk7Ci0gICAgYm9vbCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzID0gIW1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUuaXNFbXB0eSgpOworICAgIGJvb2wgaGFzUGVuZGluZ1ZpZGVvU2FtcGxlcyA9
ICFtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0eSgpOwogCiAgICAgaWYgKG1faGFzRW5j
b2RlZFZpZGVvU2FtcGxlcykgewogICAgICAgICBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzIHw9ICFb
bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdOwpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJl
c3NlZFNhbXBsZUJ1ZmZlcnMoRnVuY3Rpb248dm9pZCgpPiYmCiAKICAgICBBU1NFUlQoIW1faXNG
bHVzaGluZ1NhbXBsZXMpOwogICAgIG1faXNGbHVzaGluZ1NhbXBsZXMgPSB0cnVlOwotICAgIGF1
dG8gYmxvY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMsIGhhc1BlbmRpbmdWaWRlb1NhbXBsZXMsIGF1ZGlv
U2FtcGxlUXVldWUgPSBXVEZNb3ZlKG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUpLCB2aWRlb1Nh
bXBsZVF1ZXVlID0gV1RGTW92ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBoYXNQZW5kaW5nQXVk
aW9TYW1wbGVzLCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzLCBhdWRpb1NhbXBsZVF1ZXVlID0gV1RG
TW92ZShtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlKSwgdmlkZW9TYW1wbGVRdWV1ZSA9IFdURk1v
dmUobV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2Fs
bGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4Niw5ICszODYsOSBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIGZy
YW1lKQogICAgIGlmICghbV9maXJzdFZpZGVvRnJhbWUpIHsKICAgICAgICAgbV9maXJzdFZpZGVv
RnJhbWUgPSB0cnVlOwogICAgICAgICBtX3Jlc3VtZWRWaWRlb1RpbWUgPSBQQUw6OkNNQ2xvY2tH
ZXRUaW1lKFBBTDo6Q01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7Ci0gICAgICAgIGlmIChmcmFt
ZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfHwg
ZnJhbWUudmlkZW9NaXJyb3JlZCgpKSB7Ci0gICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGljX2Nhc3Q8aW50PihmcmFtZS52aWRl
b1JvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7Ci0gICAgICAgICAgICBpZiAoZnJhbWUudmlkZW9N
aXJyb3JlZCgpKQorICAgICAgICBpZiAoZnJhbWUucm90YXRpb24oKSAhPSBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6Tm9uZSB8fCBmcmFtZS5pc01pcnJvcmVkKCkpIHsKKyAgICAgICAgICAgIG1fdmlk
ZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxp
bnQ+KGZyYW1lLnJvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7CisgICAgICAgICAgICBpZiAoZnJh
bWUuaXNNaXJyb3JlZCgpKQogICAgICAgICAgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0Fm
ZmluZVRyYW5zZm9ybVNjYWxlKCptX3ZpZGVvVHJhbnNmb3JtLCAtMSwgMSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRhOTU3OTg3MmE3NzE1ZTU0MDQzOTVk
MDU3NGRjNGRkNzFlZmIyMzkuLjZmYTNiMWUwMWQ0ODg5NGM1YTU0NzU3ZjVkMTA2N2RmZWU0YTUx
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC03NSwxOCArNzUsMTggQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpyZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2Jz
ZXJ2ZXImIG9ic2VydmUKICAgICBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2
ZXIpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZFZpZGVvU2FtcGxlT2JzZXJ2
ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmFkZFZpZGVvRnJhbWVPYnNlcnZlcihWaWRlb0ZyYW1lT2JzZXJ2ZXImIG9ic2VydmVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdmlk
ZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0gICAgbV92aWRlb1NhbXBsZU9ic2VydmVycy5hZGQo
Jm9ic2VydmVyKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9j
ayB9OworICAgIG1fVmlkZW9GcmFtZU9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2Ft
cGxlT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxl
T2JzZXJ2ZXJzTG9jayB9OwotICAgIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMucmVtb3ZlKCZvYnNl
cnZlcik7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fVmlkZW9GcmFtZU9ic2VydmVyc0xvY2sgfTsK
KyAgICBtX1ZpZGVvRnJhbWVPYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CiB9CiAKIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpAQCAt
MTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dXBkYXRlSGFzU3RhcnRl
ZFByb2R1Y2luZ0RhdGEoKQogICAgIH0pOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSwgVmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9G
cmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhIG1ldGFkYXRhKQogewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICsrbV9mcmFt
ZUNvdW50OwpAQCAtMjEwLDkgKzIxMCw5IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlLCBWaWRlb0ZyCiAKICAg
ICB1cGRhdGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSgpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7
IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0gICAgZm9yIChhdXRvKiBvYnNlcnZlciA6
IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT52aWRlb1NhbXBsZUF2
YWlsYWJsZShtZWRpYVNhbXBsZSwgbWV0YWRhdGEpOworICAgIExvY2tlciBsb2NrZXIgeyBtX1Zp
ZGVvRnJhbWVPYnNlcnZlcnNMb2NrIH07CisgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fVmlk
ZW9GcmFtZU9ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnZpZGVvRnJhbWVBdmFpbGFibGUo
dmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3Jt
QXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggNzM0
ODM1MmJlMjUxOTM1OGI1NDZkZTY4ZDBjM2I4OTJhOWY0NGU0ZS4uMWE4OTk4ZGUzYjc5ZWM0MDZj
OTZhZDBhM2Y0OTM2MzJlNzc4MzhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMzgsMTAgKzM4
LDEwIEBACiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oIgor
I2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KQEAgLTk4LDEyICs5OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1heSBiZSBjYWxs
ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KICAgICAgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QgLypudW1iZXJPZkZyYW1lcyov
KSA9IDA7CiAgICAgfTsKLSAgICBjbGFzcyBWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAgICBjbGFz
cyBWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Vmlk
ZW9TYW1wbGVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB+VmlkZW9GcmFt
ZU9ic2VydmVyKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIC8vIE1heSBiZSBjYWxsZWQgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KLSAgICAgICAgdmlydHVhbCB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRp
bWVNZXRhZGF0YSkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291
cmNlKCkgPSBkZWZhdWx0OwpAQCAtMTQ3LDggKzE0Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZEF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZlcihBdWRp
b1NhbXBsZU9ic2VydmVyJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcihWaWRlb1NhbXBsZU9ic2VydmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2Vy
dmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIo
VmlkZW9GcmFtZU9ic2VydmVyJik7CiAKICAgICBjb25zdCBJbnRTaXplIHNpemUoKSBjb25zdDsK
ICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOwpAQCAtMjUwLDcgKzI1MCw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemVTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKSB7
IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVFY2hvQ2Fu
Y2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikgeyBtX2VjaG9DYW5jZWxsYXRpb24gPSBl
Y2hvQ2FuY2VsbGF0aW9uOyB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZh
aWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKICAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlv
RGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogCiAgICAgdm9p
ZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYpOwpAQCAt
Mjg5LDggKzI4OSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBMb2NrIG1fYXVkaW9TYW1wbGVP
YnNlcnZlcnNMb2NrOwogICAgIEhhc2hTZXQ8QXVkaW9TYW1wbGVPYnNlcnZlcio+IG1fYXVkaW9T
YW1wbGVPYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJz
TG9jayk7CiAKLSAgICBtdXRhYmxlIExvY2sgbV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2s7Ci0g
ICAgSGFzaFNldDxWaWRlb1NhbXBsZU9ic2VydmVyKj4gbV92aWRlb1NhbXBsZU9ic2VydmVycyBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBtdXRh
YmxlIExvY2sgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9jazsKKyAgICBIYXNoU2V0PFZpZGVvRnJh
bWVPYnNlcnZlcio+IG1fVmlkZW9GcmFtZU9ic2VydmVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
VmlkZW9GcmFtZU9ic2VydmVyc0xvY2spOwogCiAgICAgLy8gU2V0IG9uIHRoZSBtYWluIHRocmVh
ZCBmcm9tIGNvbnN0cmFpbnRzLgogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggOWE3MTA1NWQ4NmIzZTEwOWZmMjkxNzg3MmNmYmIw
YjI0ODRjZGJmYS4uMjczNmE0M2U3NmU5OTVkZWQ4NjAwYjc0MWQ4NTdkMDhlZTk5YTFiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpvYnNlcnZlU291cmNlKCkKIHZvaWQgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp1bm9ic2VydmVTb3VyY2UoKQogewogICAgIG1fdmlk
ZW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLSAgICBtX3ZpZGVvU291cmNlLT5zb3Vy
Y2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3ZpZGVvU291cmNl
LT5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJiBuZXdTb3VyY2UpCkBAIC0xMTQsMTMgKzExNCwxMyBAQCB2b2lkIFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RvcCgpCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6dXBkYXRlQmxhY2tGcmFtZXNTZW5kaW5nKCkKIHsKICAgICBpZiAoIW1fbXV0ZWQgJiYg
bV9lbmFibGVkKSB7Ci0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLmFkZFZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5hZGRW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAobV9ibGFja0ZyYW1lVGltZXIu
aXNBY3RpdmUoKSkKICAgICAgICAgICAgIG1fYmxhY2tGcmFtZVRpbWVyLnN0b3AoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJl
bW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgc2VuZEJsYWNrRnJhbWVzSWZOZWVk
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAppbmRleCBiMmFjMTY5
MDBhM2I1NmJmNzZhMGE1YzEyMGY4ZGQyMWZiN2M5NmU4Li4zMGUyZjkzN2IyNGE1NGM1NDY3YjQ4
Mjk1YmRjMGJmOWE0YjAwODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaApA
QCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UKICAgICA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Us
IFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgd2VicnRjOjpWaWRl
b1RyYWNrU291cmNlSW50ZXJmYWNlCiAgICAgLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpPYnNlcnZlcgotICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1Nh
bXBsZU9ic2VydmVyCisgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBMb2dn
ZXJIZWxwZXIKICNlbmRpZgpAQCAtMTM0LDggKzEzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0
cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgaW5p
dGlhbGl6ZUZyb21Tb3VyY2UoKTsgfQogICAgIHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQogCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJpZGUgeyB9CisgICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIEFQSQorICAgIHZvaWQgdmlkZW9G
cmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJp
ZGUgeyB9CiAKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fdmlkZW9Tb3VyY2U7
CiAgICAgVGltZXIgbV9ibGFja0ZyYW1lVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKaW5kZXggNTc5OWQwMDM4OTEyNWU0Y2ZiYjliZTljYTNhYTA1ZGNhMWY1ZmMzNy4u
ZWQ3ZDU2NGE5OTgxYWEwNmIxNmRkZmJjYTExNDg3MTFjZDc5N2ViMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMzY1LDkgKzM2NSw5IEBAIHZvaWQgUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+
IHdpZHRoLCBzCiAgICAgc2V0RnJhbWVSYXRlKG1hdGNoLT5yZXF1ZXN0ZWRGcmFtZVJhdGUpOwog
fQogCi12b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwYXRjaE1lZGlhU2FtcGxl
VG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmIHNhbXBsZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVN
ZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3Bh
dGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7Ci0gICAgTWVkaWFUaW1lIHNhbXBs
ZVRpbWUgPSBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpOworICAgIE1lZGlhVGltZSBzYW1wbGVU
aW1lID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCk7CiAKICAgICBhdXRvIGZyYW1lVGlt
ZSA9IHNhbXBsZVRpbWUudG9Eb3VibGUoKTsKICAgICBtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBz
LmFwcGVuZChmcmFtZVRpbWUpOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2U6OmRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBs
ZSYgc2FtCiAgICAgaWYgKGludGVydmFsID4gMSkKICAgICAgICAgbV9vYnNlcnZlZEZyYW1lUmF0
ZSA9IChtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBzLnNpemUoKSAvIGludGVydmFsKTsKIAotICAg
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZSwgbWV0YWRhdGEpOworICAgIHZpZGVvRnJhbWVB
dmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBmcmFtZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCA0ZTA5
YWUyMWY0NTgzYWJmNDczMjY3ODljZmJmMmIyN2VjMzlkOTYyLi4wYmRjMGQ1NjQ0MTcwM2ZmYzgz
ODcwNzk0Yjc1NjIzMDI4YjU3ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJWaWRlb1ByZXNldC5oIgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CkBAIC00Niw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNT
aXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxp
bnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2VuZXJhdGVQcmVzZXRzKCkgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb24oKSBjb25zdCB7IHJldHVybiBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQorICAgIHZpcnR1YWwgVmlkZW9GcmFtZTo6Um90YXRpb24g
dmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246
Ok5vbmU7IH0KIAogICAgIGRvdWJsZSBvYnNlcnZlZEZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JzZXJ2ZWRGcmFtZVJhdGU7IH0KICAgICBWZWN0b3I8VmlkZW9QcmVzZXREYXRhPiBwcmVz
ZXRzRGF0YSgpOwpAQCAtNzMsNyArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0
ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJik7CiAKLSAgICB2
b2lkIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOworICAgIHZvaWQgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9P
YnNlcnZlcnMoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOwogCiAgICAgc3Rh
dGljIFNwYW48Y29uc3QgSW50U2l6ZT4gc3RhbmRhcmRWaWRlb1NpemVzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKaW5kZXggYTIzNWQ0MjNmMjkxMDRjNTk0OTI4NTRmMGY3NTdhZjA3ZjkyNGEy
OC4uZjllODRmN2I1NzQwODhmMGNkZjY5YTVmOTU0ODQ4NjA3ZDdiYTQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6UmVhbHRp
bWVWaWRlb1NvdXJjZShSZWY8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U+JiYgc291cmMKIAog
UmVhbHRpbWVWaWRlb1NvdXJjZTo6flJlYWx0aW1lVmlkZW9Tb3VyY2UoKQogewotICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVt
b3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOwogfQogCkBAIC02OSwxOCArNjksMTggQEAgdm9pZCBSZWFsdGltZVZpZGVvU291
cmNlOjp3aGVuUmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxiYWNr
KQogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewogICAg
IG1fc291cmNlLT5zdGFydCgpOwotICAgIG1fc291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+YWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0K
IAogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAg
bV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNl
LT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5zdG9wKCk7
CiB9CiAKIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZW5kUHJvZHVjaW5nRGF0YSgpCiB7Ci0g
ICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5yZXF1
ZXN0VG9FbmQoKnRoaXMpOwogfQogCkBAIC0xMjUsMTIgKzEyNSwxMiBAQCB2b2lkIFJlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKCkKIHsKLSAgICBhdXRvIHJvdGF0aW9uID0gbV9z
b3VyY2UtPnNhbXBsZVJvdGF0aW9uKCk7CisgICAgYXV0byByb3RhdGlvbiA9IG1fc291cmNlLT52
aWRlb0ZyYW1lUm90YXRpb24oKTsKICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAg
aWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICBzaXplID0gbV9zb3VyY2UtPnNpemUoKTsKIAot
ICAgIGlmIChyb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCBy
b3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgaWYgKHJv
dGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHJvdGF0aW9uID09IFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNp
emUoKTsKIAogICAgIG1fY3VycmVudFNldHRpbmdzLnNldFdpZHRoKHNpemUud2lkdGgoKSk7CkBA
IC0xNzIsMTAgKzE3MiwxMCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVN0b3Bw
ZWQoKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1SZWZQdHI8TWVkaWFTYW1wbGU+IFJlYWx0
aW1lVmlkZW9Tb3VyY2U6OmFkYXB0VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSkK
K1JlZlB0cjxWaWRlb0ZyYW1lPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUo
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKLSAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Np
b24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSB2aWRlb0ZyYW1l
LnZpZGVvUGl4ZWxGb3JtYXQoKSkKLSAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IElt
YWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnZpZGVvUGl4ZWxGb3JtYXQo
KSwgbV9zaG91bGRVc2VJT1N1cmZhY2UpOworICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
biB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9IHZpZGVvRnJhbWUu
cGl4ZWxGb3JtYXQoKSkKKyAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnBpeGVsRm9ybWF0KCksIG1fc2hvdWxk
VXNlSU9TdXJmYWNlKTsKIAogICAgIEFTU0VSVChtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKTsKICAg
ICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUoTWVkaWFT
YW1wbGUmIHZpZGVvRnJhbWUKIH0KICNlbmRpZgogCi12b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgaWYgKG1fZnJhbWVEZWNpbWF0aW9uID4gMSAmJiArK21fZnJh
bWVEZWNpbWF0aW9uQ291bnRlciAlIG1fZnJhbWVEZWNpbWF0aW9uKQogICAgICAgICByZXR1cm47
CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYQogICAgIGF1dG8g
c2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBpZiAoIXNpemUuaXNFbXB0eSgpICYmIHNpemUgIT0g
ZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpKSkgewogICAgICAg
ICBpZiAoYXV0byBuZXdWaWRlb0ZyYW1lID0gYWRhcHRWaWRlb0ZyYW1lKHZpZGVvRnJhbWUpKSB7
Ci0gICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgq
bmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOworICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSgqbmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7Cisg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBt
ZXRhZGF0YSk7CiB9CiAKIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBSZWFsdGltZVZpZGVvU291
cmNlOjpjbG9uZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggYTcxOTQ5Nzg5ZTRlMDVhOTBhODlm
YzE0MDNiYjgwODhjZmZiZjhhOC4uNjQ2ZDU4YTIyMzdjYWM2NWM5MGVkMjY0MjgwMzEyZTc5MmZi
ZWY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOwogY2xhc3MgUmVhbHRpbWVWaWRlb1NvdXJjZSBmaW5hbAogICAgIDog
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpPYnNlcnZlcgotICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2Ft
cGxlT2JzZXJ2ZXIgeworICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZVZpZGVvU291cmNl
PiBjcmVhdGUoUmVmPFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlPiYmIHNvdXJjZSwgYm9vbCBz
aG91bGRVc2VJT1N1cmZhY2UgPSB0cnVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1l
VmlkZW9Tb3VyY2UoV1RGTW92ZShzb3VyY2UpLCBzaG91bGRVc2VJT1N1cmZhY2UpKTsgfQogCkBA
IC03MSwxMSArNzEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5h
bDsKICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBmaW5hbDsKIAotICAgIC8v
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZT4gYWRhcHRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJik7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+
IGFkYXB0VmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vVmlkZW9QcmVzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Zp
ZGVvUHJlc2V0LmgKaW5kZXggZjgwY2NlZWRkYTc2MGZlZmI3ZTdmZjM5YTBjOWNkNzdhOGIwYThm
Yy4uNmNkMjkwNzNiZjAxY2UyZjQ1Y2MyMTk1MWJiYTU2NmQ1NTc3MWUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA2ZWU5
NGEwZmE0YmY3ZDBkZDVkYzQ4OGI4MDBkMWVhMGE1M2FkZDEyLi40MDMwNGFiZTY5MDZjYjFmMzRj
NzBhZDJjNjBkNDA4ZjZiYjdiOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcApAQCAtMjkzLDM1ICsyOTMsMzUgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUoKQogICAgICAgICB1cGRhdGVGcmFtZVNpemUoKTsKICAgICB9
CiAKLSAgICBhdXRvIHNhbXBsZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCi0gICAgICAgIFt0aGlz
LCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYgc3VyZmFjZSkgLT4gUmVmUHRy
PE1lZGlhU2FtcGxlPiB7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gV1RGOjpzd2l0Y2hPbihmcmFt
ZSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiBz
dXJmYWNlKSAtPiBSZWZQdHI8VmlkZW9GcmFtZT4gewogICAgICAgICAgICAgaWYgKCFzdXJmYWNl
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4g
bV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwg
c2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZl
SW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlzLCBz
YW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPFZpZGVvRnJh
bWU+IHsKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVNZWRpYVNhbXBsZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBz
aXplKCkpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0
ZVZpZGVvRnJhbWUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6
ZSgpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4mIHNhbXBsZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAg
ICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiBzYW1w
bGUpIC0+IFJlZlB0cjxWaWRlb0ZyYW1lPiB7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1h
Z2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHNhbXBsZS5nZXQoKSwgc2FtcGxl
VGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9u
LT5jcmVhdGVWaWRlb0ZyYW1lKHNhbXBsZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAg
ICAgICAgfQogICAgICk7CiAKLSAgICBpZiAoIXNhbXBsZSkgeworICAgIGlmICghdmlkZW9GcmFt
ZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGE7CiAgICAgbWV0YWRhdGEu
Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwot
ICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCksIG1ldGFkYXRhKTsKKyAgICB2
aWRlb0ZyYW1lQXZhaWxhYmxlKCp2aWRlb0ZyYW1lLmdldCgpLCBtZXRhZGF0YSk7CiB9CiAKIHZv
aWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwdHVyZXJDb25maWd1cmF0aW9uQ2hhbmdl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2Nv
YS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXggYjllYjA4
NWQ0NzQ5MzRjNWUwNTFhNzVhYjFkZDAzY2M1NGU3Zjg1Mi4uNDQ4NjJkNWM5NjRmY2VkOTYzMmU2
NGI2MTM1NzlkM2U3MDQ5OGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgog
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM2LDEwICszNywx
MCBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotCi10eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IF9f
SU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7Cit1c2luZyBDR0ltYWdlUmVmID0gQ0dJbWFnZSo7Cit1
c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwordXNpbmcgSU9TdXJm
YWNlUmVmID0gc3RydWN0IF9fSU9TdXJmYWNlKjsKK3VzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0g
c3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBN
ZWRpYVRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291
cmNlLmNwcAppbmRleCAyNDNjYWFhNWM0Y2Y3MWZlYTg1ZDkyOTI4OGM2OTA3NTRiYWY5NDA0Li44
NDczNzA0MWUyN2JjYTk0ZWViZDg0OWNiMjYxZjg1ZjZmZDZlNTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY0Vuc3VyZVN0cmVhbUNvbGxlY3Rp
b25Qb3N0ZWQoV2ViS2l0TWVkaWFTdHJlYW1TcgogCiBjbGFzcyBJbnRlcm5hbFNvdXJjZSBmaW5h
bCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIsCiAgICAgcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIsCi0gICAgcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgIHB1YmxpYyBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEludGVybmFsU291cmNlKEdzdEVsZW1lbnQqIHBhcmVu
dCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBjb25zdCBTdHJpbmcmIHBhZE5hbWUp
CkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRp
bygpKQogICAgICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5hZGRBdWRpb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAg
ICAgbV90cmFjay5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAg
ICAgICAgIG1fdHJhY2suc291cmNlKCkuYWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAg
ICAgICAgbV9pc09ic2VydmluZyA9IHRydWU7CiAgICAgfQogCkBAIC0xOTYsNyArMTk2LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRpbygpKQogICAgICAgICAgICAgbV90
cmFjay5zb3VyY2UoKS5yZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAg
ZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAgICAgbV90cmFjay5zb3VyY2Uo
KS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fdHJhY2su
c291cmNlKCkucmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV90cmFj
ay5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgfQogCkBAIC0yNzIsMTMgKzI3MiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW1fcGFyZW50IHx8ICFt
X2lzT2JzZXJ2aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gc2FtcGxl
U2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgIEludFNpemUgY2FwdHVy
ZVNpemUoc2FtcGxlU2l6ZS53aWR0aCgpLCBzYW1wbGVTaXplLmhlaWdodCgpKTsKKyAgICAgICAg
YXV0byB2aWRlb0ZyYW1lU2l6ZSA9IHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOworICAg
ICAgICBJbnRTaXplIGNhcHR1cmVTaXplKHZpZGVvRnJhbWVTaXplLndpZHRoKCksIHZpZGVvRnJh
bWVTaXplLmhlaWdodCgpKTsKIAogICAgICAgICBhdXRvIHNldHRpbmdzID0gbV90cmFjay5zZXR0
aW5ncygpOwogICAgICAgICBtX2NvbmZpZ3VyZWRTaXplLnNldFdpZHRoKHNldHRpbmdzLndpZHRo
KCkpOwpAQCAtMjg5LDggKzI4OSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2NvbmZpZ3Vy
ZWRTaXplLmhlaWdodCgpKQogICAgICAgICAgICAgbV9jb25maWd1cmVkU2l6ZS5zZXRIZWlnaHQo
Y2FwdHVyZVNpemUuaGVpZ2h0KCkpOwogCi0gICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHNh
bXBsZS52aWRlb1JvdGF0aW9uKCk7Ci0gICAgICAgIGJvb2wgdmlkZW9NaXJyb3JlZCA9IHNhbXBs
ZS52aWRlb01pcnJvcmVkKCk7CisgICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHZpZGVvRnJh
bWUucm90YXRpb24oKTsKKyAgICAgICAgYm9vbCB2aWRlb01pcnJvcmVkID0gdmlkZW9GcmFtZS5p
c01pcnJvcmVkKCk7CiAgICAgICAgIGlmIChtX3ZpZGVvUm90YXRpb24gIT0gdmlkZW9Sb3RhdGlv
biB8fCBtX3ZpZGVvTWlycm9yZWQgIT0gdmlkZW9NaXJyb3JlZCkgewogICAgICAgICAgICAgbV92
aWRlb1JvdGF0aW9uID0gdmlkZW9Sb3RhdGlvbjsKICAgICAgICAgICAgIG1fdmlkZW9NaXJyb3Jl
ZCA9IHZpZGVvTWlycm9yZWQ7CkBAIC0zMDEsOCArMzAxLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHBhZC5nZXQoKSwgZ3N0X2V2ZW50X25ld190YWcoZ3N0X3Rh
Z19saXN0X25ldyhHU1RfVEFHX0lNQUdFX09SSUVOVEFUSU9OLCBvcmllbnRhdGlvbi51dGY4KCku
ZGF0YSgpLCBudWxscHRyKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogdmlkZW9GcmFt
ZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmc2FtcGxlKTsKLSAgICAgICAg
YXV0byogZ3N0U2FtcGxlID0gdmlkZW9GcmFtZS0+c2FtcGxlKCk7CisgICAgICAgIGF1dG8qIGdz
dFNhbXBsZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmdmlkZW9GcmFtZSkt
PnNhbXBsZSgpOwogICAgICAgICBpZiAoIW1fY29uZmlndXJlZFNpemUuaXNFbXB0eSgpICYmIG1f
bGFzdEtub3duU2l6ZSAhPSBtX2NvbmZpZ3VyZWRTaXplKSB7CiAgICAgICAgICAgICBtX2xhc3RL
bm93blNpemUgPSBtX2NvbmZpZ3VyZWRTaXplOwogICAgICAgICAgICAgdXBkYXRlQmxhY2tGcmFt
ZShnc3Rfc2FtcGxlX2dldF9jYXBzKGdzdFNhbXBsZSkpOwpAQCAtMzg0LDcgKzM4Myw3IEBAIHBy
aXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbmZpZ3VyZWRTaXplOwogICAgIEludFNpemUgbV9sYXN0
S25vd25TaXplOwogICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBtX2JsYWNrRnJhbWU7Ci0gICAgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBtX3ZpZGVvUm90
YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wgbV92aWRlb01p
cnJvcmVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDQwMWU0YTE0OTdhYzIxYTA5
OTFjNmU1OTkxNTQzZDViOTVhMWYyYWUuLjUwYjM5ZTUxMWMwNDliNmVjNDdmNjJmZGQ0ZjdiNjdh
MmJhMTJkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNjksMjQgKzY5LDI0IEBAIE1vY2tEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUdTdHJlYW1lcjo6TW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyKFJl
YWx0aW1lTWVkCiAgICAgLCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCiAgICAgLCBtX2Rldmlj
ZVR5cGUoZGV2aWNlVHlwZSkKIHsKLSAgICBtX3NvdXJjZS0+YWRkVmlkZW9TYW1wbGVPYnNlcnZl
cigqdGhpcyk7CisgICAgbV9zb3VyY2UtPmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9
CiAKIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6fk1vY2tEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUdTdHJlYW1lcigpCiB7Ci0gICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRo
aXMpOwogfQogCiB2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6c3RvcFBy
b2R1Y2luZ0RhdGEoKQogewotICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsK
ICAgICBtX3NvdXJjZS0+c3RvcCgpOwogfQogCiB2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJj
ZUdTdHJlYW1lcjo6cmVxdWVzdFRvRW5kKE9ic2VydmVyJiBjYWxsaW5nT2JzZXJ2ZXIpCiB7CiAg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFRvRW5kKGNhbGxpbmdPYnNlcnZlcik7Ci0g
ICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5yZXF1
ZXN0VG9FbmQoY2FsbGluZ09ic2VydmVyKTsKIH0KIApAQCAtOTYsOSArOTYsOSBAQCB2b2lkIE1v
Y2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6c2V0TXV0ZWQoYm9vbCBpc011dGVkKQog
ICAgIG1fc291cmNlLT5zZXRNdXRlZChpc011dGVkKTsKIH0KIAotdm9pZCBNb2NrRGlzcGxheUNh
cHR1cmVTb3VyY2VHU3RyZWFtZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBz
YW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCit2b2lkIE1vY2tEaXNwbGF5
Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2
aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQogewotICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZSwgbWV0YWRhdGEpOwor
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZSwg
bWV0YWRhdGEpOwogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBN
b2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OmNhcGFiaWxpdGllcygpCkBAIC0xNjYs
NyArMTY2LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6dXBkYXRl
U2FtcGxlQnVmZmVyKCkKICAgICBtZXRhZGF0YS0+Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwogICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vj
b25kcygpKTsKICAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVh
dGVGcm9tUGl4ZWxCdWZmZXIoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBwcmVzZW50YXRpb25UaW1l
LCBzaXplKCksIGZyYW1lUmF0ZSgpLCBzYW1wbGVSb3RhdGlvbigpLCBmYWxzZSwgV1RGTW92ZSht
ZXRhZGF0YSkpOwotICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyh2aWRlb0ZyYW1l
LmdldCgpLCB7IH0pOworICAgIGRpc3BhdGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKHZpZGVvRnJh
bWUuZ2V0KCksIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmgKaW5kZXgg
MzE2MTdlMzhhNjM1ZGE5ZDRhZGQ2NDRlYTA4NjY3YWViZmI5NjZmYi4uMDFjM2I1ODEyNjI3MjYy
YzBmZTMzYzc2OGVmY2M3YWY5Mzk0MTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGNhblJlc2l6ZVZpZGVvRnJhbWVzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogfTsKIAotY2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVy
IGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworY2xhc3MgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0
cmVhbWVyIGZpbmFsIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UsIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENhcHR1cmVT
b3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBDYXB0dXJlRGV2aWNlJiwgU3RyaW5nJiYsIGNvbnN0
IE1lZGlhQ29uc3RyYWludHMqKTsKIApAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRNdXRlZChib29sIGlzTXV0ZWQpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6Ci0gICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgotICAgIHZvaWQgdmlkZW9TYW1w
bGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsK
KyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIKKyAgICB2b2lk
IHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEp
IGZpbmFsOwogCiBwcml2YXRlOgogICAgIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1l
cihSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VH
U3RyZWFtZXI+JiYsIFN0cmluZyYmLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggOGFjYTA0MzlmNDliY2MwNjI5MjQ1YWY2YjdhOWU4NTI5MWY5NWYx
Yy4uNTc3MzI3NDZjNmJhMGJlMjU0MDBhZGYxMDM0YjUwZGRlNTFkZWQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJl
YW1lci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUdTdHJlYW1lcjo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTQogdm9p
ZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OmRpc3BhdGNoU2FtcGxlKEdS
ZWZQdHI8R3N0U2FtcGxlPiYmIGdzdFNhbXBsZSkKIHsKICAgICBhdXRvKiBidWZmZXIgPSBnc3Rf
c2FtcGxlX2dldF9idWZmZXIoZ3N0U2FtcGxlLmdldCgpKTsKLSAgICB2aWRlb1NhbXBsZUF2YWls
YWJsZShWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2FtcGxlKGdzdFNhbXBsZSwg
ZnJvbUdzdENsb2NrVGltZShHU1RfQlVGRkVSX1BUUyhidWZmZXIpKSksIHsgfSk7CisgICAgdmlk
ZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2FtcGxl
KGdzdFNhbXBsZSwgZnJvbUdzdENsb2NrVGltZShHU1RfQlVGRkVSX1BUUyhidWZmZXIpKSksIHsg
fSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVT
b3VyY2UubW0KaW5kZXggMzViOTcwZDYwOGUzOGUzNTU2N2M5MzMzNTk3NmZlOGJjNWZhNWYxMy4u
NTNiZTVkZGQwMTgzNmZkOWJjM2M5ZWQ0YjU4MjEwZmExNDQ2YWRjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxh
eUtpdENhcHR1cmVTb3VyY2UubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIFJlcGxheUtpdENh
cHR1cmVTb3VyY2U6OnN0YXJ0KCkKICAgICB9KTsKIAogICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGlk
ZW50aWZpZXJdKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKLSAgICAgICAgLy8gRklYTUU6
IEl0IHNob3VsZCBiZSBzYWZlIHRvIGNhbGwgYHZpZGVvU2FtcGxlQXZhaWxhYmxlYCBmcm9tIGFu
eSB0aHJlYWQuIFRlc3QgdGhpcyBhbmQgZ2V0IHJpZCBvZiB0aGlzIG1haW4gdGhyZWFkIGhvcC4K
KyAgICAgICAgLy8gRklYTUU6IEl0IHNob3VsZCBiZSBzYWZlIHRvIGNhbGwgYHZpZGVvRnJhbWVB
dmFpbGFibGVgIGZyb20gYW55IHRocmVhZC4gVGVzdCB0aGlzIGFuZCBnZXQgcmlkIG9mIHRoaXMg
bWFpbiB0aHJlYWQgaG9wLgogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHdlYWtUaGlzLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGlkZW50aWZpZXJdKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFlcnJvcikKICAgICAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAKaW5kZXgg
ZWY4NzAwMjBjOWI5NjI1NTc3MjlkZjdjMWU0YzU4NmU1ZmEzN2Y3OC4uYTJmMTBjNDRmOGRhZDY5
OGE1YjVmZDllNjk3ZTFjMzQzMGQzNmIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1l
TGliV2ViUlRDLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IFZpZGVvRnJhbWVMaWJXZWJSVEM6OmNyZWF0ZShN
ZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9u
IHJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYm
IGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQorUmVmPFZp
ZGVvRnJhbWVMaWJXZWJSVEM+IFZpZGVvRnJhbWVMaWJXZWJSVEM6OmNyZWF0ZShNZWRpYVRpbWUg
cHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZl
cnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25DYWxsYmFjaykKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBWaWRlb0ZyYW1lTGliV2ViUlRDKHByZXNlbnRhdGlvblRpbWUsIGlzTWlycm9yZWQs
IHJvdGF0aW9uLCBXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUoY29udmVyc2lvbkNhbGxiYWNrKSkp
OwogfQogCi1WaWRlb0ZyYW1lTGliV2ViUlRDOjpWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGlt
ZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRp
b24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVy
LCBDb252ZXJzaW9uQ2FsbGJhY2smJiBjb252ZXJzaW9uQ2FsbGJhY2spCitWaWRlb0ZyYW1lTGli
V2ViUlRDOjpWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBi
b29sIGlzTWlycm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNrJiYgY29u
dmVyc2lvbkNhbGxiYWNrKQogICAgIDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBpc01p
cnJvcmVkLCByb3RhdGlvbikKICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICAs
IG1fc2l6ZShtX2J1ZmZlci0+d2lkdGgoKSwgIG1fYnVmZmVyLT5oZWlnaHQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0Zy
YW1lTGliV2ViUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5oCmluZGV4IDNhNjYzOTA3YTQ2YjhmNzkzZDc1MDg4
ZDg4YmM0OTY1OWMzNjJlNDQuLjRjOWU1YTZjYzUyM2ZmMDg3ZjFmMDYwYjBhZmY1MTRlNTNhYWM1
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaApAQCAtNDIsMTYgKzQy
LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFZpZGVvRnJhbWVMaWJXZWJSVEMgZmlu
YWwgOiBwdWJsaWMgVmlkZW9GcmFtZSB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQ29udmVyc2lvbkNh
bGxiYWNrID0gRnVuY3Rpb248UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+KHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlciYpPjsKLSAgICBzdGF0aWMgUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IGNy
ZWF0ZShNZWRpYVRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNr
JiYpOworICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUxpYldlYlJUQz4gY3JlYXRlKE1lZGlhVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
VmlkZW9GcmFtZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOwogCiAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gYnVmZmVyKCkgeyByZXR1cm4g
bV9idWZmZXI7IH0KIAogcHJpdmF0ZToKLSAgICBWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJik7CisgICAgVmlk
ZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24sIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYsIENvbnZlcnNpb25D
YWxsYmFjayYmKTsKIAogICAgIC8vIFZpZGVvRnJhbWUKICAgICBGbG9hdFNpemUgcHJlc2VudGF0
aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHVpbnQzMl90IHZp
ZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvUGl4ZWxGb3JtYXQ7
IH0KKyAgICB1aW50MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdmlk
ZW9QaXhlbEZvcm1hdDsgfQogICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25z
dCBmaW5hbDsKIAogICAgIGNvbnN0IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI+IG1fYnVmZmVyOwpAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlZpZGVvRnJhbWVMaWJXZWJSVEMpCiAgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZpZGVvRnJhbWUp
IHsgcmV0dXJuIHZpZGVvRnJhbWUuaXNMaWJXZWJSVEMoKTsgfQotICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsgcmV0dXJuIGlz
PFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSAmJiBpczxXZWJDb3JlOjpWaWRlb0Zy
YW1lTGliV2ViUlRDPihkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkp
OyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkgJiYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRD
LmNwcAppbmRleCA3ZDk1MGY2NzgwMDY1YjJlOWU1NzZkNDZjNTU2YTEzYTc1M2M1MGU5Li5jZjAy
ZTljMzYxNjYxYTE4YmRmYjI5ZTEwZTc4ZDQyYjhkYWM0OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCkBAIC02MSwxMSArNjEsMTEgQEAgdm9pZCBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEM6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0Zy
YW1lJiBmcmEKICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBmcm9tR3N0Q2xvY2tUaW1lKGZy
YW1lLnRpbWVzdGFtcF91cygpKTsKICAgICBpZiAoZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCkt
PnR5cGUoKSA9PSB3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI6OlR5cGU6OmtOYXRpdmUpIHsKICAg
ICAgICAgYXV0byogZnJhbWVidWZmZXIgPSBzdGF0aWNfY2FzdDxHU3RyZWFtZXJWaWRlb0ZyYW1l
TGliV2ViUlRDKj4oZnJhbWUudmlkZW9fZnJhbWVfYnVmZmVyKCkuZ2V0KCkpOwotICAgICAgICB2
aWRlb1NhbXBsZUF2YWlsYWJsZShWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2Ft
cGxlKGZyYW1lYnVmZmVyLT5nZXRTYW1wbGUoKSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nh
c3Q8TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24+KGZyYW1lLnJvdGF0aW9uKCkpKSwgeyB9KTsK
KyAgICAgICAgdmlkZW9GcmFtZWVBdmFpbGFibGUoVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRl
V3JhcHBlZFNhbXBsZShmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlKCksIHByZXNlbnRhdGlvblRpbWUs
IHN0YXRpY19jYXN0PFZpZGVvRnJhbWU6OlJvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSksIHsg
fSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBnc3RTYW1wbGUgPSBjb252ZXJ0TGliV2Vi
UlRDVmlkZW9GcmFtZVRvR1N0cmVhbWVyU2FtcGxlKGZyYW1lKTsKICAgICAgICAgYXV0byBtZXRh
ZGF0YSA9IHN0ZDo6bWFrZV9vcHRpb25hbChtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKGZyYW1lKSk7
Ci0gICAgICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0
ZShXVEZNb3ZlKGdzdFNhbXBsZSksIHsgfSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nhc3Q8
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24+KGZyYW1lLnJvdGF0aW9uKCkpLCBmYWxzZSwgV1RG
TW92ZShtZXRhZGF0YSkpLCB7IH0pOworICAgICAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVv
RnJhbWVHU3RyZWFtZXI6OmNyZWF0ZShXVEZNb3ZlKGdzdFNhbXBsZSksIHsgfSwgcHJlc2VudGF0
aW9uVGltZSwgc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZTo6Um90YXRpb24+KGZyYW1lLnJvdGF0aW9u
KCkpLCBmYWxzZSwgV1RGTW92ZShtZXRhZGF0YSkpLCB7IH0pOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJl
YW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCmluZGV4IGM2ZGNhZDc1MjVlZGJlNjhkMTEw
YWUwMjEyNTcxY2IzNmI0Zjg2ZmIuLjBkMTU3MzAwNzA1MTI2MWZmNzQ1MzkzODViYmY3ODM4MzYx
YTkzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKQEAgLTUwLDE5
ICs1MCwxOSBAQCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEM6OlJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQyhSZWY8TQogewogfQogCi12b2lkIFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQzo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFT
YW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlTGliV2ViUlRDOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUm
IHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCiB7Ci0gICAgc3dpdGNoIChzYW1w
bGUudmlkZW9Sb3RhdGlvbigpKSB7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZToKKyAgICBzd2l0Y2ggKHZpZGVvRnJhbWUucm90YXRpb24oKSkgeworICAgIGNhc2Ug
VmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0g
d2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgIGNhc2UgVmlkZW9GcmFtZTo6
Um90YXRpb246OlVwc2lkZURvd246CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRj
OjprVmlkZW9Sb3RhdGlvbl8xODA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246
OlJpZ2h0OgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRp
b25fOTA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246OkxlZnQ6CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDoKICAgICAgICAg
bV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJX
ZWJSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9n
c3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmgKaW5kZXggN2Ix
ZGVkYzE4OGUzMzVhNWE4ZDA2MmZlMmYwM2ExZGFmMTUzNGM5ZS4uNzAyNDgxNGFhYWY2YjdiZjFm
YjRmZjE5YmJhODFmZjMzZmQ2YjVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VMaWJXZWJSVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJU
Qy5oCkBAIC00MSw4ICs0MSw4IEBAIHByaXZhdGU6CiAKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBjcmVhdGVCbGFja0ZyYW1lKHNpemVfdCwgc2l6ZV90
KSBmaW5hbDsKIAotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2
ZXIgQVBJCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvRnJhbWVPYnNlcnZlciBBUEkKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9G
cmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCAyNGUxMWFlMTNmYmJl
N2MxYzg2ZmZhNmE4ZjcwYjI0ZGY2MWZlNmExLi41ODBjY2JiZjU1NDQxMTJjMzZiM2YxMzg2ZDM1
ZjlmZmJlYWU5NWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtOTEsNyArOTEs
NyBAQCBwcml2YXRlOgogICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYTsg
fQogICAgIGJvb2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5hbDsKIAotICAgIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIHNhbXBsZVJvdGF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9z
YW1wbGVSb3RhdGlvbjsgfQorICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHZpZGVvRnJhbWVSb3Rh
dGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdmlkZW9GcmFtZVJvdGF0aW9uOyB9CiAgICAg
dm9pZCBzZXRGcmFtZVJhdGVXaXRoUHJlc2V0KGRvdWJsZSwgUmVmUHRyPFZpZGVvUHJlc2V0Pikg
ZmluYWw7CiAgICAgYm9vbCBwcmVmZXJzUHJlc2V0KFZpZGVvUHJlc2V0JikgZmluYWw7CiAgICAg
dm9pZCBnZW5lcmF0ZVByZXNldHMoKSBmaW5hbDsKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgc2V0U2Vzc2lvblNpemVBbmRGcmFtZVJhdGUoKTsKICAgICBib29sIHNldFBy
ZXNldChOU1N0cmluZyopOwotICAgIHZvaWQgY29tcHV0ZVNhbXBsZVJvdGF0aW9uKCk7CisgICAg
dm9pZCBjb21wdXRlVmlkZW9GcmFtZVJvdGF0aW9uKCk7CiAgICAgQVZGcmFtZVJhdGVSYW5nZSog
ZnJhbWVEdXJhdGlvbkZvckZyYW1lUmF0ZShkb3VibGUpOwogCiAgICAgLy8gT3JpZW50YXRpb25O
b3RpZmllcjo6T2JzZXJ2ZXIgQVBJCkBAIC0xMTgsMTMgKzExOCwxMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlVmVyaWZ5Q2FwdHVyaW5nVGltZXIoKTsKICAgICB2b2lkIHZlcmlmeUlzQ2Fw
dHVyaW5nKCk7CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1fYnVmZmVyOworICAgIFJlZlB0
cjxWaWRlb0ZyYW1lPiBtX2J1ZmZlcjsKICAgICBSZXRhaW5QdHI8QVZDYXB0dXJlVmlkZW9EYXRh
T3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRyYW5zZmVy
U2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwogCiAgICAgaW50IG1fc2Vuc29yT3Jp
ZW50YXRpb24geyAwIH07CiAgICAgaW50IG1fZGV2aWNlT3JpZW50YXRpb24geyAwIH07Ci0gICAg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV9zYW1wbGVSb3RhdGlvbiB7IE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gbV92aWRl
b0ZyYW1lUm90YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogCiAgICAgc3Rk
OjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M+IG1fY3VycmVudFNldHRpbmdz
OwogICAgIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gbV9j
YXBhYmlsaXRpZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMzc4YzlhZjk3
ZDc1MjVjZGZjMjg1NWZlMTg0MGE5Njg2MWFkYzE3ZS4uMmJjNjJmZTg1NDU3YzUzNjNiNGIwNThi
ZmNjY2FkNzEzMzA2OTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjUx
LDcgKzI1MSw3IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OnNldHRpbmdzKCkKICAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUoZnJhbWVS
YXRlKCkpOwogCiAgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGlmIChtX3NhbXBs
ZVJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IG1fc2FtcGxl
Um90YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIGlmICht
X3ZpZGVvRnJhbWVSb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCB8fCBtX3Zp
ZGVvRnJhbWVSb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAg
IHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgCiAgICAgc2V0dGluZ3Muc2V0V2lk
dGgoc2l6ZS53aWR0aCgpKTsKQEAgLTQ5Niw3ICs0OTYsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCkKICAgICBzZXRTZXNzaW9uU2l6ZUFuZEZyYW1l
UmF0ZSgpOwogCiAgICAgbV9zZW5zb3JPcmllbnRhdGlvbiA9IHNlbnNvck9yaWVudGF0aW9uRnJv
bVZpZGVvT3V0cHV0KG1fdmlkZW9PdXRwdXQuZ2V0KCkpOwotICAgIGNvbXB1dGVTYW1wbGVSb3Rh
dGlvbigpOworICAgIGNvbXB1dGVWaWRlb0ZyYW1lUm90YXRpb24oKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtNTIxLDM4ICs1MjEsMzggQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
b3JpZW50YXRpb25DaGFuZ2VkKGludCBvcmllbnRhdGlvbikKIHsKICAgICBBU1NFUlQob3JpZW50
YXRpb24gPT0gMCB8fCBvcmllbnRhdGlvbiA9PSA5MCB8fCBvcmllbnRhdGlvbiA9PSAtOTAgfHwg
b3JpZW50YXRpb24gPT0gMTgwKTsKICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gb3JpZW50YXRp
b247Ci0gICAgY29tcHV0ZVNhbXBsZVJvdGF0aW9uKCk7Ci0gICAgQUxXQVlTX0xPR19JRihsb2dn
ZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgInJvdGF0aW9uID0gIiwgbV9zYW1wbGVSb3RhdGlvbiwg
Iiwgb3JpZW50YXRpb24gPSAiLCBtX2RldmljZU9yaWVudGF0aW9uKTsKKyAgICBjb21wdXRlVmlk
ZW9GcmFtZVJvdGF0aW9uKCk7CisgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURF
TlRJRklFUiwgInJvdGF0aW9uID0gIiwgbV92aWRlb0ZyYW1lUm90YXRpb24sICIsIG9yaWVudGF0
aW9uID0gIiwgbV9kZXZpY2VPcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OmNvbXB1dGVTYW1wbGVSb3RhdGlvbigpCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNl
Ojpjb21wdXRlVmlkZW9GcmFtZVJvdGF0aW9uKCkKIHsKICAgICBib29sIGZyb250Q2FtZXJhID0g
W2RldmljZSgpIHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVEZXZpY2VQb3NpdGlvbkZyb250OwotICAg
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHNhbXBsZVJvdGF0aW9uOworICAgIFZpZGVvRnJh
bWU6OlJvdGF0aW9uIHZpZGVvRnJhbWVSb3RhdGlvbjsKICAgICBzd2l0Y2ggKG1fc2Vuc29yT3Jp
ZW50YXRpb24gLSBtX2RldmljZU9yaWVudGF0aW9uKSB7CiAgICAgY2FzZSAwOgotICAgICAgICBz
YW1wbGVSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgICAg
ICB2aWRlb0ZyYW1lUm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSAxODA6CiAgICAgY2FzZSAtMTgwOgotICAgICAgICBzYW1wbGVS
b3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOworICAgICAg
ICB2aWRlb0ZyYW1lUm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA5MDoKICAgICBjYXNlIC0yNzA6Ci0gICAgICAgIHNh
bXBsZVJvdGF0aW9uID0gZnJvbnRDYW1lcmEgPyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdCA6IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDsKKyAgICAgICAgdmlkZW9G
cmFtZVJvdGF0aW9uID0gZnJvbnRDYW1lcmEgPyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCA6
IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAt
OTA6CiAgICAgY2FzZSAyNzA6Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9uID0gZnJvbnRDYW1lcmEg
PyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQgOiBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbjo6TGVmdDsKKyAgICAgICAgdmlkZW9GcmFtZVJvdGF0aW9uID0gZnJvbnRDYW1lcmEg
PyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQgOiBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVm
dDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246Ok5vbmU7CisgICAgICAgIHZpZGVvRnJhbWVSb3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpOb25lOwogICAgIH0KLSAgICBpZiAoc2FtcGxlUm90YXRpb24gPT0gbV9zYW1wbGVSb3Rh
dGlvbikKKyAgICBpZiAodmlkZW9GcmFtZVJvdGF0aW9uID09IG1fdmlkZW9GcmFtZVJvdGF0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3NhbXBsZVJvdGF0aW9uID0gc2FtcGxlUm90YXRp
b247CisgICAgbV92aWRlb0ZyYW1lUm90YXRpb24gPSB2aWRlb0ZyYW1lUm90YXRpb247CiAgICAg
bm90aWZ5U2V0dGluZ3NEaWRDaGFuZ2VPYnNlcnZlcnMoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6Okhl
aWdodCB9KTsKIH0KIApAQCAtNTYxLDEyICs1NjEsMTIgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6Y2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0aW9uKEFW
Q2EKICAgICBpZiAoKyttX2ZyYW1lc0NvdW50IDw9IGZyYW1lc1RvRHJvcFdoZW5TdGFydGluZykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZUNWOjpj
cmVhdGUoc2FtcGxlQnVmZmVyLCBbY2FwdHVyZUNvbm5lY3Rpb24gaXNWaWRlb01pcnJvcmVkXSwg
bV9zYW1wbGVSb3RhdGlvbik7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZUNWOjpj
cmVhdGUoc2FtcGxlQnVmZmVyLCBbY2FwdHVyZUNvbm5lY3Rpb24gaXNWaWRlb01pcnJvcmVkXSwg
bV92aWRlb0ZyYW1lUm90YXRpb24pOwogICAgIG1fYnVmZmVyID0gJnZpZGVvRnJhbWUuZ2V0KCk7
CiAgICAgc2V0SW50cmluc2ljU2l6ZShleHBhbmRlZEludFNpemUodmlkZW9GcmFtZS0+cHJlc2Vu
dGF0aW9uU2l6ZSgpKSk7CiAgICAgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YTsKICAg
ICBtZXRhZGF0YS5jYXB0dXJlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5j
ZUVwb2NoKCk7Ci0gICAgZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKFdURk1vdmUodmlk
ZW9GcmFtZSksIG1ldGFkYXRhKTsKKyAgICBkaXNwYXRjaFZpZGVvRnJhbWVUb09ic2VydmVycyhX
VEZNb3ZlKHZpZGVvRnJhbWUpLCBtZXRhZGF0YSk7CiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggMDM1MzI1OGFiNjFmNDJk
YTQyM2MxNjU3NTQxYzA4NzAzNTNiZGRkNC4uYzA1NWQzYzYzM2RkMGVmMDYxNGFlZjNjYmNkMDc5
MTljNDc5MWQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpA
QCAtOTMsMTYgKzkzLDE2IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0
ZVNhbXBsZUJ1ZmZlcigpCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZUJ1ZmZlci0+
Y29weUltYWdlKCktPm5hdGl2ZUltYWdlKCkpCiAgICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogCi0gICAgYXV0byBzYW1wbGVUaW1lID0gTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNvbmRzKCkp
OwotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRl
TWVkaWFTYW1wbGUocGxhdGZvcm1JbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1w
bGVSb3RhdGlvbigpKTsKLSAgICBpZiAoIXNhbXBsZUJ1ZmZlcikKKyAgICBhdXRvIHByZXNlbnRh
dGlvblRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAx
MDBfbXMpLnNlY29uZHMoKSk7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gbV9pbWFnZVRyYW5zZmVy
U2Vzc2lvbi0+Y3JlYXRlVmlkZW9GcmFtZShwbGF0Zm9ybUltYWdlLmdldCgpLCBwcmVzZW50YXRp
b25UaW1lLCBzaXplKCksIHZpZGVvRnJhbWVSb3RhdGlvbigpKTsKKyAgICBpZiAoIXZpZGVvRnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNhbXBsZUJ1ZmZlciA9IFdU
Rk1vdmUoc2FtcGxlQnVmZmVyKSwgY2FwdHVyZVRpbWVdKCkgbXV0YWJsZSB7CisgICAgbV93b3Jr
UXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdmlk
ZW9GcmFtZSA9IFdURk1vdmUodmlkZW9GcmFtZSksIGNhcHR1cmVUaW1lXSgpIG11dGFibGUgewog
ICAgICAgICBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgICAgICBtZXRhZGF0
YS5jYXB0dXJlVGltZSA9IGNhcHR1cmVUaW1lOwotICAgICAgICBkaXNwYXRjaE1lZGlhU2FtcGxl
VG9PYnNlcnZlcnMoKnNhbXBsZUJ1ZmZlciwgbWV0YWRhdGEpOworICAgICAgICBkaXNwYXRjaFZp
ZGVvRnJhbWVUb09ic2VydmVycygqdmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCmluZGV4
IDkyYzJmZWM2ODJkZDZhZTc2NGZiYjI5MDRjYWM4ZmVmYTQ5NjczNGYuLjFlOTEzM2U5ZjVjOTRm
NDIyZTQ4MjI2YzVmYjNiY2YyNjViZTk4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oCkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAg
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6VmlkZW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwogICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlckZyb21WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYpOwogICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIHBpeGVsQnVmZmVyUG9vbChzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHdlYnJ0Yzo6QnVmZmVyVHlwZSk7Ci0gICAgUmVmUHRy
PFZpZGVvRnJhbWU+IHRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7Ci0gICAgUmVmPFZpZGVvRnJhbWU+IGNyZWF0ZVZpZGVv
U2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24sIGludDY0X3QpOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiB0b1ZpZGVvRnJh
bWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZTo6Um90YXRpb24pOworICAg
IFJlZjxWaWRlb0ZyYW1lPiBjcmVhdGVWaWRlb1NhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4
ZWxCdWZmZXJSZWYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uLCBpbnQ2NF90KTsKIAogICAgIC8vIHJ0
Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCiAgICAgdm9pZCBPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6Vmlk
ZW9GcmFtZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLm1tCmluZGV4IGVlMjgyM2MxZWE3Mzg1ZDlhMTg0MDE5NmM3ZGNiYjZiMzEwNDFi
MDUuLmUwMmY4MzAzOGE1YzFhYmFlMjgxMzBmYWQ0OTQxNTQ2ZDNiZmMyMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTkxLDEyICs5
MSwxMiBAQCBDVlBpeGVsQnVmZmVyUG9vbFJlZiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VD
b2NvYTo6cGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aQogICAgIHJldHVybiBtX3BpeGVsQnVmZmVy
UG9vbC5nZXQoKTsKIH0KIAotUmVmPFZpZGVvRnJhbWU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hOjpjcmVhdGVWaWRlb1NhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBp
bnQ2NF90IHRpbWVTdGFtcCkKK1JlZjxWaWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYTo6Y3JlYXRlVmlkZW9TYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgaW50NjRf
dCB0aW1lU3RhbXApCiB7CiAgICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKE1lZGlhVGlt
ZSh0aW1lU3RhbXAsIDEwMDAwMDApLCBmYWxzZSwgcm90YXRpb24sIHBpeGVsQnVmZmVyKTsKIH0K
IAotUmVmUHRyPFZpZGVvRnJhbWU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjp0
b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwgTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb24gcm90YXRpb24pCitSZWZQdHI8VmlkZW9GcmFtZT4gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJh
bWUmIGZyYW1lLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBpZiAobXV0
ZWQoKSkgewogICAgICAgICBpZiAoIW1fYmxhY2tGcmFtZSB8fCBtX2JsYWNrRnJhbWVXaWR0aCAh
PSBmcmFtZS53aWR0aCgpIHx8IG1fYmxhY2tGcmFtZUhlaWdodCAhPSBmcmFtZS5oZWlnaHQoKSkg
ewpAQCAtMTQ0LDIwICsxNDQsMjAgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VD
b2NvYTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIHdlYnJ0Y1YKICAgICB1bnNp
Z25lZCB3aWR0aCA9IHdlYnJ0Y1ZpZGVvRnJhbWUud2lkdGgoKTsKICAgICB1bnNpZ25lZCBoZWln
aHQgPSB3ZWJydGNWaWRlb0ZyYW1lLmhlaWdodCgpOwogCi0gICAgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gcm90YXRpb247CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb247CiAg
ICAgc3dpdGNoICh3ZWJydGNWaWRlb0ZyYW1lLnJvdGF0aW9uKCkpIHsKICAgICBjYXNlIHdlYnJ0
Yzo6a1ZpZGVvUm90YXRpb25fMDoKLSAgICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAgICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6Tm9uZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9u
XzE4MDoKLSAgICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBz
aWRlRG93bjsKKyAgICAgICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRl
RG93bjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkw
OgotICAgICAgICByb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDsK
KyAgICAgICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ7CiAgICAgICAg
IHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSB3ZWJy
dGM6OmtWaWRlb1JvdGF0aW9uXzI3MDoKLSAgICAgICAgcm90YXRpb24gPSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAgICAgICAgcm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3Rh
dGlvbjo6TGVmdDsKICAgICAgICAgc3RkOjpzd2FwKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIHdlYnJ0Y1YK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0SW50cmluc2ljU2l6ZShJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpKTsKLSAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFG
cm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lKSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJs
ZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGFGcm9tVmlkZW9GcmFtZSh3ZWJydGNWaWRlb0ZyYW1lKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2Nv
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCmluZGV4IDNhM2ZjYmY5NmVmODIwMWY5MGJjZTg3
ZTVlMmRlYmMxZGQxY2Q2MDYuLmJjZWY2YTE1MDYxZDAyYTYyNTg2ODMzNTI1ZDJmOGUyYTliYjQ3
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
LmNwcApAQCAtNjMsNDYgKzYzLDQ2IEBAIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYShSZWY8TWVkaWFTdHJlCiB7CiB9CiAK
LXZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVv
RnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCiB7CiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKCEoKyttX251bWJlck9mRnJhbWVzICUgNjApKQogICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJmcmFtZSAiLCBtX251bWJlck9mRnJhbWVz
KTsKICNlbmRpZgogCi0gICAgc3dpdGNoIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSB7Ci0gICAg
Y2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICBzd2l0Y2ggKHZpZGVv
RnJhbWUucm90YXRpb24oKSkgeworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6
CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNp
ZGVEb3duOgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd246CiAgICAg
ICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0Ogor
ICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAgICBtX2N1cnJlbnRS
b3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6CisgICAgY2FzZSBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6TGVmdDoKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6
OmtWaWRlb1JvdGF0aW9uXzI3MDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgYm9vbCBz
aG91bGRBcHBseVJvdGF0aW9uID0gbV9zaG91bGRBcHBseVJvdGF0aW9uICYmIG1fY3VycmVudFJv
dGF0aW9uICE9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKLSAgICBpZiAoIXNob3VsZEFwcGx5
Um90YXRpb24gJiYgaXM8VmlkZW9GcmFtZT4oc2FtcGxlKSkgewotICAgICAgICBpZiAoZG93bmNh
c3Q8VmlkZW9GcmFtZT4oc2FtcGxlKS5pc1JlbW90ZVByb3h5KCkpIHsKLSAgICAgICAgICAgIFJl
ZiB2aWRlb0ZyYW1lIHsgZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKSB9OwotICAgICAgICAg
ICAgYXV0byBzaXplID0gc2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKLSAgICAgICAgICAgIHNl
bmRGcmFtZSh3ZWJydGM6OnRvV2ViUlRDVmlkZW9GcmFtZUJ1ZmZlcigmdmlkZW9GcmFtZS5sZWFr
UmVmKCksCisgICAgaWYgKCFzaG91bGRBcHBseVJvdGF0aW9uKSB7CisgICAgICAgIGlmICh2aWRl
b0ZyYW1lLmlzUmVtb3RlUHJveHkoKSkgeworICAgICAgICAgICAgUmVmIHJlbW90ZVZpZGVvRnJh
bWUgeyB2aWRlb0ZyYW1lIH07CisgICAgICAgICAgICBhdXRvIHNpemUgPSB2aWRlb0ZyYW1lLnBy
ZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAgICAgIHNlbmRGcmFtZSh3ZWJydGM6OnRvV2ViUlRD
VmlkZW9GcmFtZUJ1ZmZlcigmcmVtb3RlVmlkZW9GcmFtZS5sZWFrUmVmKCksCiAgICAgICAgICAg
ICAgICAgW10oYXV0byogcG9pbnRlcikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+
KHBvaW50ZXIpLT5waXhlbEJ1ZmZlcigpOyB9LAogICAgICAgICAgICAgICAgIFtdKGF1dG8qIHBv
aW50ZXIpIHsgc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZSo+KHBvaW50ZXIpLT5kZXJlZigpOyB9LAog
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nh
c3Q8aW50PihzaXplLmhlaWdodCgpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChkb3duY2FzdDxWaWRlb0ZyYW1lPihzYW1wbGUpLmlzTGliV2ViUlRDKCkp
IHsKLSAgICAgICAgICAgIHNlbmRGcmFtZShkb3duY2FzdDxWaWRlb0ZyYW1lTGliV2ViUlRDPihz
YW1wbGUpLmJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKHZpZGVvRnJhbWUuaXNMaWJXZWJSVEMoKSkg
eworICAgICAgICAgICAgc2VuZEZyYW1lKGRvd25jYXN0PFZpZGVvRnJhbWVMaWJXZWJSVEM+KHZp
ZGVvRnJhbWUpLmJ1ZmZlcigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzYW1wbGUucGl4ZWxCdWZmZXIoKTsKKyAgICBh
dXRvIHBpeGVsQnVmZmVyID0gdmlkZW9GcmFtZS5waXhlbEJ1ZmZlcigpOwogICAgIGF1dG8gcGl4
ZWxGb3JtYXRUeXBlID0gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZl
cik7CiAKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydGVkQnVmZmVyID0g
cGl4ZWxCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYS5oCmluZGV4IGZlN2RkZDEwODY2Yzc3OTU5Y2YwMjczMmM3M2ExZGVlMmJlNjQxYmQuLmJm
Y2JhZmQyYWM0NDRiMjc1ZDE2ZDlkZDYxZThiNWYzZTk3MWZhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oCkBAIC00NCw4ICs0NCw4IEBAIHBy
aXZhdGU6CiAKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVy
PiBjcmVhdGVCbGFja0ZyYW1lKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkgZmluYWw7CiAK
LSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIEFQSQotICAg
IHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhKSBmaW5hbDsKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2Jz
ZXJ2ZXIgQVBJCisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBjb252ZXJ0VG9ZVVYoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IHJvdGF0ZVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIHdlYnJ0Yzo6
VmlkZW9Sb3RhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2EubW0KaW5kZXggMzliOTk4ZDRmNTQ1OWI5OTI0MjA1NTYzYjk2ZjdkZDJiMjU0ZDgx
ZC4uZDQ3OGUxMzk3NWU2ZDdkN2U3NWQyYzE0YjRhNzMzMDM4YzFmNDdhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtMzEsNyArMzEs
NiBAQAogI2ltcG9ydCAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW1wb3J0ICJJbWFnZVJvdGF0aW9u
U2Vzc2lvblZULmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVNhbXBsZS5o
IgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgogI2ltcG9ydCAiUmVhbHRpbWVW
aWRlb1V0aWxpdGllcy5oIgogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCmluZGV4IDNjZjc0NjBjODBlM2JlMWQ1YmEzZjBjZWQ3YzE5YjI1ZGYyOWFi
ZjIuLjRmZWM0ZDkzOWJiMjkyZDY0NjQ5Zjk1ZGUyZDc3ZTk3Mjg2ODA3MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzJiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3MoKQogICAgIHNldHRpbmdzLnNl
dEZyYW1lUmF0ZShmcmFtZVJhdGUoKSk7CiAgICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwog
ICAgIGlmIChtb2NrQ2FtZXJhKCkpIHsKLSAgICAgICAgaWYgKG1fZGV2aWNlT3JpZW50YXRpb24g
PT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQgfHwgbV9kZXZpY2VPcmllbnRhdGlv
biA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgICAgIGlmIChtX2Rl
dmljZU9yaWVudGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IG1fZGV2aWNl
T3JpZW50YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0KQogICAgICAgICAgICAg
c2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKICAgICB9CiAgICAgc2V0dGluZ3Muc2V0V2lk
dGgoc2l6ZS53aWR0aCgpKTsKQEAgLTQ5NiwxNiArNDk2LDE2IEBAIHZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6Om9yaWVudGF0aW9uQ2hhbmdlZChpbnQgb3JpZW50YXRpb24pCiAgICAgYXV0
byBkZXZpY2VPcmllbnRhdGlvbiA9IG1fZGV2aWNlT3JpZW50YXRpb247CiAgICAgc3dpdGNoIChv
cmllbnRhdGlvbikgewogICAgIGNhc2UgMDoKLSAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgICAgICBtX2RldmljZU9yaWVu
dGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgOTA6Ci0gICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6UmlnaHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgLTkwOgotICAg
ICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Okxl
ZnQ7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6
TGVmdDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAxODA6Ci0gICAgICAgIG1fZGV2aWNlT3Jp
ZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsKKyAgICAg
ICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3du
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBmYzVmYzdhYTFjYjc2ZmE2ZDk3MzkwNTg2NWJmYWZlY2Vk
ZTM2YmM3Li5kOGJhYzU2MWRhNGIxM2ZjMzcyMWRjMDg0NDVjNTQyZDE0OWQwNWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5oCkBAIC02Miw3ICs2Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIFNlY29uZHMgZWxhcHNl
ZFRpbWUoKTsKICAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBvdmVycmlkZTsKLSAgICBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbiBzYW1wbGVSb3RhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGV2aWNl
T3JpZW50YXRpb247IH0KKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiB2aWRlb0ZyYW1lUm90YXRp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9uOyB9CiAgICAgdm9p
ZCBnZW5lcmF0ZVByZXNldHMoKSBvdmVycmlkZTsKIAogICAgIEludFNpemUgY2FwdHVyZVNpemUo
KSBjb25zdDsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIENvbG9yIG1fZmlsbENv
bG9yIHsgQ29sb3I6OmJsYWNrIH07CiAgICAgTW9ja01lZGlhRGV2aWNlIG1fZGV2aWNlOwogICAg
IFJlZlB0cjxWaWRlb1ByZXNldD4gbV9wcmVzZXQ7Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gbV9kZXZpY2VPcmllbnRhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lIH07CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gbV9kZXZpY2VPcmllbnRhdGlvbiB7IFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTg2YWU1ZmYyYmNjNWMyNzM1
NDJhOWNlZjM1ZTc0ZDdhMGE4ZjYyMy4uNTY3MGI2YmZhNjdlM2RiNmRiNzY4Mjg5NjZiNjJmYjUx
MThkYzNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTUyNSw3ICs1
NTI1LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnN0b3BPYnNlcnZpbmdSZWFsdGltZU1lZGlhU291cmNl
KCkKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvOgogICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6U2NyZWVuOgogICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6V2luZG93OgotICAgICAgICBtX3RyYWNrU291cmNlLT5yZW1vdmVWaWRl
b1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgbV90cmFja1NvdXJjZS0+cmVtb3ZlVmlk
ZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTU1NTIsNyArNTU1Miw3IEBAIHZvaWQgSW50ZXJuYWxzOjpvYnNlcnZlTWVkaWFTdHJlYW1U
cmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaykKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGU6OlZpZGVvOgogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6U2Ny
ZWVuOgogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6V2luZG93OgotICAgICAg
ICBtX3RyYWNrU291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAg
bV90cmFja1NvdXJjZS0+YWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25lOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1NjksMTMgKzU1NjksMTMgQEAgdm9pZCBJbnRlcm5h
bHM6Om1lZGlhU3RyZWFtVHJhY2tWaWRlb0ZyYW1lUm90YXRpb24oRE9NUHJvbWlzZURlZmVycmVk
PElETFNob3J0PiYKICAgICBwcm9taXNlLnJlc29sdmUobV90cmFja1ZpZGVvUm90YXRpb24pOwog
fQogCi12b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNh
bXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgSW50ZXJuYWxzOjp2aWRlb0ZyYW1l
QXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEp
CiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgc2FtcGxlID0gUmVmIHsgc2FtcGxlIH1dIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB2aWRlb0ZyYW1lID0gUmVmIHsgdmlk
ZW9GcmFtZSB9XSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIG1fdHJhY2tWaWRlb1NhbXBsZUNvdW50Kys7Ci0gICAgICAgIG1fdHJhY2tWaWRl
b1JvdGF0aW9uID0gc3RhdGljX2Nhc3Q8aW50PihzYW1wbGUtPnZpZGVvUm90YXRpb24oKSk7Cisg
ICAgICAgIG1fdHJhY2tWaWRlb1JvdGF0aW9uID0gc3RhdGljX2Nhc3Q8aW50Pih2aWRlb0ZyYW1l
LT5yb3RhdGlvbigpKTsKICAgICAgICAgaWYgKCFtX25leHRUcmFja0ZyYW1lUHJvbWlzZSkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtNTU4Myw3ICs1NTgzLDcgQEAgdm9pZCBJbnRlcm5hbHM6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1l
TWV0YWRhdGEKICAgICAgICAgaWYgKCF2aWRlb1NldHRpbmdzLndpZHRoKCkgfHwgIXZpZGVvU2V0
dGluZ3MuaGVpZ2h0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byByZ2Jh
ID0gc2FtcGxlLT5nZXRSR0JBSW1hZ2VEYXRhKCk7CisgICAgICAgIGF1dG8gcmdiYSA9IHZpZGVv
RnJhbWUtPmdldFJHQkFJbWFnZURhdGEoKTsKICAgICAgICAgaWYgKCFyZ2JhKQogICAgICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBhOTJhZmQ4MjU1
YTFlY2Q0Yzc5ZmVhNWU1NTMyMmY5OWQ1MzBiZWZkLi45NzM0NmQ5ZGIyOTVjNTRmMmQ0ZTA1YWQx
ZTJlMDhhNjJhNmM4MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE2NSw3
ICsxNjUsNyBAQCBjbGFzcyBJbnRlcm5hbHMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRl
cm5hbHM+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbgogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICAgICAsIHBy
aXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAgICwgcHJp
dmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwcml2
YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlcgogI2VuZGlmCiAgICAg
ewogcHVibGljOgpAQCAtMTI5Niw3ICsxMjk2LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCi0g
ICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1l
TWV0YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1l
JiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgLy8gUmVhbHRpbWVNZWRpYVNv
dXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlciBBUEkKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsIHsgbV90cmFja0F1ZGlvU2FtcGxl
Q291bnQrKzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggMGUx
NmRiYWY4MDc1NTM3YzE0NzQzNjdlMzk5ZWVmNWYzNGU4MmYyNC4uYjNhMTk4MGUzN2YyMzFmYjkx
MjE4MmEwMDc2ZjA3YWVlMzE4YjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcApAQCAtNTYsMTMgKzU2LDkgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29w
eVRleHR1cmVGcm9tVmlkZW9GcmFtZShXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWUKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8v
IE5vdGU6IFRoaXMgZXh0cmEgY2FzdGluZyBpcyBuZWVkZWQgc2luY2UgVmlkZW9GcmFtZXMgYXJl
IHN0aWxsIE1lZGlhU2FtcGxlcy4KLSAgICBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiB2
aWRlb0ZyYW1lQ1Y7Ci0gICAgaWYgKGlzPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4oKnZpZGVvRnJh
bWUpKQotICAgICAgICB2aWRlb0ZyYW1lQ1YgPSAmZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFt
ZUNWPigqdmlkZW9GcmFtZSk7Ci0gICAgZWxzZSBpZiAoaXM8V2ViQ29yZTo6TWVkaWFTYW1wbGVB
VkZPYmpDPigqdmlkZW9GcmFtZSkpCi0gICAgICAgIHZpZGVvRnJhbWVDViA9IGRvd25jYXN0PFdl
YkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQz4oKnZpZGVvRnJhbWUpLnZpZGVvRnJhbWUoKTsKLSAg
ICBlbHNlIHsKKworICAgIGF1dG8gdmlkZW9GcmFtZUNWID0gdmlkZW9GcmFtZS0+YXNWaWRlb0Zy
YW1lQ1YoKTsKKyAgICBpZiAoIXZpZGVvRnJhbWVDVikgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgLy8gUHJvZ3JhbW1pbmcgZXJyb3IsIG5vdCBhIElQQyBhdHRhY2suCiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcC5jcHAKaW5kZXggMDhiODBhNThmZWY5NWQyYWFjNzBjZWNkZTljZTY3MjBhNTdhNzk5
Mi4uNGJhYzliMzY4NTMzZWEwOTcxNTIzZDEzMjQ3NWZkMjQ0YTMwZjRlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXAuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1
ZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBs
ZUFWRk9iakMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvRnJhbWVDVi5oPgogI2luY2x1ZGUg
PHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2VuZGlmCkBAIC04NCw3ICs4Myw3IEBAIHZv
aWQgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmNsb3NlKCkKICAgICAvLyBUT0RPOiBhZGQg
Y2FuIGhhcHBlbiBhZnRlciBzdG9wcGluZy4KIH0KIAotUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjphZGQoUmVmPFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlPiYmIGZyYW1lKQorUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJl
bW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwOjphZGQoUmVmPFdlYkNvcmU6OlZpZGVvRnJhbWU+JiYg
ZnJhbWUpCiB7CiAgICAgYXV0byB3cml0ZSA9IFJlbW90ZVZpZGVvRnJhbWVXcml0ZVJlZmVyZW5j
ZTo6Z2VuZXJhdGVGb3JBZGQoKTsKICAgICBhdXRvIG5ld0ZyYW1lUmVmZXJlbmNlID0gd3JpdGUu
cmV0aXJlZFJlZmVyZW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaAppbmRleCA1M2VkNTZlMGFl
MGRlZWY2MTU0YzhjZTA0YTliMTZjZjE1MGU2OGIwLi5jMDhhNWE0Yzc3ZjYwNTIxNjYyN2M1MGIx
MGE0MTFlZjFhYjkyYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuaApAQCAtMjksNyArMjksNyBA
QAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuaCIKICNpbmNsdWRlICJUaHJlYWRTYWZlT2JqZWN0SGVhcC5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFTYW1wbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvRnJhbWUuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlNoYXJlZFZpZGVvRnJhbWUuaCIKQEAgLTQ0LDgg
KzQ0LDggQEAgcHVibGljOgogICAgIH5SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcCgpOwogCiAg
ICAgdm9pZCBjbG9zZSgpOwotICAgIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBh
ZGQoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6TWVk
aWFTYW1wbGU+IGdldChSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJlYWQpIHsgcmV0
dXJuIG1faGVhcC5yZXRpcmUoV1RGTW92ZShyZWFkKSwgMF9zKTsgfQorICAgIFJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6UHJvcGVydGllcyBhZGQoUmVmPFdlYkNvcmU6OlZpZGVvRnJhbWU+JiYpOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1lPiBnZXQoUmVtb3RlVmlkZW9GcmFtZVJlYWRS
ZWZlcmVuY2UmJiByZWFkKSB7IHJldHVybiBtX2hlYXAucmV0aXJlKFdURk1vdmUocmVhZCksIDBf
cyk7IH0KIAogICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXA+JiYpIHsgY2xvc2UoKTsgfQogCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIGNvbnN0IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsK
LSAgICBUaHJlYWRTYWZlT2JqZWN0SGVhcDxSZW1vdGVWaWRlb0ZyYW1lSWRlbnRpZmllciwgUmVm
UHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPj4gbV9oZWFwOworICAgIFRocmVhZFNhZmVPYmplY3RI
ZWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFt
ZT4+IG1faGVhcDsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTaGFyZWRWaWRlb0ZyYW1lV3Jp
dGVyIG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbSBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KaW5kZXgg
ZDhhMjkyMjY2MTZiMjY0N2YxMWY4NDU2MDI5ZjNkZWRlZTIzZTIxNC4uMGY4MmQ5NDU1YTk5NTRl
YjMwZWI2ZTNhYTFmZjEwZjNhNjc5MjJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCkBAIC05Nyw3ICs5Nyw3
IEBAIGF1dG8gTGliV2ViUlRDQ29kZWNzUHJveHk6OmNyZWF0ZURlY29kZXJDYWxsYmFjayhSVENE
ZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyCiAgICAgaWYgKHVzZVJlbW90ZUZyYW1lcykKICAg
ICAgICAgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLnB0cigp
OwogICAgIHJldHVybiBbaWRlbnRpZmllciwgY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbiwgcmVz
b3VyY2VPd25lciA9IG1fcmVzb3VyY2VPd25lciwgdmlkZW9GcmFtZU9iamVjdEhlYXAgPSBXVEZN
b3ZlKHZpZGVvRnJhbWVPYmplY3RIZWFwKV0gKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIs
IHVpbnQzMl90IHRpbWVTdGFtcE5zLCB1aW50MzJfdCB0aW1lU3RhbXApIG11dGFibGUgewotICAg
ICAgICBhdXRvIHZpZGVvRnJhbWUgPSBXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShNZWRp
YVRpbWUodGltZVN0YW1wTnMsIDEpLCBmYWxzZSwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb246Ok5vbmUsIHBpeGVsQnVmZmVyKTsKKyAgICAgICAgYXV0byB2aWRlb0ZyYW1lID0g
V2ViQ29yZTo6VmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lKHRpbWVTdGFtcE5zLCAxKSwg
ZmFsc2UsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBwaXhlbEJ1ZmZlcik7
CiAgICAgICAgIGlmIChyZXNvdXJjZU93bmVyKQogICAgICAgICAgICAgdmlkZW9GcmFtZS0+c2V0
T3duZXJzaGlwSWRlbnRpdHkocmVzb3VyY2VPd25lcik7CiAgICAgICAgIGlmICh2aWRlb0ZyYW1l
T2JqZWN0SGVhcCkgewpAQCAtMjE1LDE2ICsyMTUsMTYgQEAgTGliV2ViUlRDQ29kZWNzUHJveHk6
OkVuY29kZXIqIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpmaW5kRW5jb2RlcihSVENFbmNvZGVySWRl
bnQKICAgICByZXR1cm4gJml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotc3RhdGljIGlubGluZSB3ZWJy
dGM6OlZpZGVvUm90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQorc3RhdGljIGlubGluZSB3ZWJydGM6OlZpZGVv
Um90YXRpb24gdG9XZWJSVENWaWRlb1JvdGF0aW9uKFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0
aW9uIHJvdGF0aW9uKQogewogICAgIHN3aXRjaCAocm90YXRpb24pIHsKLSAgICBjYXNlIFdlYkNv
cmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOgorICAgIGNhc2UgV2ViQ29yZTo6
VmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6CiAgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRl
b1JvdGF0aW9uXzA7Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6VXBzaWRlRG93bjoKKyAgICBjYXNlIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpV
cHNpZGVEb3duOgogICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAg
Y2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVy
biB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOwotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OkxlZnQ6CisgICAgY2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6TGVmdDoKICAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcw
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDUy
ZjYxOGEzODZjMzBlYWY2ZGJlMDg4MDE2NGY0YzlmMzI2OThiMTEuLmJmMGI5NDJlNDYxMzUzNGQw
YTlmYTgzYmM4ODgyNGFmYmExMWM5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtODYsNyArODYsNyBA
QCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRp
bWUgdGltZSwgdWludDY0X3QgbnVtYmVyTwogICAgIG1fd3JpdGVyLT5hcHBlbmRBdWRpb1NhbXBs
ZUJ1ZmZlcigqbV9hdWRpb0J1ZmZlckxpc3QsIG1fZGVzY3JpcHRpb24sIHRpbWUsIG51bWJlck9m
RnJhbWVzKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWls
YWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYgc2hhcmVkVmlkZW9GcmFtZSkKK3ZvaWQgUmVtb3RlTWVk
aWFSZWNvcmRlcjo6dmlkZW9GcmFtZUF2YWlsYWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYgc2hhcmVk
VmlkZW9GcmFtZSkKIHsKICAgICBpZiAoYXV0byBmcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVJl
YWRlci5yZWFkKFdURk1vdmUoc2hhcmVkVmlkZW9GcmFtZSkpKQogICAgICAgICBtX3dyaXRlci0+
YXBwZW5kVmlkZW9GcmFtZSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaAppbmRleCAxY2MxYmIzYmZhMDA4MjAw
MTFiMDc1OWJiMjcwZWRjM2U1MzU0MTU2Li4zZjgxZWZiNDM0NTcxNWU4N2VjYzVlYTA1YTA4NDgw
ODY0YzA4OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdl
ZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsK
LSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFNoYXJlZFZpZGVvRnJhbWUmJik7CisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFNoYXJlZFZpZGVvRnJhbWUmJik7CiAgICAgdm9pZCBm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91
YmxlKT4mJik7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBwYXVzZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCmluZGV4IDliN2Q5NmY2M2RkNDI4ZjJhMGRjY2ZiNjU4
ZTJlODlhOWM2ZjYwMDcuLjEyYmM4MDUwYjY0NWUzYjA4MzgzY2ZkYmJhM2U2YmQzYjg0MjBmYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhUmVjb3JkZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1w
bGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdl
SGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzKQogICAgIEF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRpYVRp
bWUgdGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCi0gICAgVmlkZW9TYW1wbGVBdmFpbGFi
bGUoc3RydWN0IFdlYktpdDo6U2hhcmVkVmlkZW9GcmFtZSBmcmFtZSkKKyAgICBWaWRlb0ZyYW1l
QXZhaWxhYmxlKHN0cnVjdCBXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUpCiAgICAgRmV0
Y2hEYXRhKCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBidWZmZXIsIGRvdWJsZSB0aW1lQ29kZSkK
ICAgICBTdG9wUmVjb3JkaW5nKCkgLT4gKCkKICAgICBQYXVzZSgpIC0+ICgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggOGQwNGYyY2M1YTc4OWE3YTRlOTU4NzQwYzdi
NjhiNTM5M2U1YmE0Yi4uMWQ3YWRhYjU2OTM5MzJlZDhkM2QzOThhNDA0ZGQ5M2U2NDAyMTg4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2
b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQWZmaW5lVHJhbnNmb3Jt
KENHQWZmaW5lVHJhbnNmb3JtIHRyYQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51
cGRhdGVSb290TGF5ZXJBZmZpbmVUcmFuc2Zvcm0odHJhbnNmb3JtKTsKIH0KIAotdm9pZCBSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQor
dm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0
aW9uKENHUmVjdCBib3VuZHMsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9u
KQogewogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVSb290TGF5ZXJCb3Vu
ZHNBbmRQb3NpdGlvbihib3VuZHMsIHJvdGF0aW9uLCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6U2hvdWxkVXBkYXRlUm9vdExheWVyOjpZZXMpOwogfQpAQCAtMTE2LDE1ICsxMTYsMTUg
QEAgdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKICAgICBtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cGF1c2UoKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWUoU2hhcmVkVmlkZW9GcmFtZSYmIGZyYW1lKQordm9p
ZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVWaWRlb0ZyYW1lKFNoYXJl
ZFZpZGVvRnJhbWUmJiBmcmFtZSkKIHsKICAgICBpZiAoYXV0byB2aWRlb0ZyYW1lID0gbV9zaGFy
ZWRWaWRlb0ZyYW1lUmVhZGVyLnJlYWQoV1RGTW92ZShmcmFtZSkpKQotICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5xdWV1ZSh2aWRlb0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2
aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCkpOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+ZW5xdWV1ZUJ1ZmZlcih2aWRlb0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2aWRl
b0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCkpOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQordm9pZCBSZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQogewotICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLT5jbGVhckVucXVldWVkU2FtcGxlcygpOworICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLT5jbGVhclZpZGVvRnJhbWVzKCk7CiB9CiAKIElQQzo6Q29ubmVjdGlv
biogUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCAxNjFmM2M5NTll
ZDNjYmE3YjM4MmNlMjJmNTI0OGI2ZDFiY2IyNDhmLi41OTc2ODg4OTczZDEyZjlkZTZkZWVkNmY1
M2IyYzIwZDY4NzE5Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTcw
LDEzICs3MCwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5TW9k
ZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcik7CiAgICAgdm9pZCB1
cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0pOwotICAgIHZvaWQgdXBkYXRl
Qm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbik7CisgICAgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFdlYkNvcmU6
OlZpZGVvRnJhbWU6OlJvdGF0aW9uKTsKICAgICB2b2lkIGZsdXNoKCk7CiAgICAgdm9pZCBmbHVz
aEFuZFJlbW92ZUltYWdlKCk7CiAgICAgdm9pZCBwbGF5KCk7CiAgICAgdm9pZCBwYXVzZSgpOwot
ICAgIHZvaWQgZW5xdWV1ZShTaGFyZWRWaWRlb0ZyYW1lJiYpOwotICAgIHZvaWQgY2xlYXJFbnF1
ZXVlZFNhbXBsZXMoKTsKKyAgICB2b2lkIGVucXVldWVWaWRlb0ZyYW1lKFNoYXJlZFZpZGVvRnJh
bWUmJik7CisgICAgdm9pZCBjbGVhclZpZGVvRnJhbWVzKCk7CiAgICAgdm9pZCBzZXRTaGFyZWRW
aWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOwogICAgIHZvaWQgc2V0U2hhcmVk
VmlkZW9GcmFtZU1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCmluZGV4IDczMTBl
YmFmOWEyZjkxNTgwZTFmZDgxY2Q5ZGEyYjY2OTgwZWZhNzUuLjUyNGY0NWViNmYwNWNlNWFhZmJl
MTEyNmZhNmY2NWRmZGY3ZjM5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLm1lc3NhZ2VzLmluCkBAIC0yOSwxMSArMjksMTEgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAgICAgVXBk
YXRlRGlzcGxheU1vZGUoYm9vbCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIp
CiAgICAgVXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSkK
LSAgICBVcGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBXZWJDb3JlOjpNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKKyAgICBVcGRhdGVCb3VuZHNBbmRQb3Np
dGlvbihDR1JlY3QgYm91bmRzLCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlv
bikKICAgICBGbHVzaCgpCiAgICAgRmx1c2hBbmRSZW1vdmVJbWFnZSgpCi0gICAgRW5xdWV1ZShz
dHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1lIGZyYW1lKQotICAgIENsZWFyRW5xdWV1ZWRT
YW1wbGVzKCkKKyAgICBFbnF1ZXVlVmlkZW9GcmFtZShzdHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRl
b0ZyYW1lIGZyYW1lKQorICAgIENsZWFyVmlkZW9GcmFtZXMoKQogICAgIFBsYXkoKQogICAgIFBh
dXNlKCkKICAgICBTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlKElQQzo6U2VtYXBob3JlIHNl
bWFwaG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmQ0NTNlNGRhNzljMmQ4
MmQxYTkxZDA0MmYzNDUxZWI4ZWRkYzUwYi4uZmM1NzQ4MjQ1YzFlNDIzN2EyMmVmNTMxODI4YzA1
NDVkZDc3ZTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpTb3VyY2VQcm94eQogICAgIDogcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpP
YnNlcnZlcgogICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb1NhbXBsZU9i
c2VydmVyCi0gICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2Jz
ZXJ2ZXIgeworICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2Jz
ZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNvdXJj
ZVByb3h5KFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24sIFByb2Nlc3NJZGVudGl0eSYmIHJlc291cmNlT3duZXIsIFJlZjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgUmVmUHRyPFJlbW90ZVZpZGVvRnJhbWVPYmpl
Y3RIZWFwPiYmIHZpZGVvRnJhbWVPYmplY3RIZWFwKQpAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86CiAgICAgICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6U2NyZWVuOgogICAgICAgICBjYXNlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OldpbmRvdzoKLSAgICAgICAgICAgIG1fc291cmNlLT5h
ZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fc291cmNlLT5hZGRW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZToKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6U2NyZWVuOgogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU6OldpbmRvdzoKLSAgICAgICAgICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9i
c2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2Jz
ZXJ2ZXIoKnRoaXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMTc4LDE2ICsxNzgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fY2FwdHVyZVNl
bWFwaG9yZS0+c2lnbmFsKCk7CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiByb3Rh
dGVWaWRlb0ZyYW1lSWZOZWVkZWQoTWVkaWFTYW1wbGUmIHNhbXBsZSkKKyAgICBSZWZQdHI8Vmlk
ZW9GcmFtZT4gcm90YXRlVmlkZW9GcmFtZUlmTmVlZGVkKFZpZGVvRnJhbWUmIGZyYW1lKQogICAg
IHsKLSAgICAgICAgaWYgKG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBzYW1wbGUudmlkZW9Sb3Rh
dGlvbigpICE9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lKSB7Ci0gICAgICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gcm90YXRlUGl4ZWxCdWZmZXIoc2FtcGxlKTsKLSAgICAgICAg
ICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGltZSgp
LCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgV1RGTW92ZShwaXhlbEJ1ZmZlcikpOworICAgICAgICBpZiAobV9zaG91bGRBcHBseVJvdGF0
aW9uICYmIGZyYW1lLnJvdGF0aW9uKCkgIT0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUpIHsK
KyAgICAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihmcmFtZSk7
CisgICAgICAgICAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoZnJhbWUucHJlc2VudGF0
aW9uVGltZSgpLCBmcmFtZS5pc01pcnJvcmVkKCksIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25l
LCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICZzYW1w
bGU7CisgICAgICAgIHJldHVybiAmZnJhbWU7CiAgICAgfQogCi0gICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgZnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0
YWRhdGEpIGZpbmFsCisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIGZy
YW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5hbAogICAgIHsKICAgICAg
ICAgYXV0byB2aWRlb0ZyYW1lID0gcm90YXRlVmlkZW9GcmFtZUlmTmVlZGVkKGZyYW1lKTsKICAg
ICAgICAgaWYgKCF2aWRlb0ZyYW1lKQpAQCAtMTk1LDM1ICsxOTUsMzUgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKG1fcmVzb3VyY2VPd25lcikKICAgICAgICAgICAgIHZpZGVvRnJhbWUtPnNldE93
bmVyc2hpcElkZW50aXR5KG1fcmVzb3VyY2VPd25lcik7CiAgICAgICAgIGlmICghbV92aWRlb0Zy
YW1lT2JqZWN0SGVhcCkgewotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6VmlkZW9GcmFtZUF2YWlsYWJsZUNWKG1faWQs
IHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnZpZGVvUm90YXRpb24oKSwg
dmlkZW9GcmFtZS0+dmlkZW9NaXJyb3JlZCgpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1l
KCksIG1ldGFkYXRhKSwgMCk7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpWaWRlb0ZyYW1lQXZhaWxhYmxlQ1YobV9p
ZCwgdmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cm90YXRpb24oKSwgdmlk
ZW9GcmFtZS0+aXNNaXJyb3JlZCgpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCksIG1l
dGFkYXRhKSwgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0
byBwcm9wZXJ0aWVzID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC0+YWRkKCp2aWRlb0ZyYW1lKTsK
ICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlcjo6VmlkZW9GcmFtZUF2YWlsYWJsZShtX2lkLCBwcm9wZXJ0aWVzLCBtZXRhZGF0YSks
IDApOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGVQaXhl
bEJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQorICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX3JvdGF0aW9uU2Vzc2lvbikKICAgICAgICAgICAgIG1fcm90YXRpb25TZXNz
aW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPigpOwogCiAgICAgICAgIElt
YWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGllcyByb3RhdGlvbjsKLSAgICAg
ICAgc3dpdGNoIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSB7Ci0gICAgICAgIGNhc2UgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU6CisgICAgICAgIHN3aXRjaCAodmlkZW9GcmFtZS5y
b3RhdGlvbigpKSB7CisgICAgICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJvdGF0aW9uLmFu
Z2xlID0gMDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpVcHNpZGVEb3duOgogICAgICAgICAgICAgcm90YXRpb24uYW5nbGUgPSAxODA7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
UmlnaHQ6CisgICAgICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAg
ICAgICAgcm90YXRpb24uYW5nbGUgPSA5MDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OgorICAgICAgICBjYXNlIFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpMZWZ0OgogICAgICAgICAgICAgcm90YXRpb24uYW5nbGUgPSAyNzA7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9yb3RhdGlv
blNlc3Npb24tPnJvdGF0ZShzYW1wbGUsIHJvdGF0aW9uLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
OjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CisgICAgICAgIHJldHVybiBtX3JvdGF0aW9uU2Vz
c2lvbi0+cm90YXRlKHZpZGVvRnJhbWUsIHJvdGF0aW9uLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
OjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CiAgICAgfQogCiAgICAgdm9pZCBzdG9yYWdlQ2hh
bmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgZm9ybWF0LCBzaXplX3QgZnJhbWVDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5
LmNwcAppbmRleCBhYjhmNjkyOGFlZjczM2U1OTBlN2FkOWZkODBmNDliNDA2ODI4MzgxLi5lODFi
MjNmOTBiNTE3YzE1MjgzYzc1MTYzNzVhN2IxYzAxYTA1ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuY3BwCkBAIC00MiwxNSArNDIsMTUgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3Bl
cnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYgcmVmZXJlbmNlLCBjb25z
dCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCitSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKFdlYktpdDo6
UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSYmIHJlZmVyZW5jZSwgY29uc3QgV2ViQ29yZTo6Vmlk
ZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKICAgICByZXR1cm4gewogICAgICAgICBXVEZNb3ZlKHJl
ZmVyZW5jZSksCi0gICAgICAgIG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwKLSAgICAg
ICAgbWVkaWFTYW1wbGUudmlkZW9NaXJyb3JlZCgpLAotICAgICAgICBtZWRpYVNhbXBsZS52aWRl
b1JvdGF0aW9uKCksCi0gICAgICAgIGV4cGFuZGVkSW50U2l6ZShtZWRpYVNhbXBsZS5wcmVzZW50
YXRpb25TaXplKCkpLAotICAgICAgICBtZWRpYVNhbXBsZS52aWRlb1BpeGVsRm9ybWF0KCkKKyAg
ICAgICAgdmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCksCisgICAgICAgIHZpZGVvRnJhbWUu
aXNNaXJyb3JlZCgpLAorICAgICAgICB2aWRlb0ZyYW1lLnJvdGF0aW9uKCksCisgICAgICAgIGV4
cGFuZGVkSW50U2l6ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKSksCisgICAgICAgIHZp
ZGVvRnJhbWUucGl4ZWxGb3JtYXQoKQogICAgIH07CiB9CiAKQEAgLTk0LDcgKzk0LDcgQEAgUmVt
b3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpuZXdSZWFk
UmVmZXJlbmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9yZWZlcmVuY2VUcmFja2VyLnJlYWQoKTsK
IH0KIAotdWludDMyX3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojp2aWRlb1BpeGVsRm9ybWF0KCkg
Y29uc3QKK3VpbnQzMl90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cGl4ZWxGb3JtYXQoKSBjb25z
dAogewogICAgIHJldHVybiBtX3BpeGVsRm9ybWF0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKaW5k
ZXggY2U0MDcxMGQ3MWUwNDJjY2IxNzc5YmNjM2U0NWIzYmFiMmYzNDEyNi4uZTQ0ZDI5ZmVlMzZh
OTA0Zjc3NDU1ZjY3MjA0NDZjZWExMWE4ZmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVm
ZXJlbmNlIHJlZmVyZW5jZTsKICAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWU7CiAg
ICAgICAgIGJvb2wgaXNNaXJyb3JlZCB7IGZhbHNlIH07Ci0gICAgICAgIFZpZGVvUm90YXRpb24g
cm90YXRpb24geyBWaWRlb1JvdGF0aW9uOjpOb25lIH07CisgICAgICAgIFJvdGF0aW9uIHJvdGF0
aW9uIHsgUm90YXRpb246Ok5vbmUgfTsKICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplOwog
ICAgICAgICB1aW50MzJfdCBwaXhlbEZvcm1hdCB7IDAgfTsKIApAQCAtNjcsNyArNjcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFByb3BlcnRpZXM+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKIAotICAgIHN0YXRp
YyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNl
JiYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJik7CisgICAgc3RhdGljIFByb3BlcnRpZXMg
cHJvcGVydGllcyhXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiwgY29uc3QgV2Vi
Q29yZTo6VmlkZW9GcmFtZSYpOwogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb24mLCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcFBy
b3h5JiwgUHJvcGVydGllcyYmKTsKIApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBXZWJDb3JlOjpWaWRlb0ZyYW1lIG92ZXJyaWRlcy4KICAgICBXZWJDb3JlOjpGbG9hdFNpemUg
cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHVp
bnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKKyAgICB1aW50MzJfdCBwaXhl
bEZvcm1hdCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNSZW1vdGVQcm94eSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICBDVlBpeGVsQnVm
ZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CkBAIC0xMTYsMTIgKzExNiwxMiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlbW90ZVZpZGVvRnJhbWVQ
cm94eTo6UHJvcGVydGllcz4gUmVtbwogICAgIGF1dG8gcmVmZXJlbmNlID0gZGVjb2Rlci50ZW1w
bGF0ZSBkZWNvZGU8UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZT4oKTsKICAgICBhdXRvIHByZXNl
bnRhdGlvblRpbWUgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxNZWRpYVRpbWU+KCk7CiAgICAg
YXV0byBpc01pcnJvcmVkID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8Ym9vbD4oKTsKLSAgICBh
dXRvIHZpZGVvUm90YXRpb24gPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxWaWRlb1JvdGF0aW9u
PigpOworICAgIGF1dG8gcm90YXRpb24gPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSb3RhdGlv
bj4oKTsKICAgICBhdXRvIHNpemUgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxXZWJDb3JlOjpJ
bnRTaXplPigpOwogICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29k
ZTx1aW50MzJfdD4oKTsKICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcmVmZXJl
bmNlKSwgV1RGTW92ZSgqcHJlc2VudGF0aW9uVGltZSksICppc01pcnJvcmVkLCAqdmlkZW9Sb3Rh
dGlvbiwgKnNpemUsICpwaXhlbEZvcm1hdCB9OworICAgIHJldHVybiBQcm9wZXJ0aWVzIHsgV1RG
TW92ZSgqcmVmZXJlbmNlKSwgV1RGTW92ZSgqcHJlc2VudGF0aW9uVGltZSksICppc01pcnJvcmVk
LCAqcm90YXRpb24sICpzaXplLCAqcGl4ZWxGb3JtYXQgfTsKIH0KIAogVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzJik7CkBAIC0xMjksNyArMTI5LDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJik7CiB9CiAKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUHJveHkp
Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRp
YVNhbXBsZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpICYm
IGRvd25jYXN0PFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKS5pc1JlbW90ZVByb3h5
KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VmlkZW9GcmFtZSYg
dmlkZW9GcmFtZSkgeyByZXR1cm4gdmlkZW9GcmFtZS5pc1JlbW90ZVByb3h5KCk7IH0KIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBmZDEy
MmRiZTU3M2NhYWE5Yjk0NGM4NjU3YTQ1NDVhMGRhNWM1YjY2Li42ZDNhZTBlMDViNDhiYzZlOGZl
ZWE0MWIyZWY3MWQxYjAzMjJkMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTEwMiwyMCArMTAyLDIw
IEBAIHN0YXRpYyBpbnQzMl90IGluaXRpYWxpemVWaWRlb0VuY29kZXIod2VicnRjOjpXZWJLaXRW
aWRlb0VuY29kZXIgZW5jb2RlciwgY29uc3QKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkubGliV2ViUlRDQ29kZWNzKCkuaW5pdGlhbGl6ZUVuY29kZXIoKnN0YXRpY19jYXN0PExp
YldlYlJUQ0NvZGVjczo6RW5jb2Rlcio+KGVuY29kZXIpLCBjb2RlYy53aWR0aCwgY29kZWMuaGVp
Z2h0LCBjb2RlYy5zdGFydEJpdHJhdGUsIGNvZGVjLm1heEJpdHJhdGUsIGNvZGVjLm1pbkJpdHJh
dGUsIGNvZGVjLm1heEZyYW1lcmF0ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb24gdG9NZWRpYVNhbXBsZVZpZGVvUm90YXRpb24od2VicnRjOjpWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uKQorc3RhdGljIGlubGluZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbiB0b1Zp
ZGVvUm90YXRpb24od2VicnRjOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHN3aXRj
aCAocm90YXRpb24pIHsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDoKLSAgICAg
ICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgICAgICByZXR1
cm4gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1Jv
dGF0aW9uXzE4MDoKLSAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpV
cHNpZGVEb3duOworICAgICAgICByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURv
d247CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOgotICAgICAgICByZXR1cm4g
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OworICAgICAgICByZXR1cm4gVmlkZW9G
cmFtZTo6Um90YXRpb246OlJpZ2h0OwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8y
NzA6Ci0gICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAg
ICAgICAgcmV0dXJuIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
Ok5vbmU7CisgICAgcmV0dXJuIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogfQogCiBzdGF0
aWMgaW5saW5lIFN0cmluZyBmb3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlwZSh3ZWJydGM6OlZp
ZGVvQ29kZWNUeXBlIHR5cGUpCkBAIC00OTQsNyArNDk0LDcgQEAgaW50MzJfdCBMaWJXZWJSVEND
b2RlY3M6OmVuY29kZUZyYW1lKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHdlYnJ0Yzo6VmlkZW9G
cmFtZSYKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RF
Q19FUlJPUjsKIAotICAgIFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFtZSB7IE1lZGlh
VGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDApLCBmYWxzZSwgdG9NZWRp
YVNhbXBsZVZpZGVvUm90YXRpb24oZnJhbWUucm90YXRpb24oKSksIFdURk1vdmUoKmJ1ZmZlcikg
fTsKKyAgICBTaGFyZWRWaWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUgeyBNZWRpYVRpbWUoZnJh
bWUudGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgZmFsc2UsIHRvVmlkZW9Sb3RhdGlv
bihmcmFtZS5yb3RhdGlvbigpKSwgV1RGTW92ZSgqYnVmZmVyKSB9OwogICAgIGVuY29kZXIuY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkVuY29kZUZyYW1l
IHsgZW5jb2Rlci5pZGVudGlmaWVyLCBzaGFyZWRWaWRlb0ZyYW1lLCBmcmFtZS50aW1lc3RhbXAo
KSwgc2hvdWxkRW5jb2RlQXNLZXlGcmFtZSB9LCAwKTsKICAgICByZXR1cm4gV0VCUlRDX1ZJREVP
X0NPREVDX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IDA0ODUwNjU0ZGExOTM1
NmE0ZTExZjY1ODg1OTM1ZDMyMTk3ZjZkOTcuLjg1ODUyNjQ1ZDI1N2JhYmM1NjBiZDQ1N2FkMTYw
MDQwZjgzY2YxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTkyLDI1ICs5MiwyNSBA
QCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6fk1lZGlhUmVjb3JkZXJQcml2YXRlKCkKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLnJlbW92ZUNs
aWVudCgqdGhpcyk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUm
IHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCiB7CiAgICAgaWYgKHNob3VsZE11
dGVWaWRlbygpKSB7CiAgICAgICAgIGlmICghbV9ibGFja0ZyYW1lU2l6ZSkgewotICAgICAgICAg
ICAgYXV0byBzaXplID0gc2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAgICAgIGF1
dG8gc2l6ZSA9IHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOwogICAgICAgICAgICAgbV9i
bGFja0ZyYW1lU2l6ZSA9IFdlYkNvcmU6OkludFNpemUgeyBzdGF0aWNfY2FzdDxpbnQ+KHNpemUu
d2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQoKSkgfTsKICAgICAgICAgfQot
ICAgICAgICBTaGFyZWRWaWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUgeyBzYW1wbGUucHJlc2Vu
dGF0aW9uVGltZSgpLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlv
bigpLCAqbV9ibGFja0ZyYW1lU2l6ZSB9OwotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgc2hhcmVk
VmlkZW9GcmFtZSB9LCBtX2lkZW50aWZpZXIpOworICAgICAgICBTaGFyZWRWaWRlb0ZyYW1lIHNo
YXJlZFZpZGVvRnJhbWUgeyB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwgdmlkZW9GcmFt
ZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgKm1fYmxhY2tGcmFtZVNpemUg
fTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29y
ZGVyOjpWaWRlb0ZyYW1lQXZhaWxhYmxlIHsgc2hhcmVkVmlkZW9GcmFtZSB9LCBtX2lkZW50aWZp
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9ibGFja0ZyYW1lU2l6ZSA9IHsg
fTsKLSAgICBhdXRvIHNoYXJlZFZpZGVvRnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIu
d3JpdGUoc2FtcGxlLAorICAgIGF1dG8gc2hhcmVkVmlkZW9GcmFtZSA9IG1fc2hhcmVkVmlkZW9G
cmFtZVdyaXRlci53cml0ZSh2aWRlb0ZyYW1lLAogICAgICAgICBbdGhpc10oYXV0byYgc2VtYXBo
b3JlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6
U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZSB7IHNlbWFwaG9yZSB9LCBtX2lkZW50aWZpZXIp
OyB9LAogICAgICAgICBbdGhpc10oYXV0byYgaGFuZGxlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7
IGhhbmRsZSB9LCBtX2lkZW50aWZpZXIpOyB9CiAgICAgKTsKICAgICBpZiAoc2hhcmVkVmlkZW9G
cmFtZSkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJl
Y29yZGVyOjpWaWRlb1NhbXBsZUF2YWlsYWJsZSB7IFdURk1vdmUoKnNoYXJlZFZpZGVvRnJhbWUp
IH0sIG1faWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZWNvcmRlcjo6VmlkZW9GcmFtZUF2YWlsYWJsZSB7IFdURk1vdmUoKnNoYXJl
ZFZpZGVvRnJhbWUpIH0sIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGU6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0
IFBsYXRmb3JtQXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUu
aAppbmRleCA3MjEwYzBjZWIxMDdjYjdkN2U0MTZmYjY4MzJmMzhmMjI2OGI5YzQ4Li5lMjRlYWJl
MGViYjI1YjliODJlM2Q1Yjc5MWVlMmZjODQ2MjQ4N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgK
QEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpNZWRpYVNhbXBsZSYsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOwor
ICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiwgV2ViQ29y
ZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAg
dm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKaW5kZXggNzE5OTJmMDRmMjliNGIwZWQ1NjViMzNi
OTk2NGFmODM2NzgwMTJkOC4uNzQ1Y2ZmNmM3MzIwMjhiZWUxMTI5ZmM1ODU2NDhjZjliNGViYThj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAg
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0Fm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0KICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6VXBkYXRlQWZmaW5lVHJhbnNmb3JtIHsg
dHJhbnNmb3JtIH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBWaWRlb0ZyYW1lOjpSb3Rh
dGlvbiByb3RhdGlvbikKIHsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6VXBkYXRlQm91bmRzQW5kUG9zaXRpb24geyBib3Vu
ZHMsIHJvdGF0aW9uIH0sIG1faWRlbnRpZmllcik7CiB9CkBAIC0xMjcsMjQgKzEyNywyNCBAQCB2
b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cGF1c2UoKQogICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpQYXVzZSB7IH0s
IG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1
ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKICAgICBp
ZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc2hhcmVkVmlkZW9GcmFt
ZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShzYW1wbGUsCisgICAgYXV0byBzaGFy
ZWRWaWRlb0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHZpZGVvRnJhbWUs
CiAgICAgICAgIFt0aGlzXShhdXRvJiBzZW1hcGhvcmUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNldFNoYXJlZFZpZGVvRnJh
bWVTZW1hcGhvcmUgeyBzZW1hcGhvcmUgfSwgbV9pZGVudGlmaWVyKTsgfSwKICAgICAgICAgW3Ro
aXNdKGF1dG8mIGhhbmRsZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2V0U2hhcmVkVmlkZW9GcmFtZU1lbW9yeSB7IGhhbmRs
ZSB9LCBtX2lkZW50aWZpZXIpOyB9CiAgICAgKTsKICAgICBpZiAoIXNoYXJlZFZpZGVvRnJhbWUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVlIHsgKnNoYXJlZFZpZGVvRnJhbWUg
fSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZVZpZGVvRnJhbWUgeyAqc2hhcmVkVmlk
ZW9GcmFtZSB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGVhckVucXVldWVkU2FtcGxlcyB7
IH0sIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsZWFyVmlkZW9GcmFtZXMgeyB9LCBtX2lkZW50
aWZpZXIpOwogfQogCiBQbGF0Zm9ybUxheWVyKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJv
b3RMYXllcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDVlODQzNGE5ZjQyNDQ4
MGQxMDIyZTQ1YWU4Yjg2OTkzMzQ2NzEzY2MuLjA3NDAxZjY0NzE3OTVmNWZkYzFlZDJmNTlkY2Jm
ZDU4YzEzNWNlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC02MiwxMyArNjIs
MTMgQEAgcHJpdmF0ZToKICAgICBib29sIGRpZEZhaWwoKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExh
eWVyKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5z
Zm9ybSkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFdl
YkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0
ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24p
IGZpbmFsOwogICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3Zl
SW1hZ2UoKSBmaW5hbDsKICAgICB2b2lkIHBsYXkoKSBmaW5hbDsKICAgICB2b2lkIHBhdXNlKCkg
ZmluYWw7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJikgZmlu
YWw7Ci0gICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpIGZpbmFsOworICAgIHZvaWQgZW5x
dWV1ZVZpZGVvRnJhbWUoV2ViQ29yZTo6VmlkZW9GcmFtZSYpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJWaWRlb0ZyYW1lcygpIGZpbmFsOwogICAgIFBsYXRmb3JtTGF5ZXIqIHJvb3RMYXllcigpIGZp
bmFsOwogCiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNw
cAppbmRleCBjZThlYzVmY2RjNzJkMjU3ZjBkOTRjZWIyODhiZmJiM2JiYWIzZWNlLi4zOWI3NGJm
NDZkZWJkYTVkYjY5ZjY3ZmIyYmM2YThkZThmZDRlOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcApAQCAt
OTMsMTUgKzkzLDE1IEBAIGJvb2wgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6cHJlcGFyZVdyaXRp
bmcoY29uc3QgU2hhcmVkVmlkZW9GcmFtZUluZm8mIGluZm8sIGNvCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZT4gU2hhcmVkVmlkZW9GcmFtZVdy
aXRlcjo6d3JpdGUoTWVkaWFTYW1wbGUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6
U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCitzdGQ6
Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRl
KFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+
JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCiB7CiAgICAgYXV0byBidWZm
ZXIgPSB3cml0ZUJ1ZmZlcihmcmFtZSwgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIG5ld01lbW9yeUNh
bGxiYWNrKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1
cm4gU2hhcmVkVmlkZW9GcmFtZSB7IGZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwgZnJhbWUudmlk
ZW9NaXJyb3JlZCgpLCBmcmFtZS52aWRlb1JvdGF0aW9uKCksIFdURk1vdmUoKmJ1ZmZlcikgfTsK
KyAgICByZXR1cm4gU2hhcmVkVmlkZW9GcmFtZSB7IGZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwg
ZnJhbWUuaXNNaXJyb3JlZCgpLCBmcmFtZS5yb3RhdGlvbigpLCBXVEZNb3ZlKCpidWZmZXIpIH07
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiBTaGFyZWRWaWRl
b0ZyYW1lV3JpdGVyOjp3cml0ZUJ1ZmZlcihNZWRpYVNhbXBsZSYgZnJhbWUsIGNvbnN0IEZ1bmN0
aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlD
YWxsYmFjaykKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiBTaGFyZWRW
aWRlb0ZyYW1lV3JpdGVyOjp3cml0ZUJ1ZmZlcihWaWRlb0ZyYW1lJiBmcmFtZSwgY29uc3QgRnVu
Y3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9y
eUNhbGxiYWNrKQogewogICAgIGlmIChpczxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KGZyYW1lKSkK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oZnJhbWUpLm5l
d1JlYWRSZWZlcmVuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaAppbmRleCBmYTNkODNjNWQ5NGI4YWZkMGU1ZDc5
YzAwZGRjZDM5ZGZlM2EzMzM3Li5hMTUwMWU3NWE2NGYyMTM3ZmE1YzE2OTE2NTJjNDEwMmNiOGZm
OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFy
ZWRWaWRlb0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
U2hhcmVkVmlkZW9GcmFtZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZVZpZGVvRnJh
bWVPYmplY3RIZWFwOwogc3RydWN0IFNoYXJlZFZpZGVvRnJhbWUgewogICAgIE1lZGlhVGltZSB0
aW1lOwogICAgIGJvb2wgbWlycm9yZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6Ok1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uIHsgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb246Ok5vbmUgfTsKKyAgICBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3Rh
dGlvbiB7IFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lIH07CiAgICAgdXNpbmcg
QnVmZmVyID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZW1vdGVWaWRlb0ZyYW1lUmVh
ZFJlZmVyZW5jZSwgTWFjaFNlbmRSaWdodCwgV2ViQ29yZTo6SW50U2l6ZT47CiAgICAgQnVmZmVy
IGJ1ZmZlcjsKIApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVy
IHsKIHB1YmxpYzoKICAgICBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyKCk7CiAKLSAgICBzdGQ6Om9w
dGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IHdyaXRlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgY29u
c3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNo
YXJlZFZpZGVvRnJhbWU+IHdyaXRlKFdlYkNvcmU6OlZpZGVvRnJhbWUmLCBjb25zdCBGdW5jdGlv
bjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9G
cmFtZTo6QnVmZmVyPiB3cml0ZUJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCBjb25zdCBGdW5jdGlv
bjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYsIGJvb2wgY2FuU2VuZElPU3VyZmFjZSA9IHRydWUpOwog
I2lmIFVTRShMSUJXRUJSVEMpCiAgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpC
dWZmZXI+IHdyaXRlQnVmZmVyKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0
aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBhbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CiAgICAgYm9vbCBwcmVwYXJlV3JpdGluZyhj
b25zdCBXZWJDb3JlOjpTaGFyZWRWaWRlb0ZyYW1lSW5mbyYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
SVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJik+Jik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6
OkJ1ZmZlcj4gd3JpdGVCdWZmZXIoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlv
bjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9G
cmFtZTo6QnVmZmVyPiB3cml0ZUJ1ZmZlcihXZWJDb3JlOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVu
Y3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKICNpZiBVU0UoTElCV0VCUlRDKQogICAgIHN0
ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3cml0ZUJ1ZmZlcih3ZWJydGM6
OlZpZGVvRnJhbWVCdWZmZXImLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+
JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcAppbmRleCA3NjRlYzBkNWY3N2JkM2Vl
MDUyNDUwMzg3ZTRmODFkZWY2ZDZhYWU5Li5mZmJmYTMxZmVhMGQyMThjOGNiNTUwNzQ1OTQxMjQ3
NWQyNjhmNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKQEAgLTE1OSwxMSArMTU5LDEw
IEBAIHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVvRnJhbWVBdmFpbGFibGUo
UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdl
YlJUQywgIlVuYWJsZSB0byBmaW5kIHNvdXJjZSAlbGx1IGZvciB2aWRlb0ZyYW1lQXZhaWxhYmxl
IiwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBh
dXRvIHZpZGVvRnJhbWVTaXplID0gdmlkZW9GcmFtZS0+c2l6ZSgpOwotICAgIGl0ZXJhdG9yLT52
YWx1ZS0+dmlkZW9GcmFtZUF2YWlsYWJsZShXVEZNb3ZlKHZpZGVvRnJhbWUpLCB2aWRlb0ZyYW1l
U2l6ZSwgbWV0YWRhdGEpOworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3RlVmlkZW9GcmFtZUF2
YWlsYWJsZShXVEZNb3ZlKHZpZGVvRnJhbWUpLCBtZXRhZGF0YSk7CiB9CiAKLXZvaWQgUmVtb3Rl
Q2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVvRnJhbWVBdmFpbGFibGVDVihSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4m
JiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRp
b24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBXZWJDb3JlOjpW
aWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlcjo6dmlkZW9GcmFtZUF2YWlsYWJsZUNWKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVy
LCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwg
TWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgQVNTRVJUKCFXVEY6OmlzTWFpblJ1bkxvb3AoKSk7CiAgICAg
YXV0byBpdGVyYXRvciA9IG1fdmlkZW9Tb3VyY2VzLmZpbmQoaWRlbnRpZmllcik7CkBAIC0xNzMs
OCArMTcyLDcgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9GcmFtZUF2
YWlsYWJsZUNWKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGkKICAgICB9CiAKICAgICBhdXRvIHZp
ZGVvRnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lLCBtaXJyb3Jl
ZCwgcm90YXRpb24sIFdURk1vdmUocGl4ZWxCdWZmZXIpKTsKLSAgICBhdXRvIHNpemUgPSB2aWRl
b0ZyYW1lLT5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb0Zy
YW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUuZ2V0KCksIHsgc3RhdGljX2Nhc3Q8aW50PihzaXplLndp
ZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KCkpIH0sIG1ldGFkYXRhKTsKKyAg
ICBpdGVyYXRvci0+dmFsdWUtPnJlbW90ZVZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZS5n
ZXQoKSwgbWV0YWRhdGEpOwogfQogCiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6UmVtb3Rl
QXVkaW86OlJlbW90ZUF1ZGlvKFJlZjxSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlPiYmIHNvdXJj
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKaW5kZXggM2VjOTJiNWRlMDg4NWQyNzM1YjEyYzE4NjQ2
ODcxZWUwZjhmYWIzYS4uNWUzZjgzNDA3NjhiYmU4YTljYjg5YzQ4MjdhMzJhOTE3ZTkzODdkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRl
bnRpZmllciwgTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAgICAgdm9pZCB2
aWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
LCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMmJiwgV2ViQ29yZTo6VmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSk7CiAgICAgLy8gRklYTUU6IFdpbGwgYmUgcmVtb3ZlZCBvbmNlIFJlbW90
ZVZpZGVvRnJhbWVQcm94eSBwcm92aWRlcnMgYXJlIHRoZSBvbmx5IG9uZXMgc2VuZGluZyBkYXRh
LgotICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZUNWKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiwgV2ViQ29yZTo6
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSwgV2Vi
Q29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxh
YmxlQ1YoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiYmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiwgYm9vbCBt
aXJyb3JlZCwgTWVkaWFUaW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKIAog
ICAgIHZvaWQgc2V0Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDcxYjM0NzA4NTMyNjMwYWM3ZmEzMWZh
YTdkYmYxZDIzYjM1MTA4ZmIuLmU1Y2RmYzI1M2Y0MTMxYWEwZGY1NzFhMmY0NmJlNDNmYmYyNTFh
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0
dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI2LDcg
KzI2LDcgQEAKIG1lc3NhZ2VzIC0+IFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgewogICAgIEF1ZGlvU3RvcmFnZUNoYW5nZWQoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFn
ZUhhbmRsZSwgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1
aW50NjRfdCBudW1iZXJPZkZyYW1lcywgSVBDOjpTZW1hcGhvcmUgY2FwdHVyZVNlbWFwaG9yZSwg
TWVkaWFUaW1lIG1lZGlhVGltZSwgc2l6ZV90IGZyYW1lQ2h1bmtTaXplKTsKICAgICBWaWRlb0Zy
YW1lQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBX
ZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBzYW1wbGUsIHN0cnVjdCBX
ZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQotICAgIFZpZGVvRnJhbWVB
dmFpbGFibGVDVihXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFk
YXRhKQorICAgIFZpZGVvRnJhbWVBdmFpbGFibGVDVihXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlSWRlbnRpZmllciBpZCwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVy
LCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwg
TWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIHN0cnVjdCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGlt
ZU1ldGFkYXRhIG1ldGFkYXRhKQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IGU2ZWIz
MmI5ZjM5ODBjYThhNDQ4NDJhNWJlZjUxNmFkYjQzZGEzZDUuLmQxYjg1OTk1ZjM5ZDZhODRjZDQx
Yjc0MDdlODQ2MjMzOWYwNTg3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNTgsNyArNTgs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhcHR1cmVTdG9wcGVkKGJvb2wgZGlkRmFpbCk7CiAK
LSAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoV2ViQ29yZTo6VmlkZW9GcmFtZSYgZnJhbWUs
IFdlYkNvcmU6OkludFNpemUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRh
dGEpIHsgdmlkZW9TYW1wbGVBdmFpbGFibGUoZnJhbWUsIG1ldGFkYXRhKTsgfQorICAgIHZvaWQg
cmVtb3RlVmlkZW9GcmFtZUF2YWlsYWJsZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiBmcmFtZSwgV2Vi
Q29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgeyB2aWRlb0ZyYW1lQXZhaWxh
YmxlKGZyYW1lLCBtZXRhZGF0YSk7IH0KICAgICB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZChib29s
IHZhbHVlLCBib29sIGludGVycnVwdGVkKTsKIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1
Y2NlZWRlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJik7Cg==
</data>
<flag name="commit-queue"
          id="483169"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455241</attachid>
            <date>2022-03-21 06:43:30 -0700</date>
            <delta_ts>2022-03-21 08:10:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237884-20220321144324.patch</filename>
            <type>text/plain</type>
            <size>181524</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwOTYzNDY1YjQzZGFi
MWFlNjkyYjg2YWRmODMzYjliN2FhMmZhZi4uMzgzMmQ4MmI2MWI5M2ZhZTZmNjYxZmRlNGVmZDlj
ZmE5YjBlZWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlIHRvIFZp
ZGVvRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yaW5nIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC0gUmVuYW1pbmcgb2Yg
VmlkZW9TYW1wbGVPYnNlcnZlciB0byBWaWRlb0ZyYW1lT2JzZXJ2ZXIsIHZpZGVvU2FtcGxlQXZh
aWxhYmxlIHRvIHZpZGVvRnJhbWVBdmFpbGFibGUuLi4KKyAgICAgICAgLSB2aWRlb0ZyYW1lQXZh
aWxhYmxlIHRha2VzIGEgVmlkZW9GcmFtZSBpbnN0ZWFkIG9mIGEgTWVkaWFTYW1wbGUKKyAgICAg
ICAgLSBVc2UgVmlkZW9GcmFtZTo6cm90YXRpb24gYW5kIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQu
CisgICAgICAgIC0gVXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uIGluc3RlYWQgb2YgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24KKyAgICAgICAgVXBkYXRlIGNvZGUgYWNjb3JkaW5nIHRoaXMgcmVu
YW1pbmcuCisgICAgICAgIE1vdmUgZnJvbSB1c2luZyBNZWRpYVNhbXBsZSB0byBWaWRlb0ZyYW1l
IHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAgIFByZXBhcmUgZm9yIHJlbW92YWwgb2Yg
TWVkaWFTYW1wbGUgYXMgcGFyZW50IGNsYXNzIG9mIFZpZGVvRnJhbWUuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
SW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9GcmFtZUNWLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b0ZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDIyLTAzLTIxICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0IGJlIGNhbGxlZCBpbiBzZXRSYW5nZVRleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODE4N2Y1MGI2MzM4NGMxZDA0ZDliZTNlZjM2NGUzNmQzMWYzMTljNy4uNDc3
NzlkYzZjNDFhNTEyN2Y2ZjlmMDM0NjZiOWZkMDQyNDczOTdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwzOSBAQAogMjAyMi0wMy0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
KyAgICAgICAgTW92ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZSB0byBWaWRlb0ZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGZyb20gdXNpbmcgTWVkaWFTYW1wbGUgdG8g
VmlkZW9GcmFtZSBkaXJlY3RseS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRW
aWRlb0ZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCisyMDIyLTAzLTE4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgdXNlIG9mIE1lZGlhU2FtcGxlQVZG
T2JqQyBmcm9tIFdlYlJUQyBwaXBlbGluZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzcwNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA0MjUz
OTE+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDhhMGQ0ZTQ0
MDkxM2Y1YzhiZmIyMWIxMjE2YTA0NzE5NThiM2U1ZDEuLjkxNWFlOGNkZjg4NjYzODczNDkwNjFi
NzM1MjlmNTc2MGRiZDRlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
azo6U291cmNlOjpjYXB0dXJlQ2FudmFzKCkKIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEg
bWV0YWRhdGE7CiAgICAgbWV0YWRhdGEuY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KS5zZWNvbmRzU2luY2VFcG9jaCgpOwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCp2aWRlb0Zy
YW1lLCBtZXRhZGF0YSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0
YWRhdGEpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2s6OmNsb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMjZkOTJlZDhiN2E5NzI3
ZDg5MTQ5ZmY0NjYzZDM0YzMyOTRhMTAzMC4uNzc4YjdkYTFlZGZjMTEwMjk5MWQzY2M3NGY3MGZm
OTYzNDI2YjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNywxMCArMTM3LDYgQEAKICNpbmNs
dWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgotI2VuZGlmCi0KICNpZiAhVVNFKEFOR0xFKQog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaWYgVVNFKE9QRU5HTF9FUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDY3NDYxOWZhNjIyZWFjOTk1
OGY1ZjQwOTU5NWM3ZWU4MDcxNDI2MGEuLjk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5MWM0OWIy
ZGUwMGEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMTE3LDkg
KzExNyw5IEBAIHB1YmxpYzoKICAgICAgICAgUmlnaHQgPSA5MCwKICAgICAgICAgTGVmdCA9IDI3
MCwKICAgICB9OwotICAgIHZpcnR1YWwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aWRl
b01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90
IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggZDViYzczMzZhZmJjMjBlZTE3NDhhZmZhYWRhMTIx
NDlmZWJlM2NmNS4uZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBN
ZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcHJlc2VudGF0aW9uVGltZTsKIH0KIAotTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gVmlk
ZW9GcmFtZTo6dmlkZW9Sb3RhdGlvbigpIGNvbnN0CitWaWRlb0ZyYW1lOjpSb3RhdGlvbiBWaWRl
b0ZyYW1lOjpyb3RhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcm90YXRpb247CiB9CiAK
LWJvb2wgVmlkZW9GcmFtZTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0Citib29sIFZpZGVvRnJhbWU6
OmlzTWlycm9yZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzTWlycm9yZWQ7CiB9CkBAIC0x
MzAsNyArMTMwLDcgQEAgUmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZTo6YXNWaWRlb0Zy
YW1lQ1YoKQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIHZpZGVvTWly
cm9yZWQoKSwgdmlkZW9Sb3RhdGlvbigpLCBidWZmZXIpOworICAgIHJldHVybiBWaWRlb0ZyYW1l
Q1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIGlzTWlycm9yZWQoKSwgcm90YXRpb24oKSwg
YnVmZmVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKaW5k
ZXggYWJhNGI2Y2NiOTJhMjdiMjQzNzI4NzRkMTkxMTI4OTUxYjY0MTk5Ny4uOGFhNDJlZWZmYWFm
NmFiNGQzN2U5YTg1NmEyNDU5N2NjYmE1NzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVv
RnJhbWUuaApAQCAtNDIsMTAgKzQyLDEyIEBAIGNsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVk
aWFTYW1wbGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CiAK
KyAgICB1c2luZyBSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOworCiAgICAg
Ly8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgogICAgIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKICAgICAvLyBGSVhNRTogV2hlbiBWaWRl
b0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgogICAg
IFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxh
dGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggODhmZjI3NWE0ODJjODM0MDY5MjNjOTQ4OWNlYzhh
NzRjNjVjYTkwNS4uNzk3OTg4NzY5OTlhNWYzZmMyMDEzYTI3YzNhOGY0OGFkY2MyYjgyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMjUsOCAr
MjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgVmlkZW9GcmFtZTsKIAog
Y2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHsKIHB1YmxpYzoKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVE
aXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpID0gMDsK
QEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVl
U2FtcGxlKE1lZGlhU2FtcGxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckVucXVldWVk
U2FtcGxlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9G
cmFtZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygpID0gMDsKIAog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApp
bmRleCBhNjZiMjczNWJjZWFlZGVjMzU2ZWM3ZjA4Mzc0MjM1NjU0ZWRiMjNkLi40OTQ2NTAzYzky
ZTIwMjY3YzZjNzk3MzQ4ZjlhNWQ5NTRlYTJkZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFJldGFpblB0
cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4mJiwgQ2xpZW50Jik7CiAgICAgfkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKKyAgICB2b2lkIGVucXVldWVCdWZmZXIoQ1ZQaXhl
bEJ1ZmZlclJlZiwgTWVkaWFUaW1lKTsKKwogICAgIC8vIEFQSSB1c2VkIGJ5IFdlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIKICAgICB2b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdl
KCk7CiAgICAgdm9pZCBsYXllckVycm9yRGlkQ2hhbmdlKCk7CkBAIC01NiwxMiArNTgsMTIgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm1MYXllciogZGlzcGxheUxheWVyKCk7CiAKLSAgICBQbGF0
Zm9ybUxheWVyKiByb290TGF5ZXIoKSBmaW5hbDsKLQogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBk
YXRlUm9vdExheWVyIHsgTm8sIFllcyB9OwotICAgIHZvaWQgdXBkYXRlUm9vdExheWVyQm91bmRz
QW5kUG9zaXRpb24oQ0dSZWN0LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgU2hvdWxkVXBk
YXRlUm9vdExheWVyKTsKKyAgICB2b2lkIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcik7CiAg
ICAgdm9pZCB1cGRhdGVSb290TGF5ZXJBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0p
OwogCisgICAgLy8gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorICAgIFBsYXRmb3JtTGF5ZXIq
IHJvb3RMYXllcigpIGZpbmFsOwogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5
ZXIsIEludFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBkaWRTdWNjZWVkKT4mJikg
ZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlm
aWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpIGZpbmFsIHsgbV9sb2dJZGVudGlmaWVyID0gV1RG
TW92ZShsb2dJZGVudGlmaWVyKTsgfQpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RM
YXllcikgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRy
YW5zZm9ybSkgIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCb3Vu
ZHNBbmRQb3NpdGlvbihDR1JlY3QsIFZpZGVvRnJhbWU6OlJvdGF0aW9uKSBmaW5hbDsKIAogICAg
IHZvaWQgZmx1c2goKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5h
bDsKQEAgLTc5LDE3ICs4MSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5KCkgZmluYWw7CiAg
ICAgdm9pZCBwYXVzZSgpIGZpbmFsOwogCi0gICAgdm9pZCBlbnF1ZXVlKENWUGl4ZWxCdWZmZXJS
ZWYsIE1lZGlhVGltZSk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJikgZmlu
YWw7Ci0gICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpIGZpbmFsOworICAgIHZvaWQgZW5x
dWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJWaWRlb0Zy
YW1lcygpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVuZGVyUG9saWN5KFJlbmRlclBvbGljeSkgZmlu
YWw7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1
ZSgpOwotICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmKTsKKwor
ICAgIHZvaWQgcmVtb3ZlT2xkVmlkZW9GcmFtZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CisgICAgdm9p
ZCBhZGRWaWRlb0ZyYW1lVG9QZW5kaW5nUXVldWUoUmVmPFZpZGVvRnJhbWU+JiYpOwogICAgIHZv
aWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgIHZvaWQg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgc2V0Um9vdExheWVy
Qm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOwor
ICAgIHZvaWQgc2V0Um9vdExheWVyQm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgVmlkZW9GcmFt
ZTo6Um90YXRpb24pOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBvbkly
cmVndWxhckZyYW1lUmF0ZU5vdGlmaWNhdGlvbihNb25vdG9uaWNUaW1lIGZyYW1lVGltZSwgTW9u
b3RvbmljVGltZSBsYXN0RnJhbWVUaW1lKTsKQEAgLTEwNCw4ICsxMDUsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcHJvY2Vzc2luZ1F1ZXVlOwogCiAgICAgLy8gT25seSBh
Y2Nlc3NlZCB0aHJvdWdoIG1fcHJvY2Vzc2luZ1F1ZXVlIG9yIGlmIG1fcHJvY2Vzc2luZ1F1ZXVl
IGlzIG51bGwuCi0gICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlh
U2FtcGxlPj47Ci0gICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVl
dWU7CisgICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPFZpZGVvRnJhbWU+
PjsKKyAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlOwogICAg
IAogICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IDFjY2Rk
ZmE4ODE1YTRmNzY0ZTI0OTFjNzA0NzViOGQyMGJkYzQ5MDQuLjQ1OGM1YTM5YWYwNWQ4YTBhMGUw
YmQ1NWMwYmZiMTAxYTEzZGQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMSw3ICszMSw2IEBACiAj
aW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiSW50U2l6ZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGll
cy5oIgogCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aD4KQEAgLTQyLDggKzQxLDkgQEAKICNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9N
ZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0
aW9uU1BJLmg+Ci0KKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtMTk4LDcgKzE5OCw3IEBAIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp+TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQogCiAgICAgW21fc3RhdHVzQ2hhbmdl
TGlzdGVuZXIgc3RvcF07CiAKLSAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7
CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFyKCk7CiAKICAgICBbbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaF07CkBAIC0yNjUsMjggKzI2NSwyOCBAQCB2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZp
bmVUcmFuc2Zvcm0gdHJhbgogICAgIH0pOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZpZGVvRnJh
bWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBv
c2l0aW9uKGJvdW5kcywgcm90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcjo6Tm8pOwogfQog
Ci12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJCb3VuZHNB
bmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24pCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJC
b3VuZHNBbmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24pCiB7CiAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IHsgYm91bmRzLnNpemUud2lkdGggLyAy
LCBib3VuZHMuc2l6ZS5oZWlnaHQgLyAyfTsKLSAgICBpZiAocm90YXRpb24gPT0gTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0IHx8IHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0KQorICAgIGlmIChyb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6UmlnaHQgfHwgcm90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQpCiAgICAg
ICAgIHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAog
ICAgIG1fcm9vdExheWVyLmdldCgpLnBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgbV9yb290TGF5
ZXIuZ2V0KCkuYm91bmRzID0gYm91bmRzOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRz
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgU2hvdWxkVXBkYXRlUm9vdExh
eWVyIHNob3VsZFVwZGF0ZVJvb3RMYXllcikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBTaG91bGRVcGRhdGVSb290TGF5ZXIgc2hvdWxk
VXBkYXRlUm9vdExheWVyKQogewogICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CiAgICAg
ICAgIGlmIChzaG91bGRVcGRhdGVSb290TGF5ZXIgPT0gU2hvdWxkVXBkYXRlUm9vdExheWVyOjpZ
ZXMpCiAgICAgICAgICAgICBzZXRSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbnMoYm91bmRzLCBy
b3RhdGlvbik7CiAKLSAgICAgICAgaWYgKHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpSaWdodCB8fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdCkKKyAgICAgICAgaWYgKHJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdo
dCB8fCByb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCkKICAgICAgICAgICAg
IHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAogICAg
ICAgICBDR1BvaW50IHBvc2l0aW9uID0geyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5z
aXplLmhlaWdodCAvIDJ9OwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQogCiBzdGF0aWMgY29uc3QgZG91
YmxlIHJlbmRlcmVyTGF0ZW5jeSA9IDAuMDI7CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECkBAIC0zMjEsMjIgKzMyMSwxNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZSA9
IFJlZiB7IHNhbXBsZSB9XSB7CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCB2aWRlb0ZyYW1lID0gUmVmIHsgdmlkZW9GcmFtZSB9XSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0p
IHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlICgle3B1YmxpY31zKSBub3QgcmVhZHkgZm9yIG1vcmUg
bWVkaWEgZGF0YSIsIG1fbG9nSWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7CisgICAgICAgICAgICBhZGRWaWRlb0Zy
YW1lVG9QZW5kaW5nUXVldWUoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiAgICAgICAgICAgICByZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihzYW1wbGUpOworICAg
ICAgICBlbnF1ZXVlQnVmZmVyKHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUt
PnByZXNlbnRhdGlvblRpbWUoKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
LXsKLSAgICBlbnF1ZXVlKHNhbXBsZS5waXhlbEJ1ZmZlcigpLCBzYW1wbGUucHJlc2VudGF0aW9u
VGltZSgpKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRp
YXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQogewogICAgIENGQXJyYXlSZWYg
YXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50
c0FycmF5KHNhbXBsZUJ1ZmZlciwgdHJ1ZSk7CkBAIC0zNDYsNyArMzQxLDcgQEAgc3RhdGljIHZv
aWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRpYXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyKQogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTM2MSw3ICsz
NTYsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlKENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIE1lZGlhVAogICAgIGNvbnN0ZXhwciBzaXplX3QgZnJh
bWVDb3VudFBlckxvZyA9IDE4MDA7IC8vIGxvZyBldmVyeSBtaW51dGUgYXQgMzAgZnBzCiAgICAg
aWYgKCEobV9mcmFtZVJhdGVNb25pdG9yLmZyYW1lQ291bnQoKSAlIGZyYW1lQ291bnRQZXJMb2cp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBtZXRyaWNzID0gW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIHZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzXSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdl
YlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICgle3B1YmxpY31zKSBtZXRyaWNz
LCB0b3RhbD0lbHUsIGRyb3BwZWQ9JWx1LCBjb3JydXB0ZWQ9JWx1LCBkaXNwbGF5LWNvbXBvc2l0
ZWQ9JWx1LCBub24tZGlzcGxheS1jb21wb3NpdGVkPSVsdSAocGVuZGluZz0lbHUpIiwgbV9sb2dJ
ZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIG1ldHJpY3MudG90YWxOdW1iZXJPZlZpZGVvRnJhbWVz
LCBtZXRyaWNzLm51bWJlck9mRHJvcHBlZFZpZGVvRnJhbWVzLCBtZXRyaWNzLm51bWJlck9mQ29y
cnVwdGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEaXNwbGF5Q29tcG9zaXRlZFZpZGVv
RnJhbWVzLCBtZXRyaWNzLm51bWJlck9mTm9uRGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcywg
bV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKCV7cHVibGljfXMpIG1l
dHJpY3MsIHRvdGFsPSVsdSwgZHJvcHBlZD0lbHUsIGNvcnJ1cHRlZD0lbHUsIGRpc3BsYXktY29t
cG9zaXRlZD0lbHUsIG5vbi1kaXNwbGF5LWNvbXBvc2l0ZWQ9JWx1IChwZW5kaW5nPSVsdSkiLCBt
X2xvZ0lkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgbWV0cmljcy50b3RhbE51bWJlck9mVmlkZW9G
cmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEcm9wcGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVy
T2ZDb3JydXB0ZWRWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJPZkRpc3BsYXlDb21wb3NpdGVk
VmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZOb25EaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJh
bWVzLCBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuc2l6ZSgpKTsKICAgICB9CiAgICAgbV9mcmFt
ZVJhdGVNb25pdG9yLnVwZGF0ZSgpOwogI2VuZGlmCkBAIC0zNzMsNDQgKzM2OCw0NCBAQCB2b2lk
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpvbklycmVndWxhckZyYW1lUmF0ZU5vdGlm
aWNhdGlvbihNb25vdG9uaWNUaQogICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lVGltZSA9IGZy
YW1lVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIGxhc3RGcmFtZVRpbWUgPSBsYXN0
RnJhbWVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgb2JzZXJ2ZWRGcmFtZVJhdGUg
PSBtX2ZyYW1lUmF0ZU1vbml0b3Iub2JzZXJ2ZWRGcmFtZVJhdGUoKSwgZnJhbWVDb3VudCA9IG1f
ZnJhbWVSYXRlTW9uaXRvci5mcmFtZUNvdW50KCksIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIgKCV7cHVibGljfXMpIGF0ICVmLCBwcmV2aW91cyBmcmFtZSB3YXMg
YXQgJWYsIG9ic2VydmVkIGZyYW1lIHJhdGUgaXMgJWYsIGRlbGF5IHNpbmNlIGxhc3QgZnJhbWUg
aXMgJWYgbXMsIGZyYW1lIGNvdW50IGlzICVsdSIsIHdlYWtUaGlzLT5tX2xvZ0lkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSwgZnJhbWVUaW1lLCBsYXN0RnJhbWVUaW1lLCBvYnNlcnZlZEZyYW1lUmF0
ZSwgKGZyYW1lVGltZSAtIGxhc3RGcmFtZVRpbWUpICogMTAwMCwgZnJhbWVDb3VudCk7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpl
bnF1ZXVlVmlkZW9GcmFtZSAoJXtwdWJsaWN9cykgYXQgJWYsIHByZXZpb3VzIGZyYW1lIHdhcyBh
dCAlZiwgb2JzZXJ2ZWQgZnJhbWUgcmF0ZSBpcyAlZiwgZGVsYXkgc2luY2UgbGFzdCBmcmFtZSBp
cyAlZiBtcywgZnJhbWUgY291bnQgaXMgJWx1Iiwgd2Vha1RoaXMtPm1fbG9nSWRlbnRpZmllci51
dGY4KCkuZGF0YSgpLCBmcmFtZVRpbWUsIGxhc3RGcmFtZVRpbWUsIG9ic2VydmVkRnJhbWVSYXRl
LCAoZnJhbWVUaW1lIC0gbGFzdEZyYW1lVGltZSkgKiAxMDAwLCBmcmFtZUNvdW50KTsKICAgICB9
KTsKIH0KICNlbmRpZgogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZW1v
dmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZW1vdmVPbGRWaWRlb0ZyYW1lc0Zyb21QZW5kaW5nUXVldWUoKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKG1fcGVuZGluZ1ZpZGVvU2FtcGxl
UXVldWUuaXNFbXB0eSgpKQorICAgIGlmIChtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9yZW5kZXJQb2xpY3kgPT0gUmVuZGVy
UG9saWN5OjpJbW1lZGlhdGVseSkgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KTsKLSAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
Zmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9G
cmFtZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuZmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOwogICAg
ICAgICBpZiAocHJlc2VudGF0aW9uVGltZS5pc1ZhbGlkKCkgJiYgcHJlc2VudGF0aW9uVGltZSA+
IG5vdykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1
ZXVlLnJlbW92ZUZpcnN0KCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5yZW1v
dmVGaXJzdCgpOwogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFZpZGVvRnJhbWVUb1BlbmRpbmdRdWV1ZShS
ZWY8VmlkZW9GcmFtZT4mJiB2aWRlb0ZyYW1lKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKTsKLSAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChzYW1wbGUpOworICAgIHJlbW92ZU9sZFZpZGVv
RnJhbWVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5h
cHBlbmQoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQogewogICAgIG1fcHJvY2Vzc2luZ1F1
ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
IH0pOwogfQogCkBAIC00MjQsMTMgKzQxOSwxMyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKICAg
ICAgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgICAgICBb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogCi0g
ICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9w
ZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBlbnF1
ZXVlU2FtcGxlQnVmZmVyKHNhbXBsZSk7CisgICAgICAgICAgICAgICAgYXV0byB2aWRlb0ZyYW1l
ID0gbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAg
IGVucXVldWVCdWZmZXIodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uVGltZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAyY2MxN2FkZjhkN2NiNGExZjNlM2M2NTU1MjY0NGRi
NzZjZjZlNTFiLi4xZDkzMWM2ZjlkNDVlZjMwODEwZWEzZjEzZDgwMDIyZWYxMTUzMDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3NTQsNyArMjc1NCw3IEBAIFJlZlB0cjxWaWRlb0Zy
YW1lPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb0ZyYW1lRm9yQ3Vy
cmVudFRpbWUoCiAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQ
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAg
cmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9
KTsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCA1YmU3MDgzZjU0ZjA4ODMzYTRhZmFmNGRlNjhiMTg1NzZhN2NiODRiLi45Yzkx
M2U0ZjQzZjczMDM4ZThjM2IwZDRjMjZjNWJhNTQ5NDJhNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC03NDcsNyArNzQ3LDcgQEAgUmVmUHRyPFZpZGVvRnJhbWU+IE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZW9GcmFtZUZvckN1cnJlbnRUaW0KICAg
ICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAgcmV0dXJuIFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9KTsKIH0KIAog
RGVzdGluYXRpb25Db2xvclNwYWNlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6Y29sb3JTcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDkyZGFkMzA5ZmJj
YWY5NDE2M2M3MzkwZTljZmRiNGMwNzY0MDI1ZmEuLjBlNzQxODdjMTMwZDVkYzZmZWNlZGY3ZjY3
ZThiMTkxMGJmMmMzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yOCw5ICsyOCw5
IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
IGZpbmFsCiAgICAgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAgICAgLCBw
cml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW9GcmFtZU9ic2VydmVyCiAgICAgLCBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpDbGllbnQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiB7CkBAIC0xMzYsOSArMTM2
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmx1c2hSZW5kZXJlcnMoKTsKIAotICAgIHZvaWQg
cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7Ci0gICAgdm9pZCBlbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmKTsK
LSAgICB2b2lkIHJlZW5xdWV1ZUN1cnJlbnRWaWRlb1NhbXBsZUlmTmVlZGVkKCk7CisgICAgdm9p
ZCBwcm9jZXNzTmV3VmlkZW9GcmFtZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7Cisg
ICAgdm9pZCByZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAKICAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMjEx
LDggKzIxMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKIAotICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgotICAgIHZvaWQgdmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAg
ICAvLyBSZWFsdGltZU1lZGlhU291Y2U6OlZpZGVvRnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlk
ZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CiAKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIAog
ICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7Ci0gICAgICAgIFJlZlB0cjxNZWRp
YVNhbXBsZT4gbWVkaWFTYW1wbGU7CisgICAgICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiB2aWRlb0Zy
YW1lOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gcGl4
ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKICAgICBDdXJyZW50RnJhbWVQYWludGVyIG1faW1h
Z2VQYWludGVyOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gV3JpdHRlbiBv
biBtYWluIHRocmVhZCwgcmVhZCBvbiBzYW1wbGUgdGhyZWFkLgogICAgIGJvb2wgbV9jYW5FbnF1
ZXVlRGlzcGxheUxheWVyIHsgZmFsc2UgfTsKICAgICAvLyBVc2VkIG9uIHNhbXBsZSB0aHJlYWQu
Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBt
X3ZpZGVvUm90YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wg
bV92aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9n
Z2VyOwpAQCAtMjcyLDggKzI3Miw4IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8V2ViUm9v
dFNhbXBsZUJ1ZmZlckJvdW5kc0NoYW5nZUxpc3RlbmVyPiBtX2JvdW5kc0NoYW5nZUxpc3RlbmVy
OwogCi0gICAgTG9jayBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2s7Ci0gICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBtX2N1cnJlbnRWaWRlb1NhbXBsZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY3VycmVu
dFZpZGVvU2FtcGxlTG9jayk7CisgICAgTG9jayBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jazsKKyAg
ICBSZWZQdHI8VmlkZW9GcmFtZT4gbV9jdXJyZW50VmlkZW9GcmFtZSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fY3VycmVudFZpZGVvRnJhbWVMb2NrKTsKIAogICAgIGJvb2wgbV9wbGF5aW5nIHsgZmFs
c2UgfTsKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IDRkZDgxYmFhZjk1ODkwNWU2YWI5NjkyMWZiZmRjZDU3ZGQwZDIwNDMuLmU0NjQ2
ZDZiM2RjNTg2NzkxYjViZmIxZDNkYWNhMTQ1YzFkZDJhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EuaCIKICNpbXBvcnQgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2ltcG9ydCAi
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMTYwLDcgKzE1OSw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQygpCiAgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKIAogICAgIGlmIChtX2FjdGl2ZVZpZGVvVHJhY2spCi0gICAgICAgIG1fYWN0aXZlVmlk
ZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICAgICAgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJj
ZSgpLnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAKICAgICBbbV9ib3VuZHNDaGFu
Z2VMaXN0ZW5lciBpbnZhbGlkYXRlXTsKIApAQCAtMjI5LDI5ICsyMjgsMjkgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1
cHBvcnRzVHlwZShjb24KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTYW1wbGVCdWZm
ZXIgTWV0aG9kcwogCi1zdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNm
b3JtYXRpb25NYXRyaXgoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3N0YXRpYyBpbmxpbmUgQ0dBZmZp
bmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChWaWRlb0ZyYW1lJiB2aWRlb0Zy
YW1lKQogewotICAgIGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAg
YXV0byBzaXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CiAgICAgc2l6ZV90IHdp
ZHRoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpOwogICAgIHNpemVfdCBoZWln
aHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUuaGVpZ2h0KCkpOwogICAgIGlmICghd2lkdGgg
fHwgIWhlaWdodCkKICAgICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CiAK
LSAgICBhdXRvIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24o
c3RhdGljX2Nhc3Q8aW50PihzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAxODApOwot
ICAgIGlmIChzYW1wbGUudmlkZW9NaXJyb3JlZCgpKQorICAgIGF1dG8gdmlkZW9UcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxpbnQ+KHZpZGVvRnJh
bWUucm90YXRpb24oKSkgKiBNX1BJIC8gMTgwKTsKKyAgICBpZiAodmlkZW9GcmFtZS5pc01pcnJv
cmVkKCkpCiAgICAgICAgIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh2
aWRlb1RyYW5zZm9ybSwgLTEsIDEpOwogCiAgICAgcmV0dXJuIHZpZGVvVHJhbnNmb3JtOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRh
ZGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBwcm9jZXNzTmV3VmlkZW9TYW1wbGUo
c2FtcGxlLCBtZXRhZGF0YSwgcHJlc2VudGF0aW9uVGltZSk7Ci0gICAgZW5xdWV1ZVZpZGVvU2Ft
cGxlKHNhbXBsZSk7CisgICAgcHJvY2Vzc05ld1ZpZGVvRnJhbWUodmlkZW9GcmFtZSwgbWV0YWRh
dGEsIHByZXNlbnRhdGlvblRpbWUpOworICAgIGVucXVldWVWaWRlb0ZyYW1lKHZpZGVvRnJhbWUp
OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSkKIHsKICAgICBpZiAoIW1faXNQYWdlVmlzaWJsZSB8fCAhbV9pc1Zpc2libGVJblZpZXdQ
b3J0KQogICAgICAgICByZXR1cm47CkBAIC0yNjMsNTIgKzI2Miw1MiBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU2Ft
cGxlJiBzYW1wbAogICAgIGlmICghbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyIHx8ICFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciB8fCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFp
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSAh
PSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWly
cm9yZWQpIHsKLSAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24o
KTsKLSAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVvTWlycm9yZWQoKTsKKyAg
ICBpZiAodmlkZW9GcmFtZS5yb3RhdGlvbigpICE9IG1fdmlkZW9Sb3RhdGlvbiB8fCB2aWRlb0Zy
YW1lLmlzTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQpIHsKKyAgICAgICAgbV92aWRlb1Jv
dGF0aW9uID0gdmlkZW9GcmFtZS5yb3RhdGlvbigpOworICAgICAgICBtX3ZpZGVvTWlycm9yZWQg
PSB2aWRlb0ZyYW1lLmlzTWlycm9yZWQoKTsKICAgICAgICAgbV9zaG91bGRVcGRhdGVEaXNwbGF5
TGF5ZXIgPSB0cnVlOwogICAgIH0KICAgICBpZiAobV9zaG91bGRVcGRhdGVEaXNwbGF5TGF5ZXIp
IHsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUFmZmluZVRyYW5z
Zm9ybSh2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSkpOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQWZmaW5lVHJhbnNmb3JtKHZpZGVvVHJhbnNmb3Jt
YXRpb25NYXRyaXgodmlkZW9GcmFtZSkpOwogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+dXBkYXRlQm91bmRzQW5kUG9zaXRpb24obV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PnJvb3RMYXllcigpLmJvdW5kcywgbV92aWRlb1JvdGF0aW9uKTsKICAgICAgICAgbV9zaG91bGRV
cGRhdGVEaXNwbGF5TGF5ZXIgPSBmYWxzZTsKICAgICB9CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShzYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLT5lbnF1ZXVlVmlkZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZW5xdWV1ZUN1cnJlbnRWaWRlb1Nh
bXBsZUlmTmVlZGVkKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpyZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fY3Vy
cmVudFZpZGVvU2FtcGxlTG9jay50cnlMb2NrKCkpCisgICAgaWYgKCFtX2N1cnJlbnRWaWRlb0Zy
YW1lTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
QWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgQWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jayB9OwogCi0gICAgaWYgKCFtX2N1
cnJlbnRWaWRlb1NhbXBsZSAmJiAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYg
KCFtX2N1cnJlbnRWaWRlb0ZyYW1lICYmICFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVmlkZW9TYW1wbGUobV9jdXJyZW50VmlkZW9TYW1w
bGUgPyAqbV9jdXJyZW50VmlkZW9TYW1wbGUgOiAqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
OworICAgIGVucXVldWVWaWRlb0ZyYW1lKG1fY3VycmVudFZpZGVvRnJhbWUgPyAqbV9jdXJyZW50
VmlkZW9GcmFtZSA6ICptX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhLCBTZWNv
bmRzIHByZXNlbnRhdGlvblRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSwgU2Vjb25kcyBwcmVzZW50YXRpb25UaW1lKQog
ewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fY3VycmVudFZpZGVvU2FtcGxlTG9jayB9OwotICAgICAgICAgICAgbV9j
dXJyZW50VmlkZW9TYW1wbGUgPSAmc2FtcGxlOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICBtX2N1cnJlbnRWaWRlb0Zy
YW1lID0gJnZpZGVvRnJhbWU7CiAgICAgICAgIH0KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWVd
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7CisgICAg
ICAgICAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdmlkZW9GcmFtZTsKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vha1RoaXMtPm1fY3VycmVudFZpZGVvU2Ft
cGxlTG9jayB9OwotICAgICAgICAgICAgICAgIHNhbXBsZSA9IFdURk1vdmUod2Vha1RoaXMtPm1f
Y3VycmVudFZpZGVvU2FtcGxlKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vh
a1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICAgICAgdmlkZW9G
cmFtZSA9IFdURk1vdmUod2Vha1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICBpZiAoIXZpZGVvRnJh
bWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB3ZWFrVGhpcy0+cHJv
Y2Vzc05ld1ZpZGVvU2FtcGxlKCpzYW1wbGUsIG1ldGFkYXRhLCBwcmVzZW50YXRpb25UaW1lKTsK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzTmV3VmlkZW9GcmFtZSgqdmlkZW9GcmFtZSwg
bWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTMxNiwxNiArMzE1LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhCiAg
ICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUgfHwgbV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFn
ZSkgewotICAgICAgICBtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSA9ICZzYW1wbGU7CisgICAg
aWYgKCFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lIHx8IG1fZGlzcGxheU1vZGUgIT0gUGF1c2Vk
SW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSA9ICZ2aWRlb0ZyYW1l
OwogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkK
ICAgICAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKICAgICB9CiAKICAgICBtX3ByZXNlbnRh
dGlvblRpbWUgPSBwcmVzZW50YXRpb25UaW1lOwotICAgIG1fdmlkZW9GcmFtZVNpemUgPSBzYW1w
bGUucHJlc2VudGF0aW9uU2l6ZSgpOwotICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpID09
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IHNhbXBsZS52aWRlb1JvdGF0aW9u
KCkgPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIG1fdmlkZW9GcmFt
ZVNpemUgPSB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICBpZiAodmlkZW9GcmFt
ZS5yb3RhdGlvbigpID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHZpZGVvRnJhbWUu
cm90YXRpb24oKSA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAgIG1fdmlk
ZW9GcmFtZVNpemUgPSB7IG1fdmlkZW9GcmFtZVNpemUuaGVpZ2h0KCksIG1fdmlkZW9GcmFtZVNp
emUud2lkdGgoKSB9OwogICAgIG1fc2FtcGxlTWV0YWRhdGEgPSBtZXRhZGF0YTsKICAgICArK21f
c2FtcGxlQ291bnQ7CkBAIC0zNjAsOCArMzU5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBp
ZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmRpZEZhaWwoKSkgewogICAgICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgICAgICBpZiAo
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCi0gICAgICAgICAgICBlbnF1ZXVlVmlkZW9TYW1w
bGUoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICAgICAgaWYgKG1faW1hZ2VQYWlu
dGVyLnZpZGVvRnJhbWUpCisgICAgICAgICAgICBlbnF1ZXVlVmlkZW9GcmFtZSgqbV9pbWFnZVBh
aW50ZXIudmlkZW9GcmFtZSk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiAgICAgfQog
fQpAQCAtNTY5LDcgKzU2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpwbGF5KCkKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAg
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wbGF5KCk7CiAgICAgdXBkYXRlRGlzcGxh
eU1vZGUoKTsKLSAgICByZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpOworICAg
IHJlZW5xdWV1ZUN1cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKTsKIAogICAgIHNjaGVkdWxlRGVm
ZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKQEAgLTY0MSw3
ICs2NDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
UGFnZUlzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKIAogICAgIG1faXNQYWdlVmlzaWJsZSA9IGlz
VmlzaWJsZTsKICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgIHJlZW5xdWV1ZUN1cnJlbnRWaWRl
b1NhbXBsZUlmTmVlZGVkKCk7CisgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJhbWVJZk5lZWRl
ZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlzaWJsZUZvckNhbnZhcyhib29sKQpAQCAtNjgxLDcgKzY4MCw3IEBAIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudFJl
YWR5U3RhdGUoCiAgICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVh
bVByaXZhdGUtPmFjdGl2ZSgpIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+aGFzVHJhY2tzKCkp
CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAK
LSAgICBib29sIHdhaXRpbmdGb3JJbWFnZSA9IGFjdGl2ZVZpZGVvVHJhY2soKSAmJiAhbV9pbWFn
ZVBhaW50ZXIubWVkaWFTYW1wbGU7CisgICAgYm9vbCB3YWl0aW5nRm9ySW1hZ2UgPSBhY3RpdmVW
aWRlb1RyYWNrKCkgJiYgIW1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWU7CiAgICAgaWYgKHdhaXRp
bmdGb3JJbWFnZSAmJiAoIW1faGF2ZVNlZW5NZXRhZGF0YSB8fCBtX3dhaXRpbmdGb3JGaXJzdElt
YWdlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGlu
ZzsKIApAQCAtNzQwLDcgKzczOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpzY2hlZHVsZVJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKICAgICBzY2hlZHVsZURl
ZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBt
X3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKLSAgICAgICAgcmVlbnF1ZXVlQ3VycmVu
dFZpZGVvU2FtcGxlSWZOZWVkZWQoKTsKKyAgICAgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJh
bWVJZk5lZWRlZCgpOwogICAgIH0pOwogfQogCkBAIC04OTQsNyArODkzLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNr
KCkKIAogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewogICAgICAgICBpZiAo
IW1fYWN0aXZlVmlkZW9UcmFjaykKLSAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5jbGVhckVucXVldWVkU2FtcGxlcygpOworICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmNsZWFyVmlkZW9GcmFtZXMoKTsKICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPnVwZGF0ZURpc3BsYXlNb2RlKGhpZGVWaWRlb0xheWVyIHx8IG1fZGlzcGxh
eU1vZGUgPCBQYXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigpKTsKICAgICB9CiAKQEAgLTkwMiwx
MSArOTAxLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
aGVja1NlbGVjdGVkVmlkZW9UcmFjaygpCiAKICAgICBpZiAob2xkVmlkZW9UcmFjayAhPSBtX2Fj
dGl2ZVZpZGVvVHJhY2spIHsKICAgICAgICAgaWYgKG9sZFZpZGVvVHJhY2spCi0gICAgICAgICAg
ICBvbGRWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgb2xkVmlkZW9UcmFjay0+c3RyZWFtVHJhY2so
KS5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAo
bV9hY3RpdmVWaWRlb1RyYWNrKSB7CiAgICAgICAgICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgJiYgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLmlz
Q2FwdHVyZVNvdXJjZSgpKQogICAgICAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5zZXRSZW5kZXJQb2xpY3koU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW5kZXJQb2xp
Y3k6OkltbWVkaWF0ZWx5KTsKLSAgICAgICAgICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFt
VHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAg
ICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb0Zy
YW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAib2JzZXJ2aW5nIHZpZGVvIHNvdXJjZSAiLCBtX2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRy
YWNrKCkubG9nSWRlbnRpZmllcigpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTk4Nyw3ICs5ODYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogewotICAgIGlmICht
X2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAg
ICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZl
ckNvbmZvcm1lcikKQEAgLTk5Nyw3ICs5OTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgIGlmICghbV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvIHBpeGVsQnVmZmVyID0gbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBpeGVs
QnVmZmVyKCkpCisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlUGFpbnRlci52aWRl
b0ZyYW1lLT5waXhlbEJ1ZmZlcigpKQogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+
Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIApAQCAtMTAwNiw3
ICsxMDA1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAobV9kaXNwbGF5TW9k
ZSA9PSBOb25lIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBQYWlu
dEl0QmxhY2sgJiYgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYgKG1fZGlzcGxh
eU1vZGUgIT0gUGFpbnRJdEJsYWNrICYmIG1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpCiAgICAg
ICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC0xMDE1LDEyICsxMDE0LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAg
IGlmICghbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5j
Z0ltYWdlOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIGlt
YWdlLT5zaXplKCkgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAg
QWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJp
eCgqbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSk7CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVk
RGVzdFJlY3QgPSB2YWx1ZU9yRGVmYXVsdCh2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5z
Zm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CkBAIC0xMDMyLDEyICsxMDMxLDcgQEAgUmVmUHRy
PFZpZGVvRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9G
cmFtZUZvckN1cnJlbnRUaW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKG1fZGlz
cGxheU1vZGUgPT0gUGFpbnRJdEJsYWNrKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpZiAoaXM8VmlkZW9GcmFtZT4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKSkKLSAg
ICAgICAgcmV0dXJuICZkb3duY2FzdDxWaWRlb0ZyYW1lPigqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwotICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSkpOwotICAgIHJldHVybiBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+
KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkudmlkZW9GcmFtZSgpOworICAgIHJldHVybiBt
X2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjb2xvclNwYWNlKCkKQEAgLTExMTEs
NyArMTEwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
Y2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogewog
ICAgIGNnSW1hZ2UgPSBudWxscHRyOwotICAgIG1lZGlhU2FtcGxlID0gbnVsbHB0cjsKKyAgICB2
aWRlb0ZyYW1lID0gbnVsbHB0cjsKICAgICBwaXhlbEJ1ZmZlckNvbmZvcm1lciA9IG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXgg
NWRjZmMwMmRhMWI4YjNmYzE2NDZjYjIyMWY5MTJmMTJiZDFlZDlmMi4uNmM1YWU1MzNiODdmMDA1
MzRhN2VlZTRlZGFlODVhY2FmMDZlMjNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmgKQEAgLTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+
PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRp
c3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBWaWRlb1JvdGF0aW9uIHZpZGVv
Um90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvdGF0aW9uOyB9Ci0gICAgYm9v
bCB2aWRlb01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3JlZDsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5h
bDsKKyAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbWlycm9yZWQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCBwaXhlbEZvcm1h
dCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVy
c2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggYTA0NTg3MGVkN2U2ODdk
MjFmMzM3OTE0MGIyODA0NjZlYTMxZjkyOC4uMTMxMWIzMzcxOGE4NGUzM2QxMzkzMTEzMDJkMDQ3
NWZkOTYzYzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQz
Ml90IE1lZGlhU2FtcGxlQVZGT2JqQzo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit1aW50MzJf
dCBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7CiAgICAgcmV0dXJuIENWUGl4ZWxC
dWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KaW5kZXggMDNmN2U0NTNjMmY0ZTFhOWM3ZDlmNTAyZmNmMjVmYTM1OGIzMzYz
OC4uNzE1NDJmNzliN2MyZDMzNjI5OWZjYzJhZDUyZTkzMWIyMGVkYzQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCkBAIC03ODEsNyArNzgxLDcgQEAgUmVmUHRyPFZpZGVvRnJh
bWU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb1ZpZGVv
RnJhbWUoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobV9yZXNvdXJjZU93bmVy
KQogICAgICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIobWVkaWFTYW1w
bGVQaXhlbEJ1ZmZlci5nZXQoKSwgbV9yZXNvdXJjZU93bmVyKTsKLSAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUoeyB9LCBmYWxzZSwgVmlkZW9GcmFtZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgV1RGTW92ZShtZWRpYVNhbXBsZVBpeGVsQnVmZmVyKSk7CisgICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKHsgfSwgZmFsc2UsIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBXVEZN
b3ZlKG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZU
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vz
c2lvblZULmgKaW5kZXggZDM4OTE5ODFlODVlODAzZGY4NGU1MDU3MGIyZDQwYWQ0MmVjMTU4Ny4u
NzM5MjQ0NmExMDUyMDIxZDg5ZDA0ZWNmYmI0ZmVjYmZhZDRiNjc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25T
ZXNzaW9uVlQuaApAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZm
ZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFZpZGVvRnJhbWU7CiAKIGNsYXNzIEltYWdlUm90YXRp
b25TZXNzaW9uVlQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTaXplJiByb3RhdGVkU2l6ZSgpIHsg
cmV0dXJuIG1fcm90YXRlZFNpemU7IH0KIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiByb3RhdGUoQ1ZQaXhlbEJ1ZmZlclJlZik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZShNZWRpYVNhbXBsZSYsIGNvbnN0IFJvdGF0aW9uUHJv
cGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGUoVmlkZW9GcmFtZSYsIGNvbnN0IFJvdGF0aW9u
UHJvcGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBGbG9hdFNpemUsIElzQ0dJbWFn
ZUNvbXBhdGlibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW0KaW5kZXggM2VhYjA2ODllOTA0
NTFhZDQ1OGNlZjM4OTY5NGZmOWU2OWIwNmY3Ni4uYTI2YWY4MWQ2MTk0MjZhYWVlOTczNzkxZjNm
MDUyOGE5Mzc3ZjM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW1wb3J0ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAi
VmlkZW9GcmFtZS5oIgogCiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCAi
VmlkZW9Ub29sYm94U29mdExpbmsuaCIKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoTWVkaWFTYW1wbGUmIHZpZGVv
RnJhbWUsIGNvbnN0IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBh
dGlibGUgY2dJbWFnZUNvbXBhdGlibGUpCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0
IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBhdGlibGUgY2dJbWFn
ZUNvbXBhdGlibGUpCiB7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHZpZGVvRnJhbWUucGl4ZWxC
dWZmZXIoKTsKICAgICBBU1NFUlQocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
CmluZGV4IGJhODEwNGQ2OTgxNGI0ZDgxYTJjNTk0MDllNWUyZGZmN2EzNTQ5YzcuLmQyMDUxMzQw
YThhMTU0OTczNDM0YmZmYmQyOGJmNGY2NzVlZTkwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4obmV3IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQo
cGl4ZWxGb3JtYXQsIHNob3VsZFVzZUlPU3VyZmFjZSkpOwogICAgIH0KIAotICAgIFJlZlB0cjxN
ZWRpYVNhbXBsZT4gY29udmVydFZpZGVvRnJhbWUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXpl
Jik7Ci0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVm
LCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9
IGZhbHNlKTsKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2Ft
cGxlQnVmZmVyUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9v
bCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY29udmVydFZpZGVv
RnJhbWUoVmlkZW9GcmFtZSYsIGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFt
ZT4gY3JlYXRlVmlkZW9GcmFtZShDR0ltYWdlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJ
bnRTaXplJiwgVmlkZW9GcmFtZTo6Um90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9u
ZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY3JlYXRl
VmlkZW9GcmFtZShDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50
U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUs
IGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShJ
T1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29s
IG1pcnJvcmVkID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0ZyYW1l
PiBjcmVhdGVWaWRlb0ZyYW1lKElPU3VyZmFjZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
SW50U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5v
bmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAjZW5kaWYKIAogICAgIHVpbnQzMl90IHBpeGVs
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0KaW5kZXggOGI2ZDc5NDU1YWI3MzMyYzM0Mzk5MjgxNDkzM2M2MDVmOTc5Y2M2ZC4u
YTczNTg2ZDlkNjljYzVmMTZlOTkzMTU2YTE3YzBkZGQyZmJlMmJiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVDTVNhbXBsZUJ1ZmZlcihJT1N1cmYK
IH0KICNlbmRpZgogCi1SZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNvbnZlcnRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBjb25zdCBJbnRTaXpl
JiBzaXplKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZl
cnRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgaWYgKHNpemUgPT0gZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0
aW9uU2l6ZSgpKSkKICAgICAgICAgcmV0dXJuICZ2aWRlb0ZyYW1lOwpAQCAtMjY0LDExICsyNjQs
MTEgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0
VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW8KICAgICBpZiAoIXJlc2l6ZWRCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRl
KHZpZGVvRnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb0ZyYW1lLnZpZGVvTWlycm9yZWQo
KSwgdmlkZW9GcmFtZS52aWRlb1JvdGF0aW9uKCksIFdURk1vdmUocmVzaXplZEJ1ZmZlcikpOwor
ICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRp
bWUoKSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgV1RG
TW92ZShyZXNpemVkQnVmZmVyKSk7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi1S
ZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2Ft
cGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNv
bnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBi
b29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNyZWF0ZVZpZGVvRnJhbWUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IE1lZGlhVGltZSYg
c2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVD
TVNhbXBsZUJ1ZmZlcihzdXJmYWNlLCBzYW1wbGVUaW1lLCBzaXplKTsKICAgICBpZiAoIXNhbXBs
ZUJ1ZmZlcikKQEAgLTI3OCw3ICsyNzgsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYQogfQog
I2VuZGlmCiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlTWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVU
aW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbiwgYm9vbCBtaXJyb3JlZCkKK1JlZlB0cjxWaWRlb0ZyYW1lPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGVWaWRlb0ZyYW1lKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IE1lZGlhVGlt
ZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24g
cm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVh
dGVDTVNhbXBsZUJ1ZmZlcihpbWFnZSwgc2FtcGxlVGltZSwgc2l6ZSk7CiAgICAgaWYgKCFzYW1w
bGVCdWZmZXIpCkBAIC0yODcsNyArMjg3LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmIGltYWdlLAogICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIG1pcnJvcmVk
LCByb3RhdGlvbik7CiB9CiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyLCBjb25zdCBN
ZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+
IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZVZpZGVvRnJhbWUoQ01TYW1wbGVCdWZmZXJS
ZWYgYnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNp
emUsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQogewogICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gY29udmVydENNU2FtcGxlQnVmZmVyKGJ1ZmZlciwgc2l6ZSwg
JnNhbXBsZVRpbWUpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAppbmRleCA5M2EzZTcxNTdl
NjFmNTA5MTA1MmJmM2Y1ZjQwNGNmMDkyNjgxYzg0Li4wY2QyZTEwOWJjNzg2MDM1YTVhZGYxOTY0
YzFjZTM5ZGYxZTY5Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlZpZGVv
RnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLXVzaW5nIENWUGl4ZWxCdWZm
ZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7Cit1c2luZyBDTVNhbXBsZUJ1ZmZlclJlZiA9IHN0
cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzksOCArMzksOCBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3MgVmlkZW9GcmFtZUNWIDog
cHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wg
aXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0ZyYW1lQ1Y+IGNyZWF0ZShNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFt
ZUNWPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24p
OwogICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GcmFtZUNWPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWVDVigpOwogCkBA
IC01MiwyNyArNTIsMjYgQEAgcHVibGljOgogCiAgICAgLy8gVmlkZW9GcmFtZSBvdmVycmlkZXMu
CiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUo
KSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB2aWRlb1BpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3QgcGl4ZWxGb3Jt
YXQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElk
ZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogICAgIGJvb2wgaXNDVigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpIGZpbmFsOwogCiBwcml2YXRlOgot
ICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZUNWKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4mJik7CiAKICAgICBjb25zdCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
bV9waXhlbEJ1ZmZlcjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVmlk
ZW9GcmFtZUNWOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1fcHJlc2VudGF0aW9uVGltZSA8PCBtX2lzTWlycm9yZWQgPDwgbV9yb3RhdGlvbiA8PCBt
X3BpeGVsQnVmZmVyOworICAgIGVuY29kZXIgPDwgcHJlc2VudGF0aW9uVGltZSgpIDw8IGlzTWly
cm9yZWQoKSA8PCByb3RhdGlvbigpIDw8IG1fcGl4ZWxCdWZmZXI7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFZpZGVvRnJhbWVDVj4+IFZpZGVv
RnJhbWVDVjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcmVzZW50YXRp
b25UaW1lID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8TWVkaWFUaW1lPigpOwogICAgIGF1dG8g
aXNNaXJyb3JlZCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPGJvb2w+KCk7Ci0gICAgYXV0byBy
b3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFZpZGVvUm90YXRpb24+KCk7CisgICAg
YXV0byByb3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFJvdGF0aW9uPigpOwogICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4+KCk7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSB8fCAhKnBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODMsNyArODIsNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxWaWRlb0ZyYW1l
Q1Y+PiBWaWRlb0ZyYW1lQ1Y6OmRlYwogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlZpZGVvRnJhbWVDVikKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlkZW9GcmFtZS5pc0NWKCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlh
U2FtcGxlKSB7IHJldHVybiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYg
aXM8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPihkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lPiht
ZWRpYVNhbXBsZSkpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFt
ZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNW
Lm1tCmluZGV4IGFiZDdlMmZjODk3YjA3MWJiMGI1ZmYzOTc2ZDk5ZjBjMTllMTQ0NmMuLmJmZmUy
YjRiZDZiNTU3YTI4Nzk4Y2IyZGVjMTJiYjlkNDg2M2M4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0Zy
YW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaXJy
b3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1JlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgYm9vbCBpc01pcnJv
cmVkLCBSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KHNhbXBsZUJ1ZmZlcikpOwogICAgIGF1dG8gdGltZVN0YW1wID0gUEFMOjpDTVNhbXBsZUJ1ZmZl
ckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOwpAQCAtNDQsNyAr
NDQsNyBAQCBSZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaQogICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6
OmNyZWF0ZShQQUw6OnRvTWVkaWFUaW1lKHRpbWVTdGFtcCksIGlzTWlycm9yZWQsIHJvdGF0aW9u
LCBwaXhlbEJ1ZmZlcik7CiB9CiAKLVJlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90
YXRpb24gcm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVy
KQorUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24sIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyKQogewogICAgIEFTU0VSVChwaXhlbEJ1
ZmZlcik7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUNWKHByZXNlbnRhdGlv
blRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uLCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSkpOwpAQCAt
NzMsMTAgKzczLDEwIEBAIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3JlYXRl
RnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7Ci0gICAg
cmV0dXJuIGNyZWF0ZSh7IH0sIGZhbHNlLCBWaWRlb1JvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKGN2
UGl4ZWxCdWZmZXIpKTsKKyAgICByZXR1cm4gY3JlYXRlKHsgfSwgZmFsc2UsIFJvdGF0aW9uOjpO
b25lLCBXVEZNb3ZlKGN2UGl4ZWxCdWZmZXIpKTsKIH0KIAotVmlkZW9GcmFtZUNWOjpWaWRlb0Zy
YW1lQ1YoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9S
b3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZm
ZXIpCitWaWRlb0ZyYW1lQ1Y6OlZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIpCiAgICAgOiBWaWRlb0ZyYW1lKHByZXNlbnRhdGlvblRp
bWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uKQogICAgICwgbV9waXhlbEJ1ZmZlcihXVEZNb3ZlKHBp
eGVsQnVmZmVyKSkKIHsKQEAgLTg5LDcgKzg5LDcgQEAgV2ViQ29yZTo6RmxvYXRTaXplIFZpZGVv
RnJhbWVDVjo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX3BpeGVsQnVmZmVyLmdldCgpKSksIHN0
YXRpY19jYXN0PGZsb2F0PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fcGl4ZWxCdWZmZXIuZ2V0
KCkpKSB9OwogfQogCi11aW50MzJfdCBWaWRlb0ZyYW1lQ1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBj
b25zdAordWludDMyX3QgVmlkZW9GcmFtZUNWOjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUobV9waXhlbEJ1ZmZlci5nZXQo
KSk7CiB9CkBAIC0xMDIsMjMgKzEwMiwxOCBAQCB2b2lkIFZpZGVvRnJhbWVDVjo6c2V0T3duZXJz
aGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogICAgIHNl
dE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihidWZmZXIsIHJlc291cmNlT3duZXIp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmFzVmlk
ZW9GcmFtZUNWKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQogSW1hZ2VPcmllbnRhdGlvbiBW
aWRlb0ZyYW1lQ1Y6Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICAvLyBTYW1wbGUgdHJhbnNm
b3JtIGZpcnN0IGZsaXBzIHgtY29vcmRpbmF0ZXMsIHRoZW4gcm90YXRlcy4KLSAgICBzd2l0Y2gg
KG1fcm90YXRpb24pIHsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
OgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2lu
VG9wUmlnaHQgOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OwotICAgIGNhc2UgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4gbV9pc01pcnJv
cmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5SaWdodFRvcDsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpVcHNpZGVEb3duOgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJp
Z2h0OwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6Ci0gICAgICAg
IHJldHVybiBtX2lzTWlycm9yZWQgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDog
SW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbTsKKyAgICBzd2l0Y2ggKHJvdGF0aW9u
KCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wUmlnaHQgOiBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRp
b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlv
bjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDsK
KyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IElt
YWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6
Um90YXRpb246OkxlZnQ6CisgICAgICAgIHJldHVybiBpc01pcnJvcmVkKCkgPyBJbWFnZU9yaWVu
dGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDogSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRv
bTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcAppbmRleCBl
OTU1ZTA0MmY4NWY5YzNjMTZmYjJkYTgzYjkzNWI3N2Q5Mzk0NTRmLi5iOWQzOGYwNDc0OGRkMTNi
M2Q0ZmQyZTMyNjcwODYzNTg1N2YyNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFt
ZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFZp
ZGVvRnJhbWVHU3RyZWFtZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1
ZmZlcihQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRh
dGlvblRpbWUsIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSwgZG91YmxlIGZyYW1lUmF0
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIHN0ZDo6
b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0YSkKK1JlZjxWaWRlb0Zy
YW1lR1N0cmVhbWVyPiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlciwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25U
aW1lLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUsIGRvdWJsZSBmcmFtZVJhdGUsIFJv
dGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxW
aWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogewogICAgIGVuc3VyZUdTdHJlYW1l
ckluaXRpYWxpemVkKCk7CiAKQEAgLTg1LDcgKzg1LDcgQEAgUmVmPFZpZGVvRnJhbWVHU3RyZWFt
ZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZl
ciYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lR1N0cmVhbWVyKFdURk1vdmUo
c2FtcGxlKSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBwcmVzZW50YXRpb25UaW1lLCB2aWRl
b1JvdGF0aW9uLCB2aWRlb01pcnJvcmVkLCBXVEZNb3ZlKG1ldGFkYXRhKSkpOwogfQogCi1WaWRl
b0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYm
IHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRp
bWUmIHByZXNlbnRhdGlvblRpbWUsIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiwgYm9vbCB2
aWRlb01pcnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0
YWRhdGEpCitWaWRlb0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBj
b25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24s
IGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
PiYmIG1ldGFkYXRhKQogICAgIDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCB2aWRlb01p
cnJvcmVkLCB2aWRlb1JvdGF0aW9uKQogICAgICwgbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQog
ICAgICwgbV9wcmVzZW50YXRpb25TaXplKHByZXNlbnRhdGlvblNpemUpCkBAIC05OCw3ICs5OCw3
IEBAIFZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoR1JlZlB0cjxHc3RT
YW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hCiAgICAgICAgIGJ1ZmZlciA9IHdlYmtpdEdzdEJ1
ZmZlclNldFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEoYnVmZmVyLCBXVEZNb3ZlKG1ldGFkYXRhKSk7
CiB9CiAKLVZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1Jl
ZlB0cjxHc3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGlt
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQorVmlkZW9GcmFtZUdTdHJlYW1lcjo6Vmlk
ZW9GcmFtZUdTdHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNhbXBsZSwgY29uc3Qg
TWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBSb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQogICAg
IDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBmYWxzZSwgdmlkZW9Sb3RhdGlvbikKICAg
ICAsIG1fc2FtcGxlKHNhbXBsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCmlu
ZGV4IDExYmY5MDJjMDBjMWE5MzIxM2E1OTA1Yjc4ZjI4OWI3M2Y4MTQ2MTMuLjFjODBjMjJlMDI2
NjU5NjZkMTdiOThhODZjMTI1MjZlMTZmYjkwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3Ry
ZWFtZXIuaApAQCAtMzAsMjYgKzMwLDI3IEBAIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBW
aWRlb0ZyYW1lR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0U2Ft
cGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBN
ZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIFZp
ZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlk
ZW9NaXJyb3JlZCA9IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+
JiYgbWV0YWRhdGEgPSBzdGQ6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hdFNp
emUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSA9
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFJvdGF0
aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUdTdHJlYW1lcihXVEZNb3ZlKHNh
bXBsZSksIHByZXNlbnRhdGlvblNpemUsIHByZXNlbnRhdGlvblRpbWUsIHZpZGVvUm90YXRpb24s
IHZpZGVvTWlycm9yZWQsIFdURk1vdmUobWV0YWRhdGEpKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0IEdSZWZQ
dHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUs
IFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpCisgICAg
c3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlv
blRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVHU3RyZWFtZXIoc2FtcGxlLCBw
cmVzZW50YXRpb25UaW1lLCB2aWRlb1JvdGF0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJl
ZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXIm
JiwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFt
ZVJhdGUgPSAxLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpO
b25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgUmVm
PFZpZGVvRnJhbWVHU3RyZWFtZXI+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYm
LCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCksIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSA9IHsgfSwgZG91YmxlIGZyYW1l
UmF0ZSA9IDEsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSwgYm9vbCB2
aWRlb01pcnJvcmVkID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0
YT4mJiBtZXRhZGF0YSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBHc3RTYW1wbGUqIHNhbXBsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9G
cmFtZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiwgY29uc3QgRmxvYXRTaXplJiBwcmVz
ZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCksIFZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBi
b29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKLSAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpOworICAgIFZpZGVvRnJhbWVHU3Ry
ZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9u
U2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQg
PSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmID0gc3RkOjpu
dWxsb3B0KTsKKyAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxl
PiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gPSBSb3RhdGlv
bjo6Tm9uZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3Qg
cGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAKICAgICBHUmVmUHRyPEdz
dFNhbXBsZT4gbV9zYW1wbGU7CiAgICAgRmxvYXRTaXplIG1fcHJlc2VudGF0aW9uU2l6ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAwMzgxODlmNzQ3ZGZiYjI4Zjg3NWY3ZTY3ZjViYzFm
YTMxNTg2Y2ZjLi44ZTc5ZjRiZWE4MzQwZGJkNjcxMWRkYzI4ZTJhNzA4ZWI5YTg2MjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6CiAg
ICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlKCk7CiAKQEAgLTExNiwxMiArMTE2LDEyIEBAIGlubGlu
ZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZXRBdWRpb1NvdXJjZShSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4mJiBhCiBpbmxpbmUgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2V0
VmlkZW9Tb3VyY2UoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgdmlkZW9Tb3VyY2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5yZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV92aWRlb1NvdXJjZSA9IFdURk1vdmUo
dmlkZW9Tb3VyY2UpOwogCiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9T
b3VyY2UtPmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291
cmNlLT5hZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiBpbmxpbmUgTWVkaWFSZWNv
cmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCkBAIC0xMzIsNyArMTMyLDcgQEAg
aW5saW5lIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp+TWVkaWFSZWNvcmRlclByaXZhdGUoKQogICAg
IGlmIChtX2F1ZGlvU291cmNlKQogICAgICAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVBdWRpb1Nh
bXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICBpZiAobV92aWRlb1NvdXJjZSkKLSAgICAgICAgbV92
aWRlb1NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1f
dmlkZW9Tb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNw
cAppbmRleCAxYzBkM2U1M2M2MWMyZjE2OGZhNWRjZmVmZTNkYTJjMzYzZDI5MmJkLi5hNzRlYmRk
OTM2YTQ1NTIzMTQxNjQ4MTVkMWQ5ODc4MTZkZWQ0NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC04MywxOSArODMsMTkgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2sm
JiBjYWxsYmEKICAgICBjYWxsYmFjayhTdHJpbmcobV93cml0ZXItPm1pbWVUeXBlKCkpLCBtX3dy
aXRlci0+YXVkaW9CaXRSYXRlKCksIG1fd3JpdGVyLT52aWRlb0JpdFJhdGUoKSk7CiB9CiAKLXZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVv
KCkpIHsKICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUpIHsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgICAgICBtX2JsYWNrRnJhbWUg
PSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUu
dmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBjcmVhdGVCbGFja1BpeGVs
QnVmZmVyKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgYXV0byBz
aXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBtX2JsYWNr
RnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRpbWUo
KSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgY3JlYXRl
QmxhY2tQaXhlbEJ1ZmZlcihzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAg
fQogICAgICAgICBtX3dyaXRlci0+YXBwZW5kVmlkZW9GcmFtZSgqbV9ibGFja0ZyYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fYmxhY2tGcmFtZSA9IG51bGxwdHI7Ci0gICAg
bV93cml0ZXItPmFwcGVuZFZpZGVvRnJhbWUoVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlLnBy
ZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxlLnZpZGVvUm90
YXRpb24oKSwgc2FtcGxlLnBpeGVsQnVmZmVyKCkpKTsKKyAgICBtX3dyaXRlci0+YXBwZW5kVmlk
ZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGwuaAppbmRleCA5NTdmNWQwODc3OWZhOWMzOTI3N2U5MTU5M2M1NjM5NjhjZDc4
ODI2Li4xMjg5NzM1OWNkYmQ3MDgxZTU5YzkxZDhlZGJmMGI1YzA1ZDU4MTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyPiYmKTsKIAogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCi0gICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0
YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyLmgKaW5kZXggNzRmMWU3MjM2NzRlOGQwMTk4MjVjNzQwYmM4NjcyZmM2N2Rh
ZjkyMi4uYjE1YzdiZTQxM2MxYmMxMDkxZmM5MmUxOWEwZGFlNTBkZTI0ZDZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBwcmVwYXJlUGlwZWxpbmUoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkgZmluYWwgeyB9OworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWwgeyB9OwogICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbCB7IH07CiAKICAg
ICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCAwNjE3NmM3NDAwMWVmZGY2ZjQ1OTFmNjhkMmUw
MGUxMGE3Y2MwZjhhLi43ZjZkYjNjN2IwNzM3ZmFmMGNlYjlhYTY5ZThkMGRlMzhkZDBiNmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpyZXN1bWVSZWNvcmRpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICBtX2J1ZmZl
ci5hcHBlbmQoIlZpZGVvIFRyYWNrIElEOiAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9j
ay5oCmluZGV4IDcyOTY0NjI1NTM2YzZmMTIwOTIwMzA4MmZmM2UwYjZhN2EzNzcyN2EuLmY5MzU5
MGE4MDg2NzVmZDgzM2RkMjQ0YTI4ZjM3YjU1ZjA1ODgwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZU1vY2suaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Ly8gTWVkaWFSZWNvcmRlclByaXZhdGUKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgdm9pZCB2aWRl
b0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5h
bDsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFs
OwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCBhZGNlNDgzMDJmNWRhOWY3MzA1ZjlkZjJmNGJiYjA4YzBjZDFlZGYwLi5mYWFj
NmM5ODhjZTZhMzcxZWYyNTNlYThmYjlmOTVlZTYxZDkzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTMyLDcgKzEzMiw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgeyBmYWxzZSB9
OwogCiAgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0ZXJEZWxl
Z2F0ZTsKLSAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3BlbmRpbmdW
aWRlb1NhbXBsZVF1ZXVlOworICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+
IG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZTsKICAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+PiBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlOwogCiAgICAgYm9vbCBtX2lzRmx1
c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAzMTY2ZTgxNDYyOWU5MDQ4ZTEwZDRjODkw
Yjg5YTJhN2U2MjBjMjUzLi4wMjRmMDlkZmU3Y2U5ZjlmZjE5YzJlODBhMDA1YTAwOGY3YTU5YjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmkKIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogewog
ICAgIG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuY2xlYXIoKTsKLSAgICBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFy
KCk7CiAgICAgaWYgKG1fd3JpdGVyKSB7CiAgICAgICAgIFttX3dyaXRlciBjYW5jZWxXcml0aW5n
XTsKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKQEAgLTI4MywxNSArMjgzLDE1IEBAIGJvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1
ZmZlcklmUG9zc2libGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9pc0Zs
dXNoaW5nU2FtcGxlcykgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IHdoaWxlICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fdmlkZW9B
c3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgYXBwZW5k
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUudGFr
ZUZpcnN0KCkuZ2V0KCkpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmlz
RW1wdHkoKSAmJiBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURh
dGFdKQorICAgICAgICBhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIobV9wZW5kaW5n
VmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgpKTsKIAogICAgIGlmICghW21fdmlkZW9B
c3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewotICAgICAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVy
SW5wdXQgKmFzCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNz
ZWRTYW1wbGVCdWZmZXJzKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBib29s
IGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMgPSAhbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5pc0Vt
cHR5KCk7Ci0gICAgYm9vbCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzID0gIW1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUuaXNFbXB0eSgpOworICAgIGJvb2wgaGFzUGVuZGluZ1ZpZGVvU2FtcGxlcyA9
ICFtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0eSgpOwogCiAgICAgaWYgKG1faGFzRW5j
b2RlZFZpZGVvU2FtcGxlcykgewogICAgICAgICBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzIHw9ICFb
bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdOwpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJl
c3NlZFNhbXBsZUJ1ZmZlcnMoRnVuY3Rpb248dm9pZCgpPiYmCiAKICAgICBBU1NFUlQoIW1faXNG
bHVzaGluZ1NhbXBsZXMpOwogICAgIG1faXNGbHVzaGluZ1NhbXBsZXMgPSB0cnVlOwotICAgIGF1
dG8gYmxvY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMsIGhhc1BlbmRpbmdWaWRlb1NhbXBsZXMsIGF1ZGlv
U2FtcGxlUXVldWUgPSBXVEZNb3ZlKG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUpLCB2aWRlb1Nh
bXBsZVF1ZXVlID0gV1RGTW92ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBoYXNQZW5kaW5nQXVk
aW9TYW1wbGVzLCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzLCBhdWRpb1NhbXBsZVF1ZXVlID0gV1RG
TW92ZShtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlKSwgdmlkZW9TYW1wbGVRdWV1ZSA9IFdURk1v
dmUobV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2Fs
bGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4Niw5ICszODYsOSBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIGZy
YW1lKQogICAgIGlmICghbV9maXJzdFZpZGVvRnJhbWUpIHsKICAgICAgICAgbV9maXJzdFZpZGVv
RnJhbWUgPSB0cnVlOwogICAgICAgICBtX3Jlc3VtZWRWaWRlb1RpbWUgPSBQQUw6OkNNQ2xvY2tH
ZXRUaW1lKFBBTDo6Q01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7Ci0gICAgICAgIGlmIChmcmFt
ZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfHwg
ZnJhbWUudmlkZW9NaXJyb3JlZCgpKSB7Ci0gICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGljX2Nhc3Q8aW50PihmcmFtZS52aWRl
b1JvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7Ci0gICAgICAgICAgICBpZiAoZnJhbWUudmlkZW9N
aXJyb3JlZCgpKQorICAgICAgICBpZiAoZnJhbWUucm90YXRpb24oKSAhPSBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6Tm9uZSB8fCBmcmFtZS5pc01pcnJvcmVkKCkpIHsKKyAgICAgICAgICAgIG1fdmlk
ZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxp
bnQ+KGZyYW1lLnJvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7CisgICAgICAgICAgICBpZiAoZnJh
bWUuaXNNaXJyb3JlZCgpKQogICAgICAgICAgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0Fm
ZmluZVRyYW5zZm9ybVNjYWxlKCptX3ZpZGVvVHJhbnNmb3JtLCAtMSwgMSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRhOTU3OTg3MmE3NzE1ZTU0MDQzOTVk
MDU3NGRjNGRkNzFlZmIyMzkuLjZmYTNiMWUwMWQ0ODg5NGM1YTU0NzU3ZjVkMTA2N2RmZWU0YTUx
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC03NSwxOCArNzUsMTggQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpyZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2Jz
ZXJ2ZXImIG9ic2VydmUKICAgICBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2
ZXIpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZFZpZGVvU2FtcGxlT2JzZXJ2
ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmFkZFZpZGVvRnJhbWVPYnNlcnZlcihWaWRlb0ZyYW1lT2JzZXJ2ZXImIG9ic2VydmVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdmlk
ZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0gICAgbV92aWRlb1NhbXBsZU9ic2VydmVycy5hZGQo
Jm9ic2VydmVyKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9j
ayB9OworICAgIG1fVmlkZW9GcmFtZU9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2Ft
cGxlT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxl
T2JzZXJ2ZXJzTG9jayB9OwotICAgIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMucmVtb3ZlKCZvYnNl
cnZlcik7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fVmlkZW9GcmFtZU9ic2VydmVyc0xvY2sgfTsK
KyAgICBtX1ZpZGVvRnJhbWVPYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CiB9CiAKIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpAQCAt
MTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dXBkYXRlSGFzU3RhcnRl
ZFByb2R1Y2luZ0RhdGEoKQogICAgIH0pOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSwgVmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9G
cmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhIG1ldGFkYXRhKQogewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICsrbV9mcmFt
ZUNvdW50OwpAQCAtMjEwLDkgKzIxMCw5IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlLCBWaWRlb0ZyCiAKICAg
ICB1cGRhdGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSgpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7
IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0gICAgZm9yIChhdXRvKiBvYnNlcnZlciA6
IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT52aWRlb1NhbXBsZUF2
YWlsYWJsZShtZWRpYVNhbXBsZSwgbWV0YWRhdGEpOworICAgIExvY2tlciBsb2NrZXIgeyBtX1Zp
ZGVvRnJhbWVPYnNlcnZlcnNMb2NrIH07CisgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fVmlk
ZW9GcmFtZU9ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnZpZGVvRnJhbWVBdmFpbGFibGUo
dmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3Jt
QXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggNzM0
ODM1MmJlMjUxOTM1OGI1NDZkZTY4ZDBjM2I4OTJhOWY0NGU0ZS4uMWE4OTk4ZGUzYjc5ZWM0MDZj
OTZhZDBhM2Y0OTM2MzJlNzc4MzhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMzgsMTAgKzM4
LDEwIEBACiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oIgor
I2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KQEAgLTk4LDEyICs5OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1heSBiZSBjYWxs
ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KICAgICAgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QgLypudW1iZXJPZkZyYW1lcyov
KSA9IDA7CiAgICAgfTsKLSAgICBjbGFzcyBWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAgICBjbGFz
cyBWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Vmlk
ZW9TYW1wbGVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB+VmlkZW9GcmFt
ZU9ic2VydmVyKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIC8vIE1heSBiZSBjYWxsZWQgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KLSAgICAgICAgdmlydHVhbCB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRp
bWVNZXRhZGF0YSkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291
cmNlKCkgPSBkZWZhdWx0OwpAQCAtMTQ3LDggKzE0Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZEF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZlcihBdWRp
b1NhbXBsZU9ic2VydmVyJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcihWaWRlb1NhbXBsZU9ic2VydmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2Vy
dmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIo
VmlkZW9GcmFtZU9ic2VydmVyJik7CiAKICAgICBjb25zdCBJbnRTaXplIHNpemUoKSBjb25zdDsK
ICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOwpAQCAtMjUwLDcgKzI1MCw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemVTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKSB7
IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVFY2hvQ2Fu
Y2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikgeyBtX2VjaG9DYW5jZWxsYXRpb24gPSBl
Y2hvQ2FuY2VsbGF0aW9uOyB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZh
aWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKICAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlv
RGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogCiAgICAgdm9p
ZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYpOwpAQCAt
Mjg5LDggKzI4OSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBMb2NrIG1fYXVkaW9TYW1wbGVP
YnNlcnZlcnNMb2NrOwogICAgIEhhc2hTZXQ8QXVkaW9TYW1wbGVPYnNlcnZlcio+IG1fYXVkaW9T
YW1wbGVPYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJz
TG9jayk7CiAKLSAgICBtdXRhYmxlIExvY2sgbV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2s7Ci0g
ICAgSGFzaFNldDxWaWRlb1NhbXBsZU9ic2VydmVyKj4gbV92aWRlb1NhbXBsZU9ic2VydmVycyBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBtdXRh
YmxlIExvY2sgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9jazsKKyAgICBIYXNoU2V0PFZpZGVvRnJh
bWVPYnNlcnZlcio+IG1fVmlkZW9GcmFtZU9ic2VydmVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
VmlkZW9GcmFtZU9ic2VydmVyc0xvY2spOwogCiAgICAgLy8gU2V0IG9uIHRoZSBtYWluIHRocmVh
ZCBmcm9tIGNvbnN0cmFpbnRzLgogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggOWE3MTA1NWQ4NmIzZTEwOWZmMjkxNzg3MmNmYmIw
YjI0ODRjZGJmYS4uMjczNmE0M2U3NmU5OTVkZWQ4NjAwYjc0MWQ4NTdkMDhlZTk5YTFiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpvYnNlcnZlU291cmNlKCkKIHZvaWQgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp1bm9ic2VydmVTb3VyY2UoKQogewogICAgIG1fdmlk
ZW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLSAgICBtX3ZpZGVvU291cmNlLT5zb3Vy
Y2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3ZpZGVvU291cmNl
LT5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJiBuZXdTb3VyY2UpCkBAIC0xMTQsMTMgKzExNCwxMyBAQCB2b2lkIFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RvcCgpCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6dXBkYXRlQmxhY2tGcmFtZXNTZW5kaW5nKCkKIHsKICAgICBpZiAoIW1fbXV0ZWQgJiYg
bV9lbmFibGVkKSB7Ci0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLmFkZFZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5hZGRW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAobV9ibGFja0ZyYW1lVGltZXIu
aXNBY3RpdmUoKSkKICAgICAgICAgICAgIG1fYmxhY2tGcmFtZVRpbWVyLnN0b3AoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJl
bW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgc2VuZEJsYWNrRnJhbWVzSWZOZWVk
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAppbmRleCBiMmFjMTY5
MDBhM2I1NmJmNzZhMGE1YzEyMGY4ZGQyMWZiN2M5NmU4Li4zMGUyZjkzN2IyNGE1NGM1NDY3YjQ4
Mjk1YmRjMGJmOWE0YjAwODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaApA
QCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UKICAgICA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Us
IFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgd2VicnRjOjpWaWRl
b1RyYWNrU291cmNlSW50ZXJmYWNlCiAgICAgLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpPYnNlcnZlcgotICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1Nh
bXBsZU9ic2VydmVyCisgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBMb2dn
ZXJIZWxwZXIKICNlbmRpZgpAQCAtMTM0LDggKzEzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0
cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgaW5p
dGlhbGl6ZUZyb21Tb3VyY2UoKTsgfQogICAgIHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQogCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJpZGUgeyB9CisgICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIEFQSQorICAgIHZvaWQgdmlkZW9G
cmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJp
ZGUgeyB9CiAKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fdmlkZW9Tb3VyY2U7
CiAgICAgVGltZXIgbV9ibGFja0ZyYW1lVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKaW5kZXggNTc5OWQwMDM4OTEyNWU0Y2ZiYjliZTljYTNhYTA1ZGNhMWY1ZmMzNy4u
ZWQ3ZDU2NGE5OTgxYWEwNmIxNmRkZmJjYTExNDg3MTFjZDc5N2ViMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMzY1LDkgKzM2NSw5IEBAIHZvaWQgUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+
IHdpZHRoLCBzCiAgICAgc2V0RnJhbWVSYXRlKG1hdGNoLT5yZXF1ZXN0ZWRGcmFtZVJhdGUpOwog
fQogCi12b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwYXRjaE1lZGlhU2FtcGxl
VG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmIHNhbXBsZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVN
ZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3Bh
dGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7Ci0gICAgTWVkaWFUaW1lIHNhbXBs
ZVRpbWUgPSBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpOworICAgIE1lZGlhVGltZSBzYW1wbGVU
aW1lID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCk7CiAKICAgICBhdXRvIGZyYW1lVGlt
ZSA9IHNhbXBsZVRpbWUudG9Eb3VibGUoKTsKICAgICBtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBz
LmFwcGVuZChmcmFtZVRpbWUpOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2U6OmRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBs
ZSYgc2FtCiAgICAgaWYgKGludGVydmFsID4gMSkKICAgICAgICAgbV9vYnNlcnZlZEZyYW1lUmF0
ZSA9IChtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBzLnNpemUoKSAvIGludGVydmFsKTsKIAotICAg
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZSwgbWV0YWRhdGEpOworICAgIHZpZGVvRnJhbWVB
dmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBmcmFtZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCA0ZTA5
YWUyMWY0NTgzYWJmNDczMjY3ODljZmJmMmIyN2VjMzlkOTYyLi4wYmRjMGQ1NjQ0MTcwM2ZmYzgz
ODcwNzk0Yjc1NjIzMDI4YjU3ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJWaWRlb1ByZXNldC5oIgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CkBAIC00Niw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNT
aXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxp
bnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2VuZXJhdGVQcmVzZXRzKCkgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb24oKSBjb25zdCB7IHJldHVybiBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQorICAgIHZpcnR1YWwgVmlkZW9GcmFtZTo6Um90YXRpb24g
dmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246
Ok5vbmU7IH0KIAogICAgIGRvdWJsZSBvYnNlcnZlZEZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JzZXJ2ZWRGcmFtZVJhdGU7IH0KICAgICBWZWN0b3I8VmlkZW9QcmVzZXREYXRhPiBwcmVz
ZXRzRGF0YSgpOwpAQCAtNzMsNyArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0
ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJik7CiAKLSAgICB2
b2lkIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOworICAgIHZvaWQgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9P
YnNlcnZlcnMoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOwogCiAgICAgc3Rh
dGljIFNwYW48Y29uc3QgSW50U2l6ZT4gc3RhbmRhcmRWaWRlb1NpemVzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKaW5kZXggYTIzNWQ0MjNmMjkxMDRjNTk0OTI4NTRmMGY3NTdhZjA3ZjkyNGEy
OC4uZjllODRmN2I1NzQwODhmMGNkZjY5YTVmOTU0ODQ4NjA3ZDdiYTQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6UmVhbHRp
bWVWaWRlb1NvdXJjZShSZWY8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U+JiYgc291cmMKIAog
UmVhbHRpbWVWaWRlb1NvdXJjZTo6flJlYWx0aW1lVmlkZW9Tb3VyY2UoKQogewotICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVt
b3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOwogfQogCkBAIC02OSwxOCArNjksMTggQEAgdm9pZCBSZWFsdGltZVZpZGVvU291
cmNlOjp3aGVuUmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxiYWNr
KQogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewogICAg
IG1fc291cmNlLT5zdGFydCgpOwotICAgIG1fc291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+YWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0K
IAogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAg
bV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNl
LT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5zdG9wKCk7
CiB9CiAKIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZW5kUHJvZHVjaW5nRGF0YSgpCiB7Ci0g
ICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5yZXF1
ZXN0VG9FbmQoKnRoaXMpOwogfQogCkBAIC0xMjUsMTIgKzEyNSwxMiBAQCB2b2lkIFJlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKCkKIHsKLSAgICBhdXRvIHJvdGF0aW9uID0gbV9z
b3VyY2UtPnNhbXBsZVJvdGF0aW9uKCk7CisgICAgYXV0byByb3RhdGlvbiA9IG1fc291cmNlLT52
aWRlb0ZyYW1lUm90YXRpb24oKTsKICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAg
aWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICBzaXplID0gbV9zb3VyY2UtPnNpemUoKTsKIAot
ICAgIGlmIChyb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCBy
b3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgaWYgKHJv
dGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHJvdGF0aW9uID09IFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNp
emUoKTsKIAogICAgIG1fY3VycmVudFNldHRpbmdzLnNldFdpZHRoKHNpemUud2lkdGgoKSk7CkBA
IC0xNzIsMTAgKzE3MiwxMCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVN0b3Bw
ZWQoKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1SZWZQdHI8TWVkaWFTYW1wbGU+IFJlYWx0
aW1lVmlkZW9Tb3VyY2U6OmFkYXB0VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSkK
K1JlZlB0cjxWaWRlb0ZyYW1lPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUo
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKLSAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Np
b24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSB2aWRlb0ZyYW1l
LnZpZGVvUGl4ZWxGb3JtYXQoKSkKLSAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IElt
YWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnZpZGVvUGl4ZWxGb3JtYXQo
KSwgbV9zaG91bGRVc2VJT1N1cmZhY2UpOworICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
biB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9IHZpZGVvRnJhbWUu
cGl4ZWxGb3JtYXQoKSkKKyAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnBpeGVsRm9ybWF0KCksIG1fc2hvdWxk
VXNlSU9TdXJmYWNlKTsKIAogICAgIEFTU0VSVChtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKTsKICAg
ICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUoTWVkaWFT
YW1wbGUmIHZpZGVvRnJhbWUKIH0KICNlbmRpZgogCi12b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgaWYgKG1fZnJhbWVEZWNpbWF0aW9uID4gMSAmJiArK21fZnJh
bWVEZWNpbWF0aW9uQ291bnRlciAlIG1fZnJhbWVEZWNpbWF0aW9uKQogICAgICAgICByZXR1cm47
CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYQogICAgIGF1dG8g
c2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBpZiAoIXNpemUuaXNFbXB0eSgpICYmIHNpemUgIT0g
ZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpKSkgewogICAgICAg
ICBpZiAoYXV0byBuZXdWaWRlb0ZyYW1lID0gYWRhcHRWaWRlb0ZyYW1lKHZpZGVvRnJhbWUpKSB7
Ci0gICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgq
bmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOworICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSgqbmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7Cisg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBt
ZXRhZGF0YSk7CiB9CiAKIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBSZWFsdGltZVZpZGVvU291
cmNlOjpjbG9uZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggYTcxOTQ5Nzg5ZTRlMDVhOTBhODlm
YzE0MDNiYjgwODhjZmZiZjhhOC4uNjQ2ZDU4YTIyMzdjYWM2NWM5MGVkMjY0MjgwMzEyZTc5MmZi
ZWY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOwogY2xhc3MgUmVhbHRpbWVWaWRlb1NvdXJjZSBmaW5hbAogICAgIDog
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpPYnNlcnZlcgotICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2Ft
cGxlT2JzZXJ2ZXIgeworICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZVZpZGVvU291cmNl
PiBjcmVhdGUoUmVmPFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlPiYmIHNvdXJjZSwgYm9vbCBz
aG91bGRVc2VJT1N1cmZhY2UgPSB0cnVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1l
VmlkZW9Tb3VyY2UoV1RGTW92ZShzb3VyY2UpLCBzaG91bGRVc2VJT1N1cmZhY2UpKTsgfQogCkBA
IC03MSwxMSArNzEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5h
bDsKICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBmaW5hbDsKIAotICAgIC8v
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZT4gYWRhcHRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJik7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+
IGFkYXB0VmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vVmlkZW9QcmVzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Zp
ZGVvUHJlc2V0LmgKaW5kZXggZjgwY2NlZWRkYTc2MGZlZmI3ZTdmZjM5YTBjOWNkNzdhOGIwYThm
Yy4uNmNkMjkwNzNiZjAxY2UyZjQ1Y2MyMTk1MWJiYTU2NmQ1NTc3MWUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA2ZWU5
NGEwZmE0YmY3ZDBkZDVkYzQ4OGI4MDBkMWVhMGE1M2FkZDEyLi40MDMwNGFiZTY5MDZjYjFmMzRj
NzBhZDJjNjBkNDA4ZjZiYjdiOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcApAQCAtMjkzLDM1ICsyOTMsMzUgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUoKQogICAgICAgICB1cGRhdGVGcmFtZVNpemUoKTsKICAgICB9
CiAKLSAgICBhdXRvIHNhbXBsZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCi0gICAgICAgIFt0aGlz
LCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYgc3VyZmFjZSkgLT4gUmVmUHRy
PE1lZGlhU2FtcGxlPiB7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gV1RGOjpzd2l0Y2hPbihmcmFt
ZSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiBz
dXJmYWNlKSAtPiBSZWZQdHI8VmlkZW9GcmFtZT4gewogICAgICAgICAgICAgaWYgKCFzdXJmYWNl
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4g
bV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwg
c2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZl
SW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlzLCBz
YW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPFZpZGVvRnJh
bWU+IHsKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVNZWRpYVNhbXBsZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBz
aXplKCkpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0
ZVZpZGVvRnJhbWUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6
ZSgpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4mIHNhbXBsZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAg
ICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiBzYW1w
bGUpIC0+IFJlZlB0cjxWaWRlb0ZyYW1lPiB7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1h
Z2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHNhbXBsZS5nZXQoKSwgc2FtcGxl
VGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9u
LT5jcmVhdGVWaWRlb0ZyYW1lKHNhbXBsZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAg
ICAgICAgfQogICAgICk7CiAKLSAgICBpZiAoIXNhbXBsZSkgeworICAgIGlmICghdmlkZW9GcmFt
ZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGE7CiAgICAgbWV0YWRhdGEu
Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwot
ICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCksIG1ldGFkYXRhKTsKKyAgICB2
aWRlb0ZyYW1lQXZhaWxhYmxlKCp2aWRlb0ZyYW1lLmdldCgpLCBtZXRhZGF0YSk7CiB9CiAKIHZv
aWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwdHVyZXJDb25maWd1cmF0aW9uQ2hhbmdl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2Nv
YS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXggYjllYjA4
NWQ0NzQ5MzRjNWUwNTFhNzVhYjFkZDAzY2M1NGU3Zjg1Mi4uNDQ4NjJkNWM5NjRmY2VkOTYzMmU2
NGI2MTM1NzlkM2U3MDQ5OGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgog
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM2LDEwICszNywx
MCBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotCi10eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IF9f
SU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7Cit1c2luZyBDR0ltYWdlUmVmID0gQ0dJbWFnZSo7Cit1
c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwordXNpbmcgSU9TdXJm
YWNlUmVmID0gc3RydWN0IF9fSU9TdXJmYWNlKjsKK3VzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0g
c3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBN
ZWRpYVRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291
cmNlLmNwcAppbmRleCAyNDNjYWFhNWM0Y2Y3MWZlYTg1ZDkyOTI4OGM2OTA3NTRiYWY5NDA0Li44
NDczNzA0MWUyN2JjYTk0ZWViZDg0OWNiMjYxZjg1ZjZmZDZlNTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY0Vuc3VyZVN0cmVhbUNvbGxlY3Rp
b25Qb3N0ZWQoV2ViS2l0TWVkaWFTdHJlYW1TcgogCiBjbGFzcyBJbnRlcm5hbFNvdXJjZSBmaW5h
bCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIsCiAgICAgcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIsCi0gICAgcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgIHB1YmxpYyBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEludGVybmFsU291cmNlKEdzdEVsZW1lbnQqIHBhcmVu
dCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBjb25zdCBTdHJpbmcmIHBhZE5hbWUp
CkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRp
bygpKQogICAgICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5hZGRBdWRpb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAg
ICAgbV90cmFjay5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAg
ICAgICAgIG1fdHJhY2suc291cmNlKCkuYWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAg
ICAgICAgbV9pc09ic2VydmluZyA9IHRydWU7CiAgICAgfQogCkBAIC0xOTYsNyArMTk2LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRpbygpKQogICAgICAgICAgICAgbV90
cmFjay5zb3VyY2UoKS5yZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAg
ZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAgICAgbV90cmFjay5zb3VyY2Uo
KS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fdHJhY2su
c291cmNlKCkucmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV90cmFj
ay5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgfQogCkBAIC0yNzIsMTMgKzI3MiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW1fcGFyZW50IHx8ICFt
X2lzT2JzZXJ2aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gc2FtcGxl
U2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgIEludFNpemUgY2FwdHVy
ZVNpemUoc2FtcGxlU2l6ZS53aWR0aCgpLCBzYW1wbGVTaXplLmhlaWdodCgpKTsKKyAgICAgICAg
YXV0byB2aWRlb0ZyYW1lU2l6ZSA9IHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOworICAg
ICAgICBJbnRTaXplIGNhcHR1cmVTaXplKHZpZGVvRnJhbWVTaXplLndpZHRoKCksIHZpZGVvRnJh
bWVTaXplLmhlaWdodCgpKTsKIAogICAgICAgICBhdXRvIHNldHRpbmdzID0gbV90cmFjay5zZXR0
aW5ncygpOwogICAgICAgICBtX2NvbmZpZ3VyZWRTaXplLnNldFdpZHRoKHNldHRpbmdzLndpZHRo
KCkpOwpAQCAtMjg5LDggKzI4OSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2NvbmZpZ3Vy
ZWRTaXplLmhlaWdodCgpKQogICAgICAgICAgICAgbV9jb25maWd1cmVkU2l6ZS5zZXRIZWlnaHQo
Y2FwdHVyZVNpemUuaGVpZ2h0KCkpOwogCi0gICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHNh
bXBsZS52aWRlb1JvdGF0aW9uKCk7Ci0gICAgICAgIGJvb2wgdmlkZW9NaXJyb3JlZCA9IHNhbXBs
ZS52aWRlb01pcnJvcmVkKCk7CisgICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHZpZGVvRnJh
bWUucm90YXRpb24oKTsKKyAgICAgICAgYm9vbCB2aWRlb01pcnJvcmVkID0gdmlkZW9GcmFtZS5p
c01pcnJvcmVkKCk7CiAgICAgICAgIGlmIChtX3ZpZGVvUm90YXRpb24gIT0gdmlkZW9Sb3RhdGlv
biB8fCBtX3ZpZGVvTWlycm9yZWQgIT0gdmlkZW9NaXJyb3JlZCkgewogICAgICAgICAgICAgbV92
aWRlb1JvdGF0aW9uID0gdmlkZW9Sb3RhdGlvbjsKICAgICAgICAgICAgIG1fdmlkZW9NaXJyb3Jl
ZCA9IHZpZGVvTWlycm9yZWQ7CkBAIC0zMDEsOCArMzAxLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHBhZC5nZXQoKSwgZ3N0X2V2ZW50X25ld190YWcoZ3N0X3Rh
Z19saXN0X25ldyhHU1RfVEFHX0lNQUdFX09SSUVOVEFUSU9OLCBvcmllbnRhdGlvbi51dGY4KCku
ZGF0YSgpLCBudWxscHRyKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogdmlkZW9GcmFt
ZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmc2FtcGxlKTsKLSAgICAgICAg
YXV0byogZ3N0U2FtcGxlID0gdmlkZW9GcmFtZS0+c2FtcGxlKCk7CisgICAgICAgIGF1dG8qIGdz
dFNhbXBsZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmdmlkZW9GcmFtZSkt
PnNhbXBsZSgpOwogICAgICAgICBpZiAoIW1fY29uZmlndXJlZFNpemUuaXNFbXB0eSgpICYmIG1f
bGFzdEtub3duU2l6ZSAhPSBtX2NvbmZpZ3VyZWRTaXplKSB7CiAgICAgICAgICAgICBtX2xhc3RL
bm93blNpemUgPSBtX2NvbmZpZ3VyZWRTaXplOwogICAgICAgICAgICAgdXBkYXRlQmxhY2tGcmFt
ZShnc3Rfc2FtcGxlX2dldF9jYXBzKGdzdFNhbXBsZSkpOwpAQCAtMzg0LDcgKzM4Myw3IEBAIHBy
aXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbmZpZ3VyZWRTaXplOwogICAgIEludFNpemUgbV9sYXN0
S25vd25TaXplOwogICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBtX2JsYWNrRnJhbWU7Ci0gICAgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBtX3ZpZGVvUm90
YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wgbV92aWRlb01p
cnJvcmVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggMTUwMDUwMmEzZWRjMDk5YjNkMmFjNmMyZmJm
NTk5OWUwZWQyYjBmNi4uNmJkNjBhYjI2ZjgzMDdkNzIxMDg5NzE2ZTc1YTRiZmNhYzVhMmQxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5j
cHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6
cHJvY2Vzc05ld0ZyYW1lKFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiYmIHZpZAogICAgIGlmICgh
aXNQcm9kdWNpbmdEYXRhKCkgfHwgbXV0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlz
cGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKFdURk1vdmUodmlkZW9GcmFtZSksIHsgfSk7Cisg
ICAgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9PYnNlcnZlcnMoV1RGTW92ZSh2aWRlb0ZyYW1lKSwgeyB9
KTsKIH0KIAogR3N0Rmxvd1JldHVybiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6Om5ld1Nh
bXBsZUNhbGxiYWNrKEdzdEVsZW1lbnQqIHNpbmssIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZSogc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNDAxZTRhMTQ5N2FjMjFhMDk5MWM2ZTU5OTE1NDNk
NWI5NWExZjJhZS4uNTBiMzllNTExYzA0OWI2ZWM0N2Y2MmZkZDRmN2I2N2EyYmExMmQwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC02OSwyNCArNjksMjQgQEAgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0
cmVhbWVyOjpNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIoUmVhbHRpbWVNZWQKICAg
ICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKICAgICAsIG1fZGV2aWNlVHlwZShkZXZpY2VU
eXBlKQogewotICAgIG1fc291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAg
ICBtX3NvdXJjZS0+YWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogTW9ja0Rpc3Bs
YXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjp+TW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVh
bWVyKCkKIHsKLSAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7
CisgICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZv
aWQgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjpzdG9wUHJvZHVjaW5nRGF0YSgp
CiB7Ci0gICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAg
IG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNl
LT5zdG9wKCk7CiB9CiAKIHZvaWQgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjpy
ZXF1ZXN0VG9FbmQoT2JzZXJ2ZXImIGNhbGxpbmdPYnNlcnZlcikKIHsKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjpyZXF1ZXN0VG9FbmQoY2FsbGluZ09ic2VydmVyKTsKLSAgICBtX3NvdXJjZS0+
cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9zb3VyY2UtPnJlbW92ZVZp
ZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgbV9zb3VyY2UtPnJlcXVlc3RUb0VuZChjYWxs
aW5nT2JzZXJ2ZXIpOwogfQogCkBAIC05Niw5ICs5Niw5IEBAIHZvaWQgTW9ja0Rpc3BsYXlDYXB0
dXJlU291cmNlR1N0cmVhbWVyOjpzZXRNdXRlZChib29sIGlzTXV0ZWQpCiAgICAgbV9zb3VyY2Ut
PnNldE11dGVkKGlzTXV0ZWQpOwogfQogCi12b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdT
dHJlYW1lcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9G
cmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNl
R1N0cmVhbWVyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZp
ZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLCBtZXRhZGF0YSk7CisgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7CiB9
CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUdTdHJlYW1lcjo6Y2FwYWJpbGl0aWVzKCkKQEAgLTE2Niw3ICsxNjYsNyBAQCB2
b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjp1cGRhdGVTYW1wbGVCdWZmZXIo
KQogICAgIG1ldGFkYXRhLT5jYXB0dXJlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29u
ZHNTaW5jZUVwb2NoKCk7CiAgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNvbmRzKCkpOwogICAg
IGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1
ZmZlcihXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIHByZXNlbnRhdGlvblRpbWUsIHNpemUoKSwgZnJh
bWVSYXRlKCksIHNhbXBsZVJvdGF0aW9uKCksIGZhbHNlLCBXVEZNb3ZlKG1ldGFkYXRhKSk7Ci0g
ICAgZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKHZpZGVvRnJhbWUuZ2V0KCksIHsgfSk7
CisgICAgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9PYnNlcnZlcnModmlkZW9GcmFtZS5nZXQoKSwgeyB9
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaAppbmRleCAzMTYxN2UzOGE2MzVk
YTlkNGFkZDY0NGVhMDg2NjdhZWJmYjk2NmZiLi4wMWMzYjU4MTI2MjcyNjJjMGZlMzNjNzY4ZWZj
YzdhZjkzOTQxNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VHU3RyZWFtZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgY2FuUmVzaXplVmlkZW9GcmFtZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9
OwogCi1jbGFzcyBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIgZmluYWwgOiBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVP
YnNlcnZlciB7CitjbGFzcyBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIgZmluYWwg
OiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9G
cmFtZU9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3Ig
Y3JlYXRlKGNvbnN0IENhcHR1cmVEZXZpY2UmLCBTdHJpbmcmJiwgY29uc3QgTWVkaWFDb25zdHJh
aW50cyopOwogCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE11dGVkKGJv
b2wgaXNNdXRlZCkgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAgICAvLyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShN
ZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlkZW9GcmFtZUF2
YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAKIHBy
aXZhdGU6CiAgICAgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGUsIFJlZjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcj4mJiwg
U3RyaW5nJiYsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyLmNwcApp
bmRleCA4YWNhMDQzOWY0OWJjYzA2MjkyNDVhZjZiN2E5ZTg1MjkxZjk1ZjFjLi41NzczMjc0NmM2
YmEwYmUyNTQwMGFkZjEwMzRiNTBkZGU1MWRlZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVy
OjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNCiB2b2lkIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lcjo6ZGlzcGF0Y2hTYW1wbGUoR1JlZlB0cjxHc3RTYW1w
bGU+JiYgZ3N0U2FtcGxlKQogewogICAgIGF1dG8qIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1
ZmZlcihnc3RTYW1wbGUuZ2V0KCkpOwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFZpZGVvRnJh
bWVHU3RyZWFtZXI6OmNyZWF0ZVdyYXBwZWRTYW1wbGUoZ3N0U2FtcGxlLCBmcm9tR3N0Q2xvY2tU
aW1lKEdTVF9CVUZGRVJfUFRTKGJ1ZmZlcikpKSwgeyB9KTsKKyAgICB2aWRlb0ZyYW1lQXZhaWxh
YmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZVdyYXBwZWRTYW1wbGUoZ3N0U2FtcGxlLCBm
cm9tR3N0Q2xvY2tUaW1lKEdTVF9CVUZGRVJfUFRTKGJ1ZmZlcikpKSwgeyB9KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL1JlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbQppbmRl
eCAzNWI5NzBkNjA4ZTM4ZTM1NTY3YzkzMzM1OTc2ZmU4YmM1ZmE1ZjEzLi41M2JlNWRkZDAxODM2
ZmQ5YmMzYzllZDRiNTgyMTBmYTE0NDZhZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbQpAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6
c3RhcnQoKQogICAgIH0pOwogCiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllcl0oTlNF
cnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewotICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIGJl
IHNhZmUgdG8gY2FsbCBgdmlkZW9TYW1wbGVBdmFpbGFibGVgIGZyb20gYW55IHRocmVhZC4gVGVz
dCB0aGlzIGFuZCBnZXQgcmlkIG9mIHRoaXMgbWFpbiB0aHJlYWQgaG9wLgorICAgICAgICAvLyBG
SVhNRTogSXQgc2hvdWxkIGJlIHNhZmUgdG8gY2FsbCBgdmlkZW9GcmFtZUF2YWlsYWJsZWAgZnJv
bSBhbnkgdGhyZWFkLiBUZXN0IHRoaXMgYW5kIGdldCByaWQgb2YgdGhpcyBtYWluIHRocmVhZCBo
b3AuCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMsIGVy
cm9yID0gcmV0YWluUHRyKGVycm9yKSwgaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIWVycm9yKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9W
aWRlb0ZyYW1lTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcAppbmRleCBlZjg3MDAyMGM5Yjk2
MjU1NzcyOWRmN2MxZTRjNTg2ZTVmYTM3Zjc4Li5hMmYxMGM0NGY4ZGFkNjk4YTViNWZkOWU2OTdl
MWMzNDMwZDM2YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3Bw
CkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8VmlkZW9G
cmFtZUxpYldlYlJUQz4gVmlkZW9GcmFtZUxpYldlYlJUQzo6Y3JlYXRlKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24sIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBDb252
ZXJzaW9uQ2FsbGJhY2smJiBjb252ZXJzaW9uQ2FsbGJhY2spCitSZWY8VmlkZW9GcmFtZUxpYldl
YlJUQz4gVmlkZW9GcmFtZUxpYldlYlJUQzo6Y3JlYXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25U
aW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZw
dHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNr
JiYgY29udmVyc2lvbkNhbGxiYWNrKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVv
RnJhbWVMaWJXZWJSVEMocHJlc2VudGF0aW9uVGltZSwgaXNNaXJyb3JlZCwgcm90YXRpb24sIFdU
Rk1vdmUoYnVmZmVyKSwgV1RGTW92ZShjb252ZXJzaW9uQ2FsbGJhY2spKSk7CiB9CiAKLVZpZGVv
RnJhbWVMaWJXZWJSVEM6OlZpZGVvRnJhbWVMaWJXZWJSVEMoTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNpb25D
YWxsYmFjayYmIGNvbnZlcnNpb25DYWxsYmFjaykKK1ZpZGVvRnJhbWVMaWJXZWJSVEM6OlZpZGVv
RnJhbWVMaWJXZWJSVEMoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3Jl
ZCwgUm90YXRpb24gcm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI+JiYgYnVmZmVyLCBDb252ZXJzaW9uQ2FsbGJhY2smJiBjb252ZXJzaW9uQ2FsbGJh
Y2spCiAgICAgOiBWaWRlb0ZyYW1lKHByZXNlbnRhdGlvblRpbWUsIGlzTWlycm9yZWQsIHJvdGF0
aW9uKQogICAgICwgbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgICwgbV9zaXplKG1fYnVm
ZmVyLT53aWR0aCgpLCAgbV9idWZmZXItPmhlaWdodCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0Zy
YW1lTGliV2ViUlRDLmgKaW5kZXggM2E2NjM5MDdhNDZiOGY3OTNkNzUwODhkODhiYzQ5NjU5YzM2
MmU0NC4uNGM5ZTVhNmNjNTIzZmYwODdmMWYwNjBiMGFmZjUxNGU1M2FhYzUxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJh
bWVMaWJXZWJSVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5oCkBAIC00MiwxNiArNDIsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgVmlkZW9GcmFtZUxpYldlYlJUQyBmaW5hbCA6IHB1YmxpYyBW
aWRlb0ZyYW1lIHsKIHB1YmxpYzoKICAgICB1c2luZyBDb252ZXJzaW9uQ2FsbGJhY2sgPSBGdW5j
dGlvbjxSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4od2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVy
Jik+OwotICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUxpYldlYlJUQz4gY3JlYXRlKE1lZGlhVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJik7CisgICAgc3Rh
dGljIFJlZjxWaWRlb0ZyYW1lTGliV2ViUlRDPiBjcmVhdGUoTWVkaWFUaW1lLCBib29sIGlzTWly
cm9yZWQsIFJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVm
ZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJik7CiAKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQog
CiBwcml2YXRlOgotICAgIFZpZGVvRnJhbWVMaWJXZWJSVEMoTWVkaWFUaW1lLCBib29sIGlzTWly
cm9yZWQsIFZpZGVvUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJh
bWVCdWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKKyAgICBWaWRlb0ZyYW1lTGliV2Vi
UlRDKE1lZGlhVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOwog
CiAgICAgLy8gVmlkZW9GcmFtZQogICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1h
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdmlkZW9QaXhlbEZvcm1hdDsgfQorICAgIHVpbnQz
Ml90IHBpeGVsRm9ybWF0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92aWRlb1BpeGVsRm9ybWF0
OyB9CiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogCiAg
ICAgY29uc3QgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gbV9i
dWZmZXI7CkBAIC02Nyw3ICs2Nyw2IEBAIHByaXZhdGU6CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9GcmFtZUxpYldlYlJUQykKICAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlk
ZW9GcmFtZS5pc0xpYldlYlJUQygpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6Vmlk
ZW9GcmFtZT4obWVkaWFTYW1wbGUpICYmIGlzPFdlYkNvcmU6OlZpZGVvRnJhbWVMaWJXZWJSVEM+
KGRvd25jYXN0PFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSk7IH0KIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBVU0Uo
TElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJS
VEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dz
dHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCmluZGV4IDdk
OTUwZjY3ODAwNjViMmU5ZTU3NmQ0NmM1NTZhMTNhNzUzYzUwZTkuLmNmMDJlOWMzNjE2NjFhMThi
ZGZiMjllMTBlNzhkNDJiOGRhYzQ5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldl
YlJUQy5jcHAKQEAgLTYxLDExICs2MSwxMSBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUxpYldlYlJUQzo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYQogICAg
IGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IGZyb21Hc3RDbG9ja1RpbWUoZnJhbWUudGltZXN0YW1w
X3VzKCkpOwogICAgIGlmIChmcmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS0+dHlwZSgpID09IHdl
YnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcjo6VHlwZTo6a05hdGl2ZSkgewogICAgICAgICBhdXRvKiBm
cmFtZWJ1ZmZlciA9IHN0YXRpY19jYXN0PEdTdHJlYW1lclZpZGVvRnJhbWVMaWJXZWJSVEMqPihm
cmFtZS52aWRlb19mcmFtZV9idWZmZXIoKS5nZXQoKSk7Ci0gICAgICAgIHZpZGVvU2FtcGxlQXZh
aWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZVdyYXBwZWRTYW1wbGUoZnJhbWVidWZm
ZXItPmdldFNhbXBsZSgpLCBwcmVzZW50YXRpb25UaW1lLCBzdGF0aWNfY2FzdDxNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbj4oZnJhbWUucm90YXRpb24oKSkpLCB7IH0pOworICAgICAgICB2aWRl
b0ZyYW1lZUF2YWlsYWJsZShWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2FtcGxl
KGZyYW1lYnVmZmVyLT5nZXRTYW1wbGUoKSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nhc3Q8
VmlkZW9GcmFtZTo6Um90YXRpb24+KGZyYW1lLnJvdGF0aW9uKCkpKSwgeyB9KTsKICAgICB9IGVs
c2UgewogICAgICAgICBhdXRvIGdzdFNhbXBsZSA9IGNvbnZlcnRMaWJXZWJSVENWaWRlb0ZyYW1l
VG9HU3RyZWFtZXJTYW1wbGUoZnJhbWUpOwogICAgICAgICBhdXRvIG1ldGFkYXRhID0gc3RkOjpt
YWtlX29wdGlvbmFsKG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUoZnJhbWUpKTsKLSAgICAgICAgdmlk
ZW9TYW1wbGVBdmFpbGFibGUoVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoZ3N0
U2FtcGxlKSwgeyB9LCBwcmVzZW50YXRpb25UaW1lLCBzdGF0aWNfY2FzdDxNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbj4oZnJhbWUucm90YXRpb24oKSksIGZhbHNlLCBXVEZNb3ZlKG1ldGFkYXRh
KSksIHsgfSk7CisgICAgICAgIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZUdTdHJlYW1l
cjo6Y3JlYXRlKFdURk1vdmUoZ3N0U2FtcGxlKSwgeyB9LCBwcmVzZW50YXRpb25UaW1lLCBzdGF0
aWNfY2FzdDxWaWRlb0ZyYW1lOjpSb3RhdGlvbj4oZnJhbWUucm90YXRpb24oKSksIGZhbHNlLCBX
VEZNb3ZlKG1ldGFkYXRhKSksIHsgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUxpYldlYlJUQy5jcHAKaW5kZXggYzZkY2FkNzUyNWVkYmU2OGQxMTBhZTAyMTI1NzFjYjM2
YjRmODZmYi4uMGQxNTczMDA3MDUxMjYxZmY3NDUzOTM4NWJiZjc4MzgzNjFhOTMxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJl
YW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcApAQCAtNTAsMTkgKzUwLDE5IEBAIFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQzo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlTGliV2ViUlRDKFJlZjxNCiB7CiB9CiAKLXZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlTGliV2ViUlRDOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxl
LCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VMaWJXZWJSVEM6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKLSAgICBzd2l0Y2ggKHNhbXBsZS52aWRlb1JvdGF0
aW9uKCkpIHsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOgorICAg
IHN3aXRjaCAodmlkZW9GcmFtZS5yb3RhdGlvbigpKSB7CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6Tm9uZToKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRl
b1JvdGF0aW9uXzA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb246OlVwc2lkZURvd246CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBz
aWRlRG93bjoKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0
aW9uXzE4MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6UmlnaHQ6CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ6CiAgICAg
ICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl85MDsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDoKKyAg
ICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OgogICAgICAgICBtX2N1cnJlbnRSb3Rh
dGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcwOwogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaAppbmRleCA3YjFkZWRjMTg4ZTMzNWE1
YThkMDYyZmUyZjAzYTFkYWYxNTM0YzllLi43MDI0ODE0YWFhZjZiN2JmMWZiNGZmMTliYmE4MWZm
MzNmZDZiNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJU
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9n
c3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmgKQEAgLTQxLDgg
KzQxLDggQEAgcHJpdmF0ZToKIAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVv
RnJhbWVCdWZmZXI+IGNyZWF0ZUJsYWNrRnJhbWUoc2l6ZV90LCBzaXplX3QpIGZpbmFsOwogCi0g
ICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRh
ZGF0YSkgZmluYWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2Vy
dmVyIEFQSQorICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9G
cmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDI0ZTExYWUxM2ZiYmU3YzFjODZmZmE2YThm
NzBiMjRkZjYxZmU2YTEuLjU4MGNjYmJmNTU0NDExMmMzNmIzZjEzODZkMzVmOWZmYmVhZTk1ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6
CiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOyB9CiAgICAgYm9vbCBp
bnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFsOwogCi0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24gc2FtcGxlUm90YXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NhbXBsZVJvdGF0aW9u
OyB9CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gdmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV92aWRlb0ZyYW1lUm90YXRpb247IH0KICAgICB2b2lkIHNldEZyYW1l
UmF0ZVdpdGhQcmVzZXQoZG91YmxlLCBSZWZQdHI8VmlkZW9QcmVzZXQ+KSBmaW5hbDsKICAgICBi
b29sIHByZWZlcnNQcmVzZXQoVmlkZW9QcmVzZXQmKSBmaW5hbDsKICAgICB2b2lkIGdlbmVyYXRl
UHJlc2V0cygpIGZpbmFsOwpAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXRTZXNzaW9uU2l6ZUFuZEZyYW1lUmF0ZSgpOwogICAgIGJvb2wgc2V0UHJlc2V0KE5TU3RyaW5n
Kik7Ci0gICAgdm9pZCBjb21wdXRlU2FtcGxlUm90YXRpb24oKTsKKyAgICB2b2lkIGNvbXB1dGVW
aWRlb0ZyYW1lUm90YXRpb24oKTsKICAgICBBVkZyYW1lUmF0ZVJhbmdlKiBmcmFtZUR1cmF0aW9u
Rm9yRnJhbWVSYXRlKGRvdWJsZSk7CiAKICAgICAvLyBPcmllbnRhdGlvbk5vdGlmaWVyOjpPYnNl
cnZlciBBUEkKQEAgLTExOCwxMyArMTE4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVW
ZXJpZnlDYXB0dXJpbmdUaW1lcigpOwogICAgIHZvaWQgdmVyaWZ5SXNDYXB0dXJpbmcoKTsKIAot
ICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbV9idWZmZXI7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+
IG1fYnVmZmVyOwogICAgIFJldGFpblB0cjxBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ+IG1fdmlk
ZW9PdXRwdXQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1f
aW1hZ2VUcmFuc2ZlclNlc3Npb247CiAKICAgICBpbnQgbV9zZW5zb3JPcmllbnRhdGlvbiB7IDAg
fTsKICAgICBpbnQgbV9kZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsKLSAgICBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiBtX3NhbXBsZVJvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBtX3ZpZGVvRnJhbWVSb3RhdGlv
biB7IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lIH07CiAKICAgICBzdGQ6Om9wdGlvbmFsPFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgc3RkOjpv
cHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAzNzhjOWFmOTdkNzUyNWNkZmMyODU1
ZmUxODQwYTk2ODYxYWRjMTdlLi4yYmM2MmZlODU0NTdjNTM2M2I0YjA1OGJmY2NjYWQ3MTMzMDY5
MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0yNTEsNyArMjUxLDcgQEAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
c2V0dGluZ3MoKQogICAgIHNldHRpbmdzLnNldEZyYW1lUmF0ZShmcmFtZVJhdGUoKSk7CiAKICAg
ICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgaWYgKG1fc2FtcGxlUm90YXRpb24gPT0g
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQgfHwgbV9zYW1wbGVSb3RhdGlvbiA9PSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgaWYgKG1fdmlkZW9GcmFtZVJv
dGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IG1fdmlkZW9GcmFtZVJvdGF0
aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAgICAgICAgc2l6ZSA9IHNpemUu
dHJhbnNwb3NlZFNpemUoKTsKICAgICAKICAgICBzZXR0aW5ncy5zZXRXaWR0aChzaXplLndpZHRo
KCkpOwpAQCAtNDk2LDcgKzQ5Niw3IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVw
Q2FwdHVyZVNlc3Npb24oKQogICAgIHNldFNlc3Npb25TaXplQW5kRnJhbWVSYXRlKCk7CiAKICAg
ICBtX3NlbnNvck9yaWVudGF0aW9uID0gc2Vuc29yT3JpZW50YXRpb25Gcm9tVmlkZW9PdXRwdXQo
bV92aWRlb091dHB1dC5nZXQoKSk7Ci0gICAgY29tcHV0ZVNhbXBsZVJvdGF0aW9uKCk7CisgICAg
Y29tcHV0ZVZpZGVvRnJhbWVSb3RhdGlvbigpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01
MjEsMzggKzUyMSwzOCBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpvcmllbnRhdGlvbkNo
YW5nZWQoaW50IG9yaWVudGF0aW9uKQogewogICAgIEFTU0VSVChvcmllbnRhdGlvbiA9PSAwIHx8
IG9yaWVudGF0aW9uID09IDkwIHx8IG9yaWVudGF0aW9uID09IC05MCB8fCBvcmllbnRhdGlvbiA9
PSAxODApOwogICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKLSAgICBjb21w
dXRlU2FtcGxlUm90YXRpb24oKTsKLSAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJ
REVOVElGSUVSLCAicm90YXRpb24gPSAiLCBtX3NhbXBsZVJvdGF0aW9uLCAiLCBvcmllbnRhdGlv
biA9ICIsIG1fZGV2aWNlT3JpZW50YXRpb24pOworICAgIGNvbXB1dGVWaWRlb0ZyYW1lUm90YXRp
b24oKTsKKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAicm90
YXRpb24gPSAiLCBtX3ZpZGVvRnJhbWVSb3RhdGlvbiwgIiwgb3JpZW50YXRpb24gPSAiLCBtX2Rl
dmljZU9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y29tcHV0
ZVNhbXBsZVJvdGF0aW9uKCkKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNvbXB1dGVWaWRl
b0ZyYW1lUm90YXRpb24oKQogewogICAgIGJvb2wgZnJvbnRDYW1lcmEgPSBbZGV2aWNlKCkgcG9z
aXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uRnJvbnQ7Ci0gICAgTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb247CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24g
dmlkZW9GcmFtZVJvdGF0aW9uOwogICAgIHN3aXRjaCAobV9zZW5zb3JPcmllbnRhdGlvbiAtIG1f
ZGV2aWNlT3JpZW50YXRpb24pIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9u
ID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CisgICAgICAgIHZpZGVvRnJhbWVS
b3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIDE4MDoKICAgICBjYXNlIC0xODA6Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9uID0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247CisgICAgICAgIHZpZGVvRnJhbWVS
b3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIDkwOgogICAgIGNhc2UgLTI3MDoKLSAgICAgICAgc2FtcGxlUm90YXRpb24g
PSBmcm9udENhbWVyYSA/IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IDogTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OworICAgICAgICB2aWRlb0ZyYW1lUm90YXRpb24g
PSBmcm9udENhbWVyYSA/IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IDogVmlkZW9GcmFtZTo6
Um90YXRpb246OlJpZ2h0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIC05MDoKICAgICBjYXNl
IDI3MDoKLSAgICAgICAgc2FtcGxlUm90YXRpb24gPSBmcm9udENhbWVyYSA/IE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpSaWdodCA6IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0
OworICAgICAgICB2aWRlb0ZyYW1lUm90YXRpb24gPSBmcm9udENhbWVyYSA/IFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpSaWdodCA6IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgc2FtcGxlUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAg
ICAgICAgdmlkZW9GcmFtZVJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiAg
ICAgfQotICAgIGlmIChzYW1wbGVSb3RhdGlvbiA9PSBtX3NhbXBsZVJvdGF0aW9uKQorICAgIGlm
ICh2aWRlb0ZyYW1lUm90YXRpb24gPT0gbV92aWRlb0ZyYW1lUm90YXRpb24pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fc2FtcGxlUm90YXRpb24gPSBzYW1wbGVSb3RhdGlvbjsKKyAgICBtX3Zp
ZGVvRnJhbWVSb3RhdGlvbiA9IHZpZGVvRnJhbWVSb3RhdGlvbjsKICAgICBub3RpZnlTZXR0aW5n
c0RpZENoYW5nZU9ic2VydmVycyh7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6
V2lkdGgsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pOwogfQog
CkBAIC01NjEsMTIgKzU2MSwxMiBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJl
T3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYQogICAgIGlmICgr
K21fZnJhbWVzQ291bnQgPD0gZnJhbWVzVG9Ecm9wV2hlblN0YXJ0aW5nKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVC
dWZmZXIsIFtjYXB0dXJlQ29ubmVjdGlvbiBpc1ZpZGVvTWlycm9yZWRdLCBtX3NhbXBsZVJvdGF0
aW9uKTsKKyAgICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVC
dWZmZXIsIFtjYXB0dXJlQ29ubmVjdGlvbiBpc1ZpZGVvTWlycm9yZWRdLCBtX3ZpZGVvRnJhbWVS
b3RhdGlvbik7CiAgICAgbV9idWZmZXIgPSAmdmlkZW9GcmFtZS5nZXQoKTsKICAgICBzZXRJbnRy
aW5zaWNTaXplKGV4cGFuZGVkSW50U2l6ZSh2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25TaXplKCkp
KTsKICAgICBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgIG1ldGFkYXRhLmNh
cHR1cmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAg
ICBkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoV1RGTW92ZSh2aWRlb0ZyYW1lKSwgbWV0
YWRhdGEpOworICAgIGRpc3BhdGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFdURk1vdmUodmlkZW9G
cmFtZSksIG1ldGFkYXRhKTsKIH0KIAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVy
ZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCAwMzUzMjU4YWI2MWY0MmRhNDIzYzE2NTc1NDFj
MDg3MDM1M2JkZGQ0Li5jMDU1ZDNjNjMzZGQwZWYwNjE0YWVmM2NiY2QwNzkxOWM0NzkxZDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC05MywxNiArOTMs
MTYgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVy
KCkKICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+
bmF0aXZlSW1hZ2UoKSkKICAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCk7CiAKLSAgICBhdXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7Ci0gICAgYXV0byBz
YW1wbGVCdWZmZXIgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShw
bGF0Zm9ybUltYWdlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkp
OwotICAgIGlmICghc2FtcGxlQnVmZmVyKQorICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25k
cygpKTsKKyAgICBhdXRvIHZpZGVvRnJhbWUgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVWaWRlb0ZyYW1lKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHByZXNlbnRhdGlvblRpbWUsIHNpemUo
KSwgdmlkZW9GcmFtZVJvdGF0aW9uKCkpOworICAgIGlmICghdmlkZW9GcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byBjYXB0dXJlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNl
Y29uZHNTaW5jZUVwb2NoKCk7Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2FtcGxlQnVmZmVyID0gV1RGTW92ZShzYW1wbGVC
dWZmZXIpLCBjYXB0dXJlVGltZV0oKSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCB2aWRlb0ZyYW1lID0gV1RG
TW92ZSh2aWRlb0ZyYW1lKSwgY2FwdHVyZVRpbWVdKCkgbXV0YWJsZSB7CiAgICAgICAgIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGE7CiAgICAgICAgIG1ldGFkYXRhLmNhcHR1cmVUaW1l
ID0gY2FwdHVyZVRpbWU7Ci0gICAgICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycygq
c2FtcGxlQnVmZmVyLCBtZXRhZGF0YSk7CisgICAgICAgIGRpc3BhdGNoVmlkZW9GcmFtZVRvT2Jz
ZXJ2ZXJzKCp2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXggOTJjMmZlYzY4MmRk
NmFlNzY0ZmJiMjkwNGNhYzhmZWZhNDk2NzM0Zi4uMWU5MTMzZTlmNWM5NGY0MjJlNDgyMjZjNWZi
M2JjZjI2NWJlOTg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLmgKQEAgLTQ5LDggKzQ5LDggQEAgcHJpdmF0ZToKICAgICBSZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VDb2NvYShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNr
SW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJik7CiAg
ICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgd2VicnRjOjpCdWZmZXJUeXBlKTsKLSAgICBSZWZQdHI8VmlkZW9GcmFtZT4g
dG9WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYsIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uKTsKLSAgICBSZWY8VmlkZW9GcmFtZT4gY3JlYXRlVmlkZW9TYW1wbGVGcm9tQ1ZQ
aXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwg
aW50NjRfdCk7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+IHRvVmlkZW9GcmFtZShjb25zdCB3ZWJy
dGM6OlZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbik7CisgICAgUmVmPFZpZGVvRnJh
bWU+IGNyZWF0ZVZpZGVvU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwg
VmlkZW9GcmFtZTo6Um90YXRpb24sIGludDY0X3QpOwogCiAgICAgLy8gcnRjOjpWaWRlb1NpbmtJ
bnRlcmZhY2UKICAgICB2b2lkIE9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0K
aW5kZXggZWUyODIzYzFlYTczODVkOWExODQwMTk2YzdkY2JiNmIzMTA0MWIwNS4uZTAyZjgzMDM4
YTVjMWFiYWUyODEzMGZhZDQ5NDE1NDZkM2JmYzIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtOTEsMTIgKzkxLDEyIEBAIENWUGl4
ZWxCdWZmZXJQb29sUmVmIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1
ZmZlclBvb2woc2l6ZV90IHdpCiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpOwog
fQogCi1SZWY8VmlkZW9GcmFtZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OmNy
ZWF0ZVZpZGVvU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlciwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGludDY0X3QgdGltZVN0
YW1wKQorUmVmPFZpZGVvRnJhbWU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpj
cmVhdGVWaWRlb1NhbXBsZUZyb21DVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxC
dWZmZXIsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBpbnQ2NF90IHRpbWVTdGFtcCkK
IHsKICAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lKHRpbWVTdGFtcCwg
MTAwMDAwMCksIGZhbHNlLCByb3RhdGlvbiwgcGl4ZWxCdWZmZXIpOwogfQogCi1SZWZQdHI8Vmlk
ZW9GcmFtZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShj
b25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbikKK1JlZlB0cjxWaWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYTo6dG9WaWRlb0ZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIGlmIChtdXRlZCgpKSB7CiAgICAg
ICAgIGlmICghbV9ibGFja0ZyYW1lIHx8IG1fYmxhY2tGcmFtZVdpZHRoICE9IGZyYW1lLndpZHRo
KCkgfHwgbV9ibGFja0ZyYW1lSGVpZ2h0ICE9IGZyYW1lLmhlaWdodCgpKSB7CkBAIC0xNDQsMjAg
KzE0NCwyMCBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgd2VicnRjVgogICAgIHVuc2lnbmVkIHdpZHRoID0g
d2VicnRjVmlkZW9GcmFtZS53aWR0aCgpOwogICAgIHVuc2lnbmVkIGhlaWdodCA9IHdlYnJ0Y1Zp
ZGVvRnJhbWUuaGVpZ2h0KCk7CiAKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbjsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbjsKICAgICBzd2l0Y2ggKHdl
YnJ0Y1ZpZGVvRnJhbWUucm90YXRpb24oKSkgewogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3Rh
dGlvbl8wOgotICAgICAgICByb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lOworICAgICAgICByb3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOgotICAgICAg
ICByb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOworICAg
ICAgICByb3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA6Ci0gICAgICAgIHJv
dGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OworICAgICAgICByb3Rh
dGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDsKICAgICAgICAgc3RkOjpzd2FwKHdp
ZHRoLCBoZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90
YXRpb25fMjcwOgotICAgICAgICByb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpMZWZ0OworICAgICAgICByb3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0Owog
ICAgICAgICBzdGQ6OnN3YXAod2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
OjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgd2VicnRjVgogICAgICAgICByZXR1
cm47CiAKICAgICBzZXRJbnRyaW5zaWNTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwotICAg
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKCp2aWRlb0ZyYW1lLCBtZXRhZGF0YUZyb21WaWRlb0ZyYW1l
KHdlYnJ0Y1ZpZGVvRnJhbWUpKTsKKyAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKCp2aWRlb0ZyYW1l
LCBtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKHdlYnJ0Y1ZpZGVvRnJhbWUpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5jcHAKaW5kZXggM2EzZmNiZjk2ZWY4MjAxZjkwYmNlODdlNWUyZGViYzFkZDFj
ZDYwNi4uYmNlZjZhMTUwNjFkMDJhNjI1ODY4MzM1MjVkMmY4ZTJhOWJiNDc2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCkBAIC02Myw0
NiArNjMsNDYgQEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OlJlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZUNvY29hKFJlZjxNZWRpYVN0cmUKIHsKIH0KIAotdm9pZCBSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1w
bGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlQ29jb2E6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICBpZiAoISgrK21fbnVtYmVyT2ZGcmFtZXMgJSA2MCkpCiAgICAgICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgImZyYW1lICIsIG1fbnVtYmVyT2ZGcmFtZXMpOwogI2VuZGlmCiAK
LSAgICBzd2l0Y2ggKHNhbXBsZS52aWRlb1JvdGF0aW9uKCkpIHsKLSAgICBjYXNlIE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOgorICAgIHN3aXRjaCAodmlkZW9GcmFtZS5yb3RhdGlv
bigpKSB7CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZToKICAgICAgICAgbV9j
dXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd246CisgICAg
Y2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjoKICAgICAgICAgbV9jdXJyZW50
Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBWaWRl
b0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ6CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2Vi
cnRjOjprVmlkZW9Sb3RhdGlvbl85MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDoKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9u
OjpMZWZ0OgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRp
b25fMjcwOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBib29sIHNob3VsZEFwcGx5Um90
YXRpb24gPSBtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgbV9jdXJyZW50Um90YXRpb24gIT0gd2Vi
cnRjOjprVmlkZW9Sb3RhdGlvbl8wOwotICAgIGlmICghc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBp
czxWaWRlb0ZyYW1lPihzYW1wbGUpKSB7Ci0gICAgICAgIGlmIChkb3duY2FzdDxWaWRlb0ZyYW1l
PihzYW1wbGUpLmlzUmVtb3RlUHJveHkoKSkgewotICAgICAgICAgICAgUmVmIHZpZGVvRnJhbWUg
eyBkb3duY2FzdDxWaWRlb0ZyYW1lPihzYW1wbGUpIH07Ci0gICAgICAgICAgICBhdXRvIHNpemUg
PSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOwotICAgICAgICAgICAgc2VuZEZyYW1lKHdlYnJ0
Yzo6dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKCZ2aWRlb0ZyYW1lLmxlYWtSZWYoKSwKKyAgICBp
ZiAoIXNob3VsZEFwcGx5Um90YXRpb24pIHsKKyAgICAgICAgaWYgKHZpZGVvRnJhbWUuaXNSZW1v
dGVQcm94eSgpKSB7CisgICAgICAgICAgICBSZWYgcmVtb3RlVmlkZW9GcmFtZSB7IHZpZGVvRnJh
bWUgfTsKKyAgICAgICAgICAgIGF1dG8gc2l6ZSA9IHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6
ZSgpOworICAgICAgICAgICAgc2VuZEZyYW1lKHdlYnJ0Yzo6dG9XZWJSVENWaWRlb0ZyYW1lQnVm
ZmVyKCZyZW1vdGVWaWRlb0ZyYW1lLmxlYWtSZWYoKSwKICAgICAgICAgICAgICAgICBbXShhdXRv
KiBwb2ludGVyKSB7IHJldHVybiBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPnBp
eGVsQnVmZmVyKCk7IH0sCiAgICAgICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyBzdGF0
aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPmRlcmVmKCk7IH0sCiAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUu
aGVpZ2h0KCkpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGRvd25jYXN0PFZpZGVvRnJhbWU+KHNhbXBsZSkuaXNMaWJXZWJSVEMoKSkgewotICAgICAgICAg
ICAgc2VuZEZyYW1lKGRvd25jYXN0PFZpZGVvRnJhbWVMaWJXZWJSVEM+KHNhbXBsZSkuYnVmZmVy
KCkpOworICAgICAgICBpZiAodmlkZW9GcmFtZS5pc0xpYldlYlJUQygpKSB7CisgICAgICAgICAg
ICBzZW5kRnJhbWUoZG93bmNhc3Q8VmlkZW9GcmFtZUxpYldlYlJUQz4odmlkZW9GcmFtZSkuYnVm
ZmVyKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0
byBwaXhlbEJ1ZmZlciA9IHNhbXBsZS5waXhlbEJ1ZmZlcigpOworICAgIGF1dG8gcGl4ZWxCdWZm
ZXIgPSB2aWRlb0ZyYW1lLnBpeGVsQnVmZmVyKCk7CiAgICAgYXV0byBwaXhlbEZvcm1hdFR5cGUg
PSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKIAogICAgIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0ZWRCdWZmZXIgPSBwaXhlbEJ1ZmZlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXgg
ZmU3ZGRkMTA4NjZjNzc5NTljZjAyNzMyYzczYTFkZWUyYmU2NDFiZC4uYmZjYmFmZDJhYzQ0NGIy
NzVkMTZkOWRkNjFlOGI1ZjNlOTcxZmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZUNvY29hLmgKQEAgLTQ0LDggKzQ0LDggQEAgcHJpdmF0ZToKIAogICAg
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IGNyZWF0ZUJsYWNr
RnJhbWUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KSBmaW5hbDsKIAotICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgQVBJCi0gICAgdm9pZCB2aWRlb1Nh
bXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFs
OworICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciBBUEkKKyAg
ICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnRU
b1lVVihDVlBpeGVsQnVmZmVyUmVmKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
cm90YXRlUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgd2VicnRjOjpWaWRlb1JvdGF0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpp
bmRleCAzOWI5OThkNGY1NDU5Yjk5MjQyMDU1NjNiOTZmN2RkMmIyNTRkODFkLi5kNDc4ZTEzOTc1
ZTZkN2Q3ZTc1ZDJjMTRiNGE3MzMwMzhjMWY0N2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbXBvcnQgIkltYWdlUm90YXRpb25TZXNzaW9uVlQuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCiAjaW1wb3J0ICJQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJSZWFsdGltZVZpZGVvVXRpbGl0aWVz
LmgiCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAK
aW5kZXggM2NmNzQ2MGM4MGUzYmUxZDViYTNmMGNlZDdjMTliMjVkZjI5YWJmMi4uNGZlYzRkOTM5
YmIyOTJkNjQ2NDlmOTVkZTJkNzdlOTcyODY4MDcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTE4
MCw3ICsxODAsNyBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpzZXR0aW5ncygpCiAgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKGZy
YW1lUmF0ZSgpKTsKICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgaWYgKG1vY2tD
YW1lcmEoKSkgewotICAgICAgICBpZiAobV9kZXZpY2VPcmllbnRhdGlvbiA9PSBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCBtX2RldmljZU9yaWVudGF0aW9uID09IE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodCkKKyAgICAgICAgaWYgKG1fZGV2aWNlT3JpZW50YXRp
b24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQgfHwgbV9kZXZpY2VPcmllbnRhdGlvbiA9
PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAgICAgICBzaXplID0gc2l6ZS50
cmFuc3Bvc2VkU2l6ZSgpOwogICAgIH0KICAgICBzZXR0aW5ncy5zZXRXaWR0aChzaXplLndpZHRo
KCkpOwpAQCAtNDk2LDE2ICs0OTYsMTYgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
b3JpZW50YXRpb25DaGFuZ2VkKGludCBvcmllbnRhdGlvbikKICAgICBhdXRvIGRldmljZU9yaWVu
dGF0aW9uID0gbV9kZXZpY2VPcmllbnRhdGlvbjsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7
CiAgICAgY2FzZSAwOgotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246Ok5vbmU7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBWaWRl
b0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA5MDoKLSAg
ICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpS
aWdodDsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9u
OjpSaWdodDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAtOTA6Ci0gICAgICAgIG1fZGV2aWNl
T3JpZW50YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAgICAgICAg
bV9kZXZpY2VPcmllbnRhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIDE4MDoKLSAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOworICAgICAgICBtX2RldmljZU9y
aWVudGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd247CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oCmluZGV4IGZjNWZjN2FhMWNiNzZmYTZkOTczOTA1ODY1YmZhZmVjZWRlMzZiYzcuLmQ4YmFj
NTYxZGE0YjEzZmMzNzIxZGMwODQ0NWM1NDJkMTQ5ZDA1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTYy
LDcgKzYyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOwogICAg
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4pIG92ZXJyaWRlOwotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHNh
bXBsZVJvdGF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbjsg
fQorICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHZpZGVvRnJhbWVSb3RhdGlvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fZGV2aWNlT3JpZW50YXRpb247IH0KICAgICB2b2lkIGdlbmVyYXRlUHJl
c2V0cygpIG92ZXJyaWRlOwogCiAgICAgSW50U2l6ZSBjYXB0dXJlU2l6ZSgpIGNvbnN0OwpAQCAt
MTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgQ29sb3IgbV9maWxsQ29sb3IgeyBDb2xvcjo6
YmxhY2sgfTsKICAgICBNb2NrTWVkaWFEZXZpY2UgbV9kZXZpY2U7CiAgICAgUmVmUHRyPFZpZGVv
UHJlc2V0PiBtX3ByZXNldDsKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX2Rldmlj
ZU9yaWVudGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBW
aWRlb0ZyYW1lOjpSb3RhdGlvbiBtX2RldmljZU9yaWVudGF0aW9uIHsgVmlkZW9GcmFtZTo6Um90
YXRpb246Ok5vbmUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlODZhZTVmZjJiY2M1YzI3MzU0MmE5Y2VmMzVlNzRk
N2EwYThmNjIzLi41NjcwYjZiZmE2N2UzZGI2ZGI3NjgyODk2NmI2MmZiNTExOGRjM2ExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01NTI1LDcgKzU1MjUsNyBAQCB2b2lk
IEludGVybmFsczo6c3RvcE9ic2VydmluZ1JlYWx0aW1lTWVkaWFTb3VyY2UoKQogICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86CiAgICAgY2FzZSBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlOjpTY3JlZW46CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpXaW5kb3c6Ci0gICAgICAgIG1fdHJhY2tTb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2
ZXIoKnRoaXMpOworICAgICAgICBtX3RyYWNrU291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2
ZXIoKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTU1Miw3ICs1
NTUyLDcgQEAgdm9pZCBJbnRlcm5hbHM6Om9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3Ry
ZWFtVHJhY2smIHRyYWNrKQogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Vmlk
ZW86CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpTY3JlZW46CiAgICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgIG1fdHJhY2tTb3Vy
Y2UtPmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3RyYWNrU291cmNl
LT5hZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtNTU2OSwxMyArNTU2OSwxMyBAQCB2b2lkIEludGVybmFsczo6bWVkaWFTdHJl
YW1UcmFja1ZpZGVvRnJhbWVSb3RhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8SURMU2hvcnQ+Jgog
ICAgIHByb21pc2UucmVzb2x2ZShtX3RyYWNrVmlkZW9Sb3RhdGlvbik7CiB9CiAKLXZvaWQgSW50
ZXJuYWxzOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0Zy
YW1lVGltZU1ldGFkYXRhKQordm9pZCBJbnRlcm5hbHM6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlk
ZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzYW1wbGUg
PSBSZWYgeyBzYW1wbGUgfV0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHZpZGVvRnJhbWUgPSBSZWYgeyB2aWRlb0ZyYW1lIH1dIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV90
cmFja1ZpZGVvU2FtcGxlQ291bnQrKzsKLSAgICAgICAgbV90cmFja1ZpZGVvUm90YXRpb24gPSBz
dGF0aWNfY2FzdDxpbnQ+KHNhbXBsZS0+dmlkZW9Sb3RhdGlvbigpKTsKKyAgICAgICAgbV90cmFj
a1ZpZGVvUm90YXRpb24gPSBzdGF0aWNfY2FzdDxpbnQ+KHZpZGVvRnJhbWUtPnJvdGF0aW9uKCkp
OwogICAgICAgICBpZiAoIW1fbmV4dFRyYWNrRnJhbWVQcm9taXNlKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC01NTgzLDcgKzU1ODMsNyBAQCB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YQogICAg
ICAgICBpZiAoIXZpZGVvU2V0dGluZ3Mud2lkdGgoKSB8fCAhdmlkZW9TZXR0aW5ncy5oZWlnaHQo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHJnYmEgPSBzYW1wbGUtPmdl
dFJHQkFJbWFnZURhdGEoKTsKKyAgICAgICAgYXV0byByZ2JhID0gdmlkZW9GcmFtZS0+Z2V0UkdC
QUltYWdlRGF0YSgpOwogICAgICAgICBpZiAoIXJnYmEpCiAgICAgICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGE5MmFmZDgyNTVhMWVjZDRjNzlmZWE1
ZTU1MzIyZjk5ZDUzMGJlZmQuLjk3MzQ2ZDlkYjI5NWM1NGYyZDRlMDVhZDFlMmUwOGE2MmE2Yzgx
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTY1LDcgKzE2NSw3IEBAIGNs
YXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFscz4sIHByaXZh
dGUgQ29udGV4dERlc3RydWN0aW9uCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlcgogICAgICwgcHJpdmF0ZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpBdWRpb1NhbXBsZU9ic2VydmVyCi0gICAgLCBwcml2YXRlIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIKKyAgICAsIHByaXZhdGUgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyCiAjZW5kaWYKICAgICB7CiBwdWJsaWM6CkBA
IC0xMjk2LDcgKzEyOTYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhKSBmaW5hbDsKICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb1Nh
bXBsZU9ic2VydmVyIEFQSQogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHNpemVfdCkgZmluYWwgeyBtX3RyYWNrQXVkaW9TYW1wbGVDb3VudCsrOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCAwZTE2ZGJhZjgwNzU1Mzdj
MTQ3NDM2N2UzOTllZWY1ZjM0ZTgyZjI0Li5iM2ExOTgwZTM3ZjIzMWZiOTEyMTgyYTAwNzZmMDdh
ZWUzMThiMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC01Niwx
MyArNTYsOSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21W
aWRlb0ZyYW1lKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gTm90ZTogVGhpcyBl
eHRyYSBjYXN0aW5nIGlzIG5lZWRlZCBzaW5jZSBWaWRlb0ZyYW1lcyBhcmUgc3RpbGwgTWVkaWFT
YW1wbGVzLgotICAgIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+IHZpZGVvRnJhbWVDVjsK
LSAgICBpZiAoaXM8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPigqdmlkZW9GcmFtZSkpCi0gICAgICAg
IHZpZGVvRnJhbWVDViA9ICZkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+KCp2aWRlb0Zy
YW1lKTsKLSAgICBlbHNlIGlmIChpczxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+KCp2aWRl
b0ZyYW1lKSkKLSAgICAgICAgdmlkZW9GcmFtZUNWID0gZG93bmNhc3Q8V2ViQ29yZTo6TWVkaWFT
YW1wbGVBVkZPYmpDPigqdmlkZW9GcmFtZSkudmlkZW9GcmFtZSgpOwotICAgIGVsc2UgeworCisg
ICAgYXV0byB2aWRlb0ZyYW1lQ1YgPSB2aWRlb0ZyYW1lLT5hc1ZpZGVvRnJhbWVDVigpOworICAg
IGlmICghdmlkZW9GcmFtZUNWKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBQ
cm9ncmFtbWluZyBlcnJvciwgbm90IGEgSVBDIGF0dGFjay4KICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcApp
bmRleCAwOGI4MGE1OGZlZjk1ZDJhYWM3MGNlY2RlOWNlNjcyMGE1N2E3OTkyLi40YmFjOWIzNjg1
MzNlYTA5NzE1MjNkMTMyNDc1ZmQyNDRhMzBmNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5j
cHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFtZUNWLmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmg+CiAjZW5kaWYKQEAgLTg0LDcgKzgzLDcgQEAgdm9pZCBSZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcDo6Y2xvc2UoKQogICAgIC8vIFRPRE86IGFkZCBjYW4gaGFwcGVuIGFm
dGVyIHN0b3BwaW5nLgogfQogCi1SZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmFkZChSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYg
ZnJhbWUpCitSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFt
ZU9iamVjdEhlYXA6OmFkZChSZWY8V2ViQ29yZTo6VmlkZW9GcmFtZT4mJiBmcmFtZSkKIHsKICAg
ICBhdXRvIHdyaXRlID0gUmVtb3RlVmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZv
ckFkZCgpOwogICAgIGF1dG8gbmV3RnJhbWVSZWZlcmVuY2UgPSB3cml0ZS5yZXRpcmVkUmVmZXJl
bmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZU9iamVjdEhlYXAuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oCmluZGV4IDUzZWQ1NmUwYWUwZGVlZjYxNTRjOGNl
MDRhOWIxNmNmMTUwZTY4YjAuLmMwOGE1YTRjNzdmNjA1MjE2NjI3YzUwYjEwYTQxMWVmMWFiOTJj
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b0ZyYW1lT2JqZWN0SGVhcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgogI2luY2x1
ZGUgIlRocmVhZFNhZmVPYmplY3RIZWFwLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBs
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GcmFtZS5oPgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAjaW5jbHVkZSAiU2hhcmVkVmlkZW9GcmFtZS5oIgpAQCAtNDQsOCArNDQsOCBAQCBwdWJs
aWM6CiAgICAgflJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwKCk7CiAKICAgICB2b2lkIGNsb3Nl
KCk7Ci0gICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIGFkZChSZWY8V2ViQ29y
ZTo6TWVkaWFTYW1wbGU+JiYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gZ2V0
KFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYgcmVhZCkgeyByZXR1cm4gbV9oZWFwLnJl
dGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOyB9CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQ
cm9wZXJ0aWVzIGFkZChSZWY8V2ViQ29yZTo6VmlkZW9GcmFtZT4mJik7CisgICAgUmVmUHRyPFdl
YkNvcmU6OlZpZGVvRnJhbWU+IGdldChSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJl
YWQpIHsgcmV0dXJuIG1faGVhcC5yZXRpcmUoV1RGTW92ZShyZWFkKSwgMF9zKTsgfQogCiAgICAg
dm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4m
JikgeyBjbG9zZSgpOyB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgY29uc3QgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgIFRocmVhZFNh
ZmVPYmplY3RIZWFwPFJlbW90ZVZpZGVvRnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6
TWVkaWFTYW1wbGU+PiBtX2hlYXA7CisgICAgVGhyZWFkU2FmZU9iamVjdEhlYXA8UmVtb3RlVmlk
ZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1lPj4gbV9oZWFwOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgbV9zaGFyZWRW
aWRlb0ZyYW1lV3JpdGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQppbmRleCBkOGEyOTIyNjYxNmIy
NjQ3ZjExZjg0NTYwMjlmM2RlZGVlMjNlMjE0Li4wZjgyZDk0NTVhOTk1NGViMzBlYjZlM2FhMWZm
MTBmM2E2NzkyMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KQEAgLTk3LDcgKzk3LDcgQEAgYXV0byBMaWJX
ZWJSVENDb2RlY3NQcm94eTo6Y3JlYXRlRGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIKICAgICBpZiAodXNlUmVtb3RlRnJhbWVzKQogICAgICAgICB2aWRlb0Zy
YW1lT2JqZWN0SGVhcCA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAucHRyKCk7CiAgICAgcmV0dXJu
IFtpZGVudGlmaWVyLCBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uLCByZXNvdXJjZU93bmVyID0g
bV9yZXNvdXJjZU93bmVyLCB2aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IFdURk1vdmUodmlkZW9GcmFt
ZU9iamVjdEhlYXApXSAoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGlt
ZVN0YW1wTnMsIHVpbnQzMl90IHRpbWVTdGFtcCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gdmlk
ZW9GcmFtZSA9IFdlYkNvcmU6OlZpZGVvRnJhbWVDVjo6Y3JlYXRlKE1lZGlhVGltZSh0aW1lU3Rh
bXBOcywgMSksIGZhbHNlLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgcGl4ZWxCdWZmZXIpOworICAgICAgICBhdXRvIHZpZGVvRnJhbWUgPSBXZWJDb3JlOjpWaWRl
b0ZyYW1lQ1Y6OmNyZWF0ZShNZWRpYVRpbWUodGltZVN0YW1wTnMsIDEpLCBmYWxzZSwgV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUsIHBpeGVsQnVmZmVyKTsKICAgICAgICAgaWYg
KHJlc291cmNlT3duZXIpCiAgICAgICAgICAgICB2aWRlb0ZyYW1lLT5zZXRPd25lcnNoaXBJZGVu
dGl0eShyZXNvdXJjZU93bmVyKTsKICAgICAgICAgaWYgKHZpZGVvRnJhbWVPYmplY3RIZWFwKSB7
CkBAIC0yMTUsMTYgKzIxNSwxNiBAQCBMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlciogTGli
V2ViUlRDQ29kZWNzUHJveHk6OmZpbmRFbmNvZGVyKFJUQ0VuY29kZXJJZGVudAogICAgIHJldHVy
biAmaXRlcmF0b3ItPnZhbHVlOwogfQogCi1zdGF0aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9Sb3Rh
dGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24pCitzdGF0aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dl
YlJUQ1ZpZGVvUm90YXRpb24oV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24p
CiB7CiAgICAgc3dpdGNoIChyb3RhdGlvbikgewotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246Ok5vbmU6CisgICAgY2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6Tm9uZToKICAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsK
LSAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3du
OgorICAgIGNhc2UgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd246CiAg
ICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDsKLSAgICBjYXNlIFdlYkNv
cmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDoKKyAgICBjYXNlIFdlYkNvcmU6
OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDoKICAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1Zp
ZGVvUm90YXRpb25fOTA7Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6TGVmdDoKKyAgICBjYXNlIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0
OgogICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggNTJmNjE4YTM4NmMzMGVh
ZjZkYmUwODgwMTY0ZjRjOWYzMjY5OGIxMS4uYmYwYjk0MmU0NjEzNTM0ZDBhOWZhODNiYzg4ODI0
YWZiYTExYzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50
NjRfdCBudW1iZXJPCiAgICAgbV93cml0ZXItPmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKCptX2F1
ZGlvQnVmZmVyTGlzdCwgbV9kZXNjcmlwdGlvbiwgdGltZSwgbnVtYmVyT2ZGcmFtZXMpOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFNoYXJlZFZp
ZGVvRnJhbWUmJiBzaGFyZWRWaWRlb0ZyYW1lKQordm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2
aWRlb0ZyYW1lQXZhaWxhYmxlKFNoYXJlZFZpZGVvRnJhbWUmJiBzaGFyZWRWaWRlb0ZyYW1lKQog
ewogICAgIGlmIChhdXRvIGZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnJlYWQoV1RG
TW92ZShzaGFyZWRWaWRlb0ZyYW1lKSkpCiAgICAgICAgIG1fd3JpdGVyLT5hcHBlbmRWaWRlb0Zy
YW1lKCpmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IDFjYzFiYjNiZmEwMDgyMDAxMWIwNzU5YmIyNzBl
ZGMzZTUzNTQxNTYuLjNmODFlZmI0MzQ1NzE1ZTg3ZWNjNWVhMDVhMDg0ODA4NjRjMDg5NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJiwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZh
aWxhYmxlKE1lZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwotICAgIHZvaWQgdmlk
ZW9TYW1wbGVBdmFpbGFibGUoU2hhcmVkVmlkZW9GcmFtZSYmKTsKKyAgICB2b2lkIHZpZGVvRnJh
bWVBdmFpbGFibGUoU2hhcmVkVmlkZW9GcmFtZSYmKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmKTsKICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHBhdXNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
bWVzc2FnZXMuaW4KaW5kZXggOWI3ZDk2ZjYzZGQ0MjhmMmEwZGNjZmI2NThlMmU4OWE5YzZmNjAw
Ny4uMTJiYzgwNTBiNjQ1ZTNiMDgzODNjZmRiYmEzZTZiZDNiODQyMGZhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3Rl
TWVkaWFSZWNvcmRlciBOb3RSZWZDb3VudGVkIHsKICAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNv
cmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpCiAgICAgQXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50
NjRfdCBudW1iZXJPZkZyYW1lcykKLSAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShzdHJ1Y3QgV2Vi
S2l0OjpTaGFyZWRWaWRlb0ZyYW1lIGZyYW1lKQorICAgIFZpZGVvRnJhbWVBdmFpbGFibGUoc3Ry
dWN0IFdlYktpdDo6U2hhcmVkVmlkZW9GcmFtZSBmcmFtZSkKICAgICBGZXRjaERhdGEoKSAtPiAo
SVBDOjpEYXRhUmVmZXJlbmNlIGJ1ZmZlciwgZG91YmxlIHRpbWVDb2RlKQogICAgIFN0b3BSZWNv
cmRpbmcoKSAtPiAoKQogICAgIFBhdXNlKCkgLT4gKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmNwcAppbmRleCA4ZDA0ZjJjYzVhNzg5YTdhNGU5NTg3NDBjN2I2OGI1MzkzZTViYTRi
Li4xZDdhZGFiNTY5MzkzMmVkOGQzZDM5OGE0MDRkZDkzZTY0MDIxODgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFu
c2Zvcm0gdHJhCiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZVJvb3RMYXll
ckFmZmluZVRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6dXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2Vi
Q29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCit2b2lkIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJv
dW5kcywgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24pCiB7CiAgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9u
KGJvdW5kcywgcm90YXRpb24sIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTaG91bGRV
cGRhdGVSb290TGF5ZXI6Olllcyk7CiB9CkBAIC0xMTYsMTUgKzExNiwxNSBAQCB2b2lkIFJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cGF1c2UoKQogICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLT5wYXVzZSgpOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZShTaGFyZWRWaWRlb0ZyYW1lJiYgZnJhbWUpCit2b2lkIFJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVZpZGVvRnJhbWUoU2hhcmVkVmlkZW9GcmFtZSYm
IGZyYW1lKQogewogICAgIGlmIChhdXRvIHZpZGVvRnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVS
ZWFkZXIucmVhZChXVEZNb3ZlKGZyYW1lKSkpCi0gICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLT5lbnF1ZXVlKHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnBy
ZXNlbnRhdGlvblRpbWUoKSk7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5l
bnF1ZXVlQnVmZmVyKHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnByZXNl
bnRhdGlvblRpbWUoKSk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpjbGVhckVucXVldWVkU2FtcGxlcygpCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Y2xlYXJWaWRlb0ZyYW1lcygpCiB7Ci0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmNsZWFyVmlkZW9GcmFtZXMoKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmluZGV4IDE2MWYzYzk1OWVkM2NiYTdiMzgyY2Uy
MmY1MjQ4YjZkMWJjYjI0OGYuLjU5NzY4ODg5NzNkMTJmOWRlNmRlZWQ2ZjUzYjJjMjBkNjg3MTlj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtNzAsMTMgKzcwLDEzIEBA
IHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlkZURp
c3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKTsKICAgICB2b2lkIHVwZGF0ZUFmZmluZVRy
YW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSk7Ci0gICAgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3Np
dGlvbihDR1JlY3QsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uKTsKKyAgICB2
b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgV2ViQ29yZTo6VmlkZW9GcmFtZTo6
Um90YXRpb24pOwogICAgIHZvaWQgZmx1c2goKTsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1h
Z2UoKTsKICAgICB2b2lkIHBsYXkoKTsKICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBlbnF1
ZXVlKFNoYXJlZFZpZGVvRnJhbWUmJik7Ci0gICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygp
OworICAgIHZvaWQgZW5xdWV1ZVZpZGVvRnJhbWUoU2hhcmVkVmlkZW9GcmFtZSYmKTsKKyAgICB2
b2lkIGNsZWFyVmlkZW9GcmFtZXMoKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1h
cGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVt
b3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KaW5kZXggNzMxMGViYWY5YTJmOTE1ODBl
MWZkODFjZDlkYTJiNjY5ODBlZmE3NS4uNTI0ZjQ1ZWI2ZjA1Y2U1YWFmYmUxMTI2ZmE2ZjY1ZGZk
ZjdmMzkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2Fn
ZXMuaW4KQEAgLTI5LDExICsyOSwxMSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYKICAgICBVcGRhdGVEaXNwbGF5TW9k
ZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikKICAgICBVcGRhdGVB
ZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKQotICAgIFVwZGF0ZUJv
dW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKQorICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBi
b3VuZHMsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogICAgIEZsdXNo
KCkKICAgICBGbHVzaEFuZFJlbW92ZUltYWdlKCkKLSAgICBFbnF1ZXVlKHN0cnVjdCBXZWJLaXQ6
OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUpCi0gICAgQ2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQorICAg
IEVucXVldWVWaWRlb0ZyYW1lKHN0cnVjdCBXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUp
CisgICAgQ2xlYXJWaWRlb0ZyYW1lcygpCiAgICAgUGxheSgpCiAgICAgUGF1c2UoKQogICAgIFNl
dFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUgc2VtYXBob3JlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCAyZDQ1M2U0ZGE3OWMyZDgyZDFhOTFkMDQyZjM0
NTFlYjhlZGRjNTBiLi5mYzU3NDgyNDVjMWU0MjM3YTIyZWY1MzE4MjhjMDU0NWRkNzdlNTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJj
ZVByb3h5CiAgICAgOiBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCiAgICAg
LCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIKLSAgICAs
IHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciB7CisgICAg
LCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU291cmNlUHJveHkoUmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbiwgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lciwgUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYgc291cmNlLCBSZWZQdHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYgdmlk
ZW9GcmFtZU9iamVjdEhlYXApCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzoKICAgICAgICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpTY3JlZW46CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZTo6V2luZG93OgotICAgICAgICAgICAgbV9zb3VyY2UtPmFkZFZpZGVvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgbV9zb3VyY2UtPmFkZFZpZGVvRnJhbWVPYnNl
cnZlcigqdGhpcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpOb25lOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpWaWRlbzoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpTY3JlZW46CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6V2luZG93
OgotICAgICAgICAgICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMp
OworICAgICAgICAgICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpOb25lOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNzgsMTYg
KzE3OCwxNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jYXB0dXJlU2VtYXBob3JlLT5zaWdu
YWwoKTsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHJvdGF0ZVZpZGVvRnJhbWVJ
Zk5lZWRlZChNZWRpYVNhbXBsZSYgc2FtcGxlKQorICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiByb3Rh
dGVWaWRlb0ZyYW1lSWZOZWVkZWQoVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgewotICAgICAgICBp
ZiAobV9zaG91bGRBcHBseVJvdGF0aW9uICYmIHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUpIHsKLSAgICAgICAgICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSByb3RhdGVQaXhlbEJ1ZmZlcihzYW1wbGUpOwotICAgICAgICAgICAgcmV0dXJuIFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRl
b01pcnJvcmVkKCksIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKHBp
eGVsQnVmZmVyKSk7CisgICAgICAgIGlmIChtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgZnJhbWUu
cm90YXRpb24oKSAhPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSkgeworICAgICAgICAgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IHJvdGF0ZVBpeGVsQnVmZmVyKGZyYW1lKTsKKyAgICAgICAgICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShmcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIGZy
YW1lLmlzTWlycm9yZWQoKSwgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUsIFdURk1vdmUocGl4
ZWxCdWZmZXIpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gJnNhbXBsZTsKKyAgICAgICAg
cmV0dXJuICZmcmFtZTsKICAgICB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiBmcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgZmluYWwK
KyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgZnJhbWUsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpIGZpbmFsCiAgICAgewogICAgICAgICBhdXRvIHZpZGVv
RnJhbWUgPSByb3RhdGVWaWRlb0ZyYW1lSWZOZWVkZWQoZnJhbWUpOwogICAgICAgICBpZiAoIXZp
ZGVvRnJhbWUpCkBAIC0xOTUsMzUgKzE5NSwzNSBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9y
ZXNvdXJjZU93bmVyKQogICAgICAgICAgICAgdmlkZW9GcmFtZS0+c2V0T3duZXJzaGlwSWRlbnRp
dHkobV9yZXNvdXJjZU93bmVyKTsKICAgICAgICAgaWYgKCFtX3ZpZGVvRnJhbWVPYmplY3RIZWFw
KSB7Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyOjpWaWRlb0ZyYW1lQXZhaWxhYmxlQ1YobV9pZCwgdmlkZW9GcmFtZS0+
cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+dmlkZW9Sb3RhdGlvbigpLCB2aWRlb0ZyYW1lLT52
aWRlb01pcnJvcmVkKCksIHZpZGVvRnJhbWUtPnByZXNlbnRhdGlvblRpbWUoKSwgbWV0YWRhdGEp
LCAwKTsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVvRnJhbWVBdmFpbGFibGVDVihtX2lkLCB2aWRlb0ZyYW1l
LT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT5yb3RhdGlvbigpLCB2aWRlb0ZyYW1lLT5pc01p
cnJvcmVkKCksIHZpZGVvRnJhbWUtPnByZXNlbnRhdGlvblRpbWUoKSwgbWV0YWRhdGEpLCAwKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIHByb3BlcnRpZXMg
PSBtX3ZpZGVvRnJhbWVPYmplY3RIZWFwLT5hZGQoKnZpZGVvRnJhbWUpOwogICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpWaWRl
b0ZyYW1lQXZhaWxhYmxlKG1faWQsIHByb3BlcnRpZXMsIG1ldGFkYXRhKSwgMCk7CiAgICAgfQog
Ci0gICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZVBpeGVsQnVmZmVyKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZVBp
eGVsQnVmZmVyKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUpCiAgICAgewogICAgICAgICBpZiAoIW1f
cm90YXRpb25TZXNzaW9uKQogICAgICAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBtYWtlVW5p
cXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KCk7CiAKICAgICAgICAgSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6Um90YXRpb25Qcm9wZXJ0aWVzIHJvdGF0aW9uOwotICAgICAgICBzd2l0Y2ggKHNh
bXBsZS52aWRlb1JvdGF0aW9uKCkpIHsKLSAgICAgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbjo6Tm9uZToKKyAgICAgICAgc3dpdGNoICh2aWRlb0ZyYW1lLnJvdGF0aW9uKCkpIHsK
KyAgICAgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZToKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcm90YXRpb24uYW5nbGUgPSAwOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
OlVwc2lkZURvd246CisgICAgICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURv
d246CiAgICAgICAgICAgICByb3RhdGlvbi5hbmdsZSA9IDE4MDsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDoKKyAgICAg
ICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ6CiAgICAgICAgICAgICByb3RhdGlv
bi5hbmdsZSA9IDkwOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OkxlZnQ6CisgICAgICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRp
b246OkxlZnQ6CiAgICAgICAgICAgICByb3RhdGlvbi5hbmdsZSA9IDI3MDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90
YXRlKHNhbXBsZSwgcm90YXRpb24sIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNv
bXBhdGlibGU6Ok5vKTsKKyAgICAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5yb3RhdGUo
dmlkZW9GcmFtZSwgcm90YXRpb24sIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNv
bXBhdGlibGU6Ok5vKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1l
bW9yeSogc3RvcmFnZSwgY29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBm
b3JtYXQsIHNpemVfdCBmcmFtZUNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCmluZGV4IGFi
OGY2OTI4YWVmNzMzZTU5MGU3YWQ5ZmQ4MGY0OWI0MDY4MjgzODEuLmU4MWIyM2Y5MGI1MTdjMTUy
ODNjNzUxNjM3NWE3YjFjMDFhMDVmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAgLTQy
LDE1ICs0MiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpQcm9wZXJ0aWVzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiByZWZlcmVuY2UsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGll
cyBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0Zy
YW1lUmVmZXJlbmNlJiYgcmVmZXJlbmNlLCBjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1lJiB2aWRl
b0ZyYW1lKQogewogICAgIHJldHVybiB7CiAgICAgICAgIFdURk1vdmUocmVmZXJlbmNlKSwKLSAg
ICAgICAgbWVkaWFTYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLAotICAgICAgICBtZWRpYVNhbXBs
ZS52aWRlb01pcnJvcmVkKCksCi0gICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvUm90YXRpb24oKSwK
LSAgICAgICAgZXhwYW5kZWRJbnRTaXplKG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUoKSks
Ci0gICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvUGl4ZWxGb3JtYXQoKQorICAgICAgICB2aWRlb0Zy
YW1lLnByZXNlbnRhdGlvblRpbWUoKSwKKyAgICAgICAgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCks
CisgICAgICAgIHZpZGVvRnJhbWUucm90YXRpb24oKSwKKyAgICAgICAgZXhwYW5kZWRJbnRTaXpl
KHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpKSwKKyAgICAgICAgdmlkZW9GcmFtZS5waXhl
bEZvcm1hdCgpCiAgICAgfTsKIH0KIApAQCAtOTQsNyArOTQsNyBAQCBSZW1vdGVWaWRlb0ZyYW1l
UmVhZFJlZmVyZW5jZSBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6Om5ld1JlYWRSZWZlcmVuY2UoKSBj
b25zdAogICAgIHJldHVybiBtX3JlZmVyZW5jZVRyYWNrZXIucmVhZCgpOwogfQogCi11aW50MzJf
dCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAordWludDMy
X3QgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcGl4ZWxGb3JtYXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaAppbmRleCBjZTQwNzEwZDcx
ZTA0MmNjYjE3NzliY2MzZTQ1YjNiYWIyZjM0MTI2Li5lNDRkMjlmZWUzNmE5MDRmNzc0NTVmNjcy
MDQ0NmNlYTExYThmYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogICAgICAgICBXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UgcmVmZXJl
bmNlOwogICAgICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZTsKICAgICAgICAgYm9vbCBp
c01pcnJvcmVkIHsgZmFsc2UgfTsKLSAgICAgICAgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7IFZp
ZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICAgICAgUm90YXRpb24gcm90YXRpb24geyBSb3RhdGlv
bjo6Tm9uZSB9OwogICAgICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemU7CiAgICAgICAgIHVpbnQz
Ml90IHBpeGVsRm9ybWF0IHsgMCB9OwogCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJvcGVy
dGllcz4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogCi0gICAgc3RhdGljIFByb3BlcnRpZXMg
cHJvcGVydGllcyhXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiwgY29uc3QgV2Vi
Q29yZTo6TWVkaWFTYW1wbGUmKTsKKyAgICBzdGF0aWMgUHJvcGVydGllcyBwcm9wZXJ0aWVzKFdl
YktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSYmLCBjb25zdCBXZWJDb3JlOjpWaWRlb0Zy
YW1lJik7CiAKICAgICBzdGF0aWMgUmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKElQ
Qzo6Q29ubmVjdGlvbiYsIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkmLCBQcm9wZXJ0
aWVzJiYpOwogCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OlZp
ZGVvRnJhbWUgb3ZlcnJpZGVzLgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50YXRpb25T
aXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgdWludDMyX3QgdmlkZW9Q
aXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworICAgIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBpc1JlbW90ZVByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxC
dWZmZXIoKSBjb25zdCBmaW5hbDsKQEAgLTExNiwxMiArMTE2LDEyIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzPiBSZW1vCiAgICAgYXV0byByZWZlcmVuY2UgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxS
ZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlPigpOwogICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9
IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPE1lZGlhVGltZT4oKTsKICAgICBhdXRvIGlzTWlycm9y
ZWQgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxib29sPigpOwotICAgIGF1dG8gdmlkZW9Sb3Rh
dGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFZpZGVvUm90YXRpb24+KCk7CisgICAgYXV0
byByb3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFJvdGF0aW9uPigpOwogICAgIGF1
dG8gc2l6ZSA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFdlYkNvcmU6OkludFNpemU+KCk7CiAg
ICAgYXV0byBwaXhlbEZvcm1hdCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPHVpbnQzMl90Pigp
OwogICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgcmV0dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBXVEZNb3Zl
KCpwcmVzZW50YXRpb25UaW1lKSwgKmlzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAqc2l6ZSwg
KnBpeGVsRm9ybWF0IH07CisgICAgcmV0dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVu
Y2UpLCBXVEZNb3ZlKCpwcmVzZW50YXRpb25UaW1lKSwgKmlzTWlycm9yZWQsICpyb3RhdGlvbiwg
KnNpemUsICpwaXhlbEZvcm1hdCB9OwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMmKTsKQEAgLTEy
OSw3ICsxMjksNyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBS
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMmKTsKIH0KIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVQcm94eSkKLSAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJl
dHVybiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYgZG93bmNhc3Q8V2Vi
Q29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpLmlzUmVtb3RlUHJveHkoKTsgfQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKSB7
IHJldHVybiB2aWRlb0ZyYW1lLmlzUmVtb3RlUHJveHkoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IGZkMTIyZGJlNTczY2FhYTli
OTQ0Yzg2NTdhNDU0NWEwZGE1YzViNjYuLjZkM2FlMGUwNWI0OGJjNmU4ZmVlYTQxYjJlZjcxZDFi
MDMyMmQyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMTAyLDIwICsxMDIsMjAgQEAgc3RhdGljIGlu
dDMyX3QgaW5pdGlhbGl6ZVZpZGVvRW5jb2Rlcih3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBl
bmNvZGVyLCBjb25zdAogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJS
VENDb2RlY3MoKS5pbml0aWFsaXplRW5jb2Rlcigqc3RhdGljX2Nhc3Q8TGliV2ViUlRDQ29kZWNz
OjpFbmNvZGVyKj4oZW5jb2RlciksIGNvZGVjLndpZHRoLCBjb2RlYy5oZWlnaHQsIGNvZGVjLnN0
YXJ0Qml0cmF0ZSwgY29kZWMubWF4Qml0cmF0ZSwgY29kZWMubWluQml0cmF0ZSwgY29kZWMubWF4
RnJhbWVyYXRlKTsKIH0KIAotc3RhdGljIGlubGluZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbih3ZWJydGM6OlZpZGVvUm90YXRpb24gcm90YXRp
b24pCitzdGF0aWMgaW5saW5lIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHRvVmlkZW9Sb3RhdGlvbih3
ZWJydGM6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCiB7CiAgICAgc3dpdGNoIChyb3RhdGlvbikg
ewogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOgotICAgICAgICByZXR1cm4gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7CisgICAgICAgIHJldHVybiBWaWRlb0ZyYW1l
OjpSb3RhdGlvbjo6Tm9uZTsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOgot
ICAgICAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247Cisg
ICAgICAgIHJldHVybiBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsKICAgICBjYXNl
IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA6Ci0gICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAgICAgIHJldHVybiBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6UmlnaHQ7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDoKLSAgICAgICAg
cmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OworICAgICAgICByZXR1cm4g
VmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICBy
ZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3Ry
aW5nIGZvcm1hdE5hbWVGcm9tV2ViUlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUg
dHlwZSkKQEAgLTQ5NCw3ICs0OTQsNyBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2Rl
RnJhbWUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJgogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCi0g
ICAgU2hhcmVkVmlkZW9GcmFtZSBzaGFyZWRWaWRlb0ZyYW1lIHsgTWVkaWFUaW1lKGZyYW1lLnRp
bWVzdGFtcF91cygpICogMTAwMCwgMTAwMDAwMCksIGZhbHNlLCB0b01lZGlhU2FtcGxlVmlkZW9S
b3RhdGlvbihmcmFtZS5yb3RhdGlvbigpKSwgV1RGTW92ZSgqYnVmZmVyKSB9OworICAgIFNoYXJl
ZFZpZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFtZSB7IE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBf
dXMoKSAqIDEwMDAsIDEwMDAwMDApLCBmYWxzZSwgdG9WaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0
aW9uKCkpLCBXVEZNb3ZlKCpidWZmZXIpIH07CiAgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlk
ZW50aWZpZXIsIHNoYXJlZFZpZGVvRnJhbWUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91bGRFbmNv
ZGVBc0tleUZyYW1lIH0sIDApOwogICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMDQ4NTA2NTRkYTE5MzU2YTRlMTFmNjU4ODU5
MzVkMzIxOTdmNmQ5Ny4uODU4NTI2NDVkMjU3YmFiYzU2MGJkNDU3YWQxNjAwNDBmODNjZjE0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtOTIsMjUgKzkyLDI1IEBAIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlOjp+TWVkaWFSZWNvcmRlclByaXZhdGUoKQogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVk
aWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGU6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVvKCkpIHsK
ICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWVTaXplKSB7Ci0gICAgICAgICAgICBhdXRvIHNpemUg
PSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAgICAgICAgYXV0byBzaXplID0gdmlk
ZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CiAgICAgICAgICAgICBtX2JsYWNrRnJhbWVTaXpl
ID0gV2ViQ29yZTo6SW50U2l6ZSB7IHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCgpKSwgc3Rh
dGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCgpKSB9OwogICAgICAgICB9Ci0gICAgICAgIFNoYXJl
ZFZpZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFtZSB7IHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCks
IHNhbXBsZS52aWRlb01pcnJvcmVkKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksICptX2JsYWNr
RnJhbWVTaXplIH07Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFSZWNvcmRlcjo6VmlkZW9TYW1wbGVBdmFpbGFibGUgeyBzaGFyZWRWaWRlb0ZyYW1lIH0s
IG1faWRlbnRpZmllcik7CisgICAgICAgIFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFt
ZSB7IHZpZGVvRnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb0ZyYW1lLmlzTWlycm9yZWQo
KSwgdmlkZW9GcmFtZS5yb3RhdGlvbigpLCAqbV9ibGFja0ZyYW1lU2l6ZSB9OworICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVvRnJh
bWVBdmFpbGFibGUgeyBzaGFyZWRWaWRlb0ZyYW1lIH0sIG1faWRlbnRpZmllcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBtX2JsYWNrRnJhbWVTaXplID0geyB9OwotICAgIGF1dG8g
c2hhcmVkVmlkZW9GcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShzYW1wbGUs
CisgICAgYXV0byBzaGFyZWRWaWRlb0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndy
aXRlKHZpZGVvRnJhbWUsCiAgICAgICAgIFt0aGlzXShhdXRvJiBzZW1hcGhvcmUpIHsgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpTZXRTaGFyZWRWaWRl
b0ZyYW1lU2VtYXBob3JlIHsgc2VtYXBob3JlIH0sIG1faWRlbnRpZmllcik7IH0sCiAgICAgICAg
IFt0aGlzXShhdXRvJiBoYW5kbGUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlY29yZGVyOjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIG1f
aWRlbnRpZmllcik7IH0KICAgICApOwogICAgIGlmIChzaGFyZWRWaWRlb0ZyYW1lKQotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVv
U2FtcGxlQXZhaWxhYmxlIHsgV1RGTW92ZSgqc2hhcmVkVmlkZW9GcmFtZSkgfSwgbV9pZGVudGlm
aWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJl
Y29yZGVyOjpWaWRlb0ZyYW1lQXZhaWxhYmxlIHsgV1RGTW92ZSgqc2hhcmVkVmlkZW9GcmFtZSkg
fSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRp
b0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHNpemVfdCBudW1iZXJPZkZyYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDcyMTBj
MGNlYjEwN2NiN2Q3ZTQxNmZiNjgzMmYzOGYyMjY4YjljNDguLmUyNGVhYmUwZWJiMjViOWI4MmUz
ZDViNzkxZWUyZmM4NDYyNDg3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGUKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxl
JiwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgdm9pZCB2aWRl
b0ZyYW1lQXZhaWxhYmxlKFdlYkNvcmU6OlZpZGVvRnJhbWUmLCBXZWJDb3JlOjpWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhKSBmaW5hbDsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVj
b3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmNwcAppbmRleCA3MTk5MmYwNGYyOWI0YjBlZDU2NWIzM2I5OTY0YWY4MzY3ODAx
MmQ4Li43NDVjZmY2YzczMjAyOGJlZTExMjlmYzU4NTY0OGNmOWI0ZWJhOGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpVcGRhdGVBZmZpbmVUcmFuc2Zvcm0geyB0cmFuc2Zvcm0gfSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0
ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uKQordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5k
c0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9u
KQogewogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpVcGRhdGVCb3VuZHNBbmRQb3NpdGlvbiB7IGJvdW5kcywgcm90YXRpb24g
fSwgbV9pZGVudGlmaWVyKTsKIH0KQEAgLTEyNywyNCArMTI3LDI0IEBAIHZvaWQgU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlBhdXNlIHsgfSwgbV9pZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVk
aWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
VmlkZW9GcmFtZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKQogewogICAgIGlmIChtX3BhdXNlZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaGFyZWRWaWRlb0ZyYW1lID0gbV9zaGFyZWRW
aWRlb0ZyYW1lV3JpdGVyLndyaXRlKHNhbXBsZSwKKyAgICBhdXRvIHNoYXJlZFZpZGVvRnJhbWUg
PSBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUodmlkZW9GcmFtZSwKICAgICAgICAgW3Ro
aXNdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZSB7
IHNlbWFwaG9yZSB9LCBtX2lkZW50aWZpZXIpOyB9LAogICAgICAgICBbdGhpc10oYXV0byYgaGFu
ZGxlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpTZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIG1faWRlbnRp
Zmllcik7IH0KICAgICApOwogICAgIGlmICghc2hhcmVkVmlkZW9GcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OkVucXVldWUgeyAqc2hhcmVkVmlkZW9GcmFtZSB9LCBtX2lkZW50aWZp
ZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpFbnF1ZXVlVmlkZW9GcmFtZSB7ICpzaGFyZWRWaWRlb0ZyYW1lIH0sIG1f
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVu
cXVldWVkU2FtcGxlcygpCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJWaWRl
b0ZyYW1lcygpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsZWFyRW5xdWV1ZWRTYW1wbGVzIHsgfSwgbV9pZGVudGlm
aWVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6Q2xlYXJWaWRlb0ZyYW1lcyB7IH0sIG1faWRlbnRpZmllcik7CiB9CiAK
IFBsYXRmb3JtTGF5ZXIqIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggNWU4NDM0YTlmNDI0NDgwZDEwMjJlNDVhZThi
ODY5OTMzNDY3MTNjYy4uMDc0MDFmNjQ3MTc5NWY1ZmRjMWVkMmY1OWRjYmZkNThjMTM1Y2U5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTYyLDEzICs2MiwxMyBAQCBwcml2YXRl
OgogICAgIGJvb2wgZGlkRmFpbCgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGlzcGxh
eU1vZGUoYm9vbCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpIGZpbmFsOwog
ICAgIHZvaWQgdXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgV2ViQ29yZTo6TWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24pIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9z
aXRpb24oQ0dSZWN0LCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbikgZmluYWw7CiAgICAg
dm9pZCBmbHVzaCgpIGZpbmFsOwogICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpIGZpbmFs
OwogICAgIHZvaWQgcGxheSgpIGZpbmFsOwogICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKLSAgICB2
b2lkIGVucXVldWVTYW1wbGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmKSBmaW5hbDsKLSAgICB2b2lk
IGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkgZmluYWw7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFt
ZShXZWJDb3JlOjpWaWRlb0ZyYW1lJikgZmluYWw7CisgICAgdm9pZCBjbGVhclZpZGVvRnJhbWVz
KCkgZmluYWw7CiAgICAgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkgZmluYWw7CiAKICAgICAv
LyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCmluZGV4IGNlOGVj
NWZjZGM3MmQyNTdmMGQ5NGNlYjI4OGJmYmIzYmJhYjNlY2UuLjM5Yjc0YmY0NmRlYmRhNWRiNjlm
NjdmYjJiYzZhOGRlOGZkNGU5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCkBAIC05MywxNSArOTMsMTUg
QEAgYm9vbCBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjpwcmVwYXJlV3JpdGluZyhjb25zdCBTaGFy
ZWRWaWRlb0ZyYW1lSW5mbyYgaW5mbywgY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjpv
cHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShN
ZWRpYVNhbXBsZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4m
IG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKK3N0ZDo6b3B0aW9uYWw8U2hh
cmVkVmlkZW9GcmFtZT4gU2hhcmVkVmlkZW9GcmFtZVdyaXRlcjo6d3JpdGUoVmlkZW9GcmFtZSYg
ZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9y
ZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHdyaXRlQnVm
ZmVyKGZyYW1lLCBuZXdTZW1hcGhvcmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBTaGFyZWRWaWRl
b0ZyYW1lIHsgZnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCBmcmFtZS52aWRlb01pcnJvcmVkKCks
IGZyYW1lLnZpZGVvUm90YXRpb24oKSwgV1RGTW92ZSgqYnVmZmVyKSB9OworICAgIHJldHVybiBT
aGFyZWRWaWRlb0ZyYW1lIHsgZnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCBmcmFtZS5pc01pcnJv
cmVkKCksIGZyYW1lLnJvdGF0aW9uKCksIFdURk1vdmUoKmJ1ZmZlcikgfTsKIH0KIAotc3RkOjpv
cHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6
OndyaXRlQnVmZmVyKE1lZGlhU2FtcGxlJiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQorc3Rk
OjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IFNoYXJlZFZpZGVvRnJhbWVXcml0
ZXI6OndyaXRlQnVmZmVyKFZpZGVvRnJhbWUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCiB7
CiAgICAgaWYgKGlzPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4oZnJhbWUpKQogICAgICAgICByZXR1
cm4gZG93bmNhc3Q8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihmcmFtZSkubmV3UmVhZFJlZmVyZW5j
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hh
cmVkVmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hh
cmVkVmlkZW9GcmFtZS5oCmluZGV4IGZhM2Q4M2M1ZDk0YjhhZmQwZTVkNzljMDBkZGNkMzlkZmUz
YTMzMzcuLmExNTAxZTc1YTY0ZjIxMzdmYTVjMTY5MTY1MmM0MTAyY2I4ZmY5NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0Zy
YW1lLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7
CiBzdHJ1Y3QgU2hhcmVkVmlkZW9GcmFtZSB7CiAgICAgTWVkaWFUaW1lIHRpbWU7CiAgICAgYm9v
bCBtaXJyb3JlZCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24geyBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSB9OworICAgIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uIHsgV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUgfTsKICAgICB1c2luZyBCdWZmZXIgPSBzdGQ6
OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlLCBN
YWNoU2VuZFJpZ2h0LCBXZWJDb3JlOjpJbnRTaXplPjsKICAgICBCdWZmZXIgYnVmZmVyOwogCkBA
IC02OCw3ICs2OCw3IEBAIGNsYXNzIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgewogcHVibGljOgog
ICAgIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIoKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
VmlkZW9GcmFtZT4gd3JpdGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlvbjx2
b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYpPiYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFt
ZT4gd3JpdGUoV2ViQ29yZTo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpT
ZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+Jik7CiAgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+
IHdyaXRlQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpT
ZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+JiwgYm9vbCBjYW5TZW5kSU9TdXJmYWNlID0gdHJ1ZSk7CiAjaWYgVVNFKExJQldF
QlJUQykKICAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gd3JpdGVC
dWZmZXIoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mKTsKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGFsbG9j
YXRlU3RvcmFnZShzaXplX3QsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmKT4mKTsKICAgICBib29sIHByZXBhcmVXcml0aW5nKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZFZpZGVvRnJhbWVJbmZvJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9y
ZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
KT4mKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3cml0
ZUJ1ZmZlcihXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpT
ZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik+Jik7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+
IHdyaXRlQnVmZmVyKFdlYkNvcmU6OlZpZGVvRnJhbWUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYpOwogI2lmIFVTRShMSUJXRUJSVEMpCiAgICAgc3RkOjpvcHRpb25hbDxT
aGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IHdyaXRlQnVmZmVyKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1
ZmZlciYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXIuY3BwCmluZGV4IDc2NGVjMGQ1Zjc3YmQzZWUwNTI0NTAzODdlNGY4
MWRlZjZkNmFhZTkuLmZmYmZhMzFmZWEwZDIxOGM4Y2I1NTA3NDU5NDEyNDc1ZDI2OGY3MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmNwcApAQCAtMTU5LDExICsxNTksMTAgQEAgdm9pZCBSZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9GcmFtZUF2YWlsYWJsZShSZWFsdGltZU1lZGlh
U291cmNlSWRlbnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxl
IHRvIGZpbmQgc291cmNlICVsbHUgZm9yIHZpZGVvRnJhbWVBdmFpbGFibGUiLCBpZGVudGlmaWVy
LnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gdmlkZW9GcmFt
ZVNpemUgPSB2aWRlb0ZyYW1lLT5zaXplKCk7Ci0gICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb0Zy
YW1lQXZhaWxhYmxlKFdURk1vdmUodmlkZW9GcmFtZSksIHZpZGVvRnJhbWVTaXplLCBtZXRhZGF0
YSk7CisgICAgaXRlcmF0b3ItPnZhbHVlLT5yZW1vdGVWaWRlb0ZyYW1lQXZhaWxhYmxlKFdURk1v
dmUodmlkZW9GcmFtZSksIG1ldGFkYXRhKTsKIH0KIAotdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxl
TWFuYWdlcjo6dmlkZW9GcmFtZUF2YWlsYWJsZUNWKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVy
LCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJy
b3JlZCwgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1l
TWV0YWRhdGEgbWV0YWRhdGEpCit2b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjp2aWRl
b0ZyYW1lQXZhaWxhYmxlQ1YoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIsIFdlYkNvcmU6OlZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkK
IHsKICAgICBBU1NFUlQoIVdURjo6aXNNYWluUnVuTG9vcCgpKTsKICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV92aWRlb1NvdXJjZXMuZmluZChpZGVudGlmaWVyKTsKQEAgLTE3Myw4ICsxNzIsNyBAQCB2
b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoUmVh
bHRpbWVNZWRpYVNvdXJjZUlkZW50aQogICAgIH0KIAogICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKHByZXNlbnRhdGlvblRpbWUsIG1pcnJvcmVkLCByb3RhdGlvbiwg
V1RGTW92ZShwaXhlbEJ1ZmZlcikpOwotICAgIGF1dG8gc2l6ZSA9IHZpZGVvRnJhbWUtPnByZXNl
bnRhdGlvblNpemUoKTsKLSAgICBpdGVyYXRvci0+dmFsdWUtPnZpZGVvRnJhbWVBdmFpbGFibGUo
dmlkZW9GcmFtZS5nZXQoKSwgeyBzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRp
Y19jYXN0PGludD4oc2l6ZS5oZWlnaHQoKSkgfSwgbWV0YWRhdGEpOworICAgIGl0ZXJhdG9yLT52
YWx1ZS0+cmVtb3RlVmlkZW9GcmFtZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLmdldCgpLCBtZXRhZGF0
YSk7CiB9CiAKIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVBdWRpbzo6UmVtb3Rl
QXVkaW8oUmVmPFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2U+JiYgc291cmNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuaAppbmRleCAzZWM5MmI1ZGUwODg1ZDI3MzViMTJjMTg2NDY4NzFlZTBmOGZhYjNh
Li41ZTNmODM0MDc2OGJiZThhOWNiODljNDgyN2EzMmE5MTdlOTM4N2QwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXVkaW9TYW1w
bGVzQXZhaWxhYmxlKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBNZWRp
YVRpbWUsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKTsKICAgICB2b2lkIHZpZGVvRnJhbWVBdmFp
bGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZVZpZGVv
RnJhbWVQcm94eTo6UHJvcGVydGllcyYmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
KTsKICAgICAvLyBGSVhNRTogV2lsbCBiZSByZW1vdmVkIG9uY2UgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5IHByb3ZpZGVycyBhcmUgdGhlIG9ubHkgb25lcyBzZW5kaW5nIGRhdGEuCi0gICAgdm9pZCB2
aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lLCBXZWJDb3JlOjpWaWRlb0Zy
YW1lVGltZU1ldGFkYXRhKTsKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGVDVihXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+JiYsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRp
YVRpbWUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOwogCiAgICAgdm9pZCBzZXRD
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFn
ZXIubWVzc2FnZXMuaW4KaW5kZXggNzFiMzQ3MDg1MzI2MzBhYzdmYTMxZmFhN2RiZjFkMjNiMzUx
MDhmYi4uZTVjZGZjMjUzZjQxMzFhYTBkZjU3MWEyZjQ2YmU0M2ZiZjI1MWFjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5h
Z2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQAogbWVz
c2FnZXMgLT4gUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
QXVkaW9TdG9yYWdlQ2hhbmdlZChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmll
ciBpZCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJD
b3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzLCBJUEM6OlNlbWFwaG9yZSBjYXB0dXJlU2VtYXBob3JlLCBNZWRpYVRpbWUgbWVk
aWFUaW1lLCBzaXplX3QgZnJhbWVDaHVua1NpemUpOwogICAgIFZpZGVvRnJhbWVBdmFpbGFibGUo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6UmVtb3Rl
VmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIHNhbXBsZSwgc3RydWN0IFdlYkNvcmU6OlZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCi0gICAgVmlkZW9GcmFtZUF2YWlsYWJsZUNWKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXIsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwg
c3RydWN0IFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCisgICAgVmlk
ZW9GcmFtZUF2YWlsYWJsZUNWKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVy
IGlkLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXIsIFdlYkNvcmU6OlZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSwgc3RydWN0IFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0
YWRhdGEpCiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggZTZlYjMyYjlmMzk4MGNhOGE0
NDg0MmE1YmVmNTE2YWRiNDNkYTNkNS4uZDFiODU5OTVmMzlkNmE4NGNkNDFiNzQwN2U4NDYyMzM5
ZjA1ODc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90
ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2FwdHVyZVN0b3BwZWQoYm9vbCBkaWRGYWlsKTsKIAotICAgIHZvaWQgdmlk
ZW9GcmFtZUF2YWlsYWJsZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6SW50
U2l6ZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgeyB2aWRlb1Nh
bXBsZUF2YWlsYWJsZShmcmFtZSwgbWV0YWRhdGEpOyB9CisgICAgdm9pZCByZW1vdGVWaWRlb0Zy
YW1lQXZhaWxhYmxlKFdlYkNvcmU6OlZpZGVvRnJhbWUmIGZyYW1lLCBXZWJDb3JlOjpWaWRlb0Zy
YW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKSB7IHZpZGVvRnJhbWVBdmFpbGFibGUoZnJhbWUsIG1l
dGFkYXRhKTsgfQogICAgIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKGJvb2wgdmFsdWUsIGJvb2wg
aW50ZXJydXB0ZWQpOwogCiAgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455246</attachid>
            <date>2022-03-21 08:10:57 -0700</date>
            <delta_ts>2022-03-22 02:35:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237884-20220321161047.patch</filename>
            <type>text/plain</type>
            <size>181754</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwOTYzNDY1YjQzZGFi
MWFlNjkyYjg2YWRmODMzYjliN2FhMmZhZi4uMzgzMmQ4MmI2MWI5M2ZhZTZmNjYxZmRlNGVmZDlj
ZmE5YjBlZWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlIHRvIFZp
ZGVvRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZmFjdG9yaW5nIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC0gUmVuYW1pbmcgb2Yg
VmlkZW9TYW1wbGVPYnNlcnZlciB0byBWaWRlb0ZyYW1lT2JzZXJ2ZXIsIHZpZGVvU2FtcGxlQXZh
aWxhYmxlIHRvIHZpZGVvRnJhbWVBdmFpbGFibGUuLi4KKyAgICAgICAgLSB2aWRlb0ZyYW1lQXZh
aWxhYmxlIHRha2VzIGEgVmlkZW9GcmFtZSBpbnN0ZWFkIG9mIGEgTWVkaWFTYW1wbGUKKyAgICAg
ICAgLSBVc2UgVmlkZW9GcmFtZTo6cm90YXRpb24gYW5kIFZpZGVvRnJhbWU6OmlzTWlycm9yZWQu
CisgICAgICAgIC0gVXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uIGluc3RlYWQgb2YgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24KKyAgICAgICAgVXBkYXRlIGNvZGUgYWNjb3JkaW5nIHRoaXMgcmVu
YW1pbmcuCisgICAgICAgIE1vdmUgZnJvbSB1c2luZyBNZWRpYVNhbXBsZSB0byBWaWRlb0ZyYW1l
IHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAgIFByZXBhcmUgZm9yIHJlbW92YWwgb2Yg
TWVkaWFTYW1wbGUgYXMgcGFyZW50IGNsYXNzIG9mIFZpZGVvRnJhbWUuCisKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZWRpYVNhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJh
bWUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ZpZGVvRnJhbWUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
SW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9GcmFtZUNWLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b0ZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvUmVw
bGF5S2l0Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZUxpYldlYlJUQy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorCiAyMDIyLTAzLTIxICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0IGJlIGNhbGxlZCBpbiBzZXRSYW5nZVRleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODE4N2Y1MGI2MzM4NGMxZDA0ZDliZTNlZjM2NGUzNmQzMWYzMTljNy4uNDc3
NzlkYzZjNDFhNTEyN2Y2ZjlmMDM0NjZiOWZkMDQyNDczOTdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwzOSBAQAogMjAyMi0wMy0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
KyAgICAgICAgTW92ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZSB0byBWaWRlb0ZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4ODQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGZyb20gdXNpbmcgTWVkaWFTYW1wbGUgdG8g
VmlkZW9GcmFtZSBkaXJlY3RseS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRW
aWRlb0ZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlk
ZW9GcmFtZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBs
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNh
bXBsZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCisyMDIyLTAzLTE4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgdXNlIG9mIE1lZGlhU2FtcGxlQVZG
T2JqQyBmcm9tIFdlYlJUQyBwaXBlbGluZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzcwNgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA0MjUz
OTE+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDhhMGQ0ZTQ0
MDkxM2Y1YzhiZmIyMWIxMjE2YTA0NzE5NThiM2U1ZDEuLjkxNWFlOGNkZjg4NjYzODczNDkwNjFi
NzM1MjlmNTc2MGRiZDRlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
azo6U291cmNlOjpjYXB0dXJlQ2FudmFzKCkKIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEg
bWV0YWRhdGE7CiAgICAgbWV0YWRhdGEuY2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KS5zZWNvbmRzU2luY2VFcG9jaCgpOwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCp2aWRlb0Zy
YW1lLCBtZXRhZGF0YSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0
YWRhdGEpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2s6OmNsb25lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMjZkOTJlZDhiN2E5NzI3
ZDg5MTQ5ZmY0NjYzZDM0YzMyOTRhMTAzMC4uNzc4YjdkYTFlZGZjMTEwMjk5MWQzY2M3NGY3MGZm
OTYzNDI2YjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNywxMCArMTM3LDYgQEAKICNpbmNs
dWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgotI2VuZGlmCi0KICNpZiAhVVNFKEFOR0xFKQog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAjaWYgVVNFKE9QRU5HTF9FUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDY3NDYxOWZhNjIyZWFjOTk1
OGY1ZjQwOTU5NWM3ZWU4MDcxNDI2MGEuLjk0MDcyNThhYTE5OTRjNWRmNTI3NDBhNTQ5MWM0OWIy
ZGUwMGEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMTE3LDkg
KzExNyw5IEBAIHB1YmxpYzoKICAgICAgICAgUmlnaHQgPSA5MCwKICAgICAgICAgTGVmdCA9IDI3
MCwKICAgICB9OwotICAgIHZpcnR1YWwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aWRl
b01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90
IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9Sb3RhdGlvbjo6Tm9uZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc01pcnJvcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVmlkZW9GcmFtZS5jcHAKaW5kZXggZDViYzczMzZhZmJjMjBlZTE3NDhhZmZhYWRhMTIx
NDlmZWJlM2NmNS4uZWU3OWU1ODJlMmEwYWZhOWQyODFhZjk4MjBjOWM2MDYwMGE3MmVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBN
ZWRpYVRpbWUgVmlkZW9GcmFtZTo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcHJlc2VudGF0aW9uVGltZTsKIH0KIAotTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gVmlk
ZW9GcmFtZTo6dmlkZW9Sb3RhdGlvbigpIGNvbnN0CitWaWRlb0ZyYW1lOjpSb3RhdGlvbiBWaWRl
b0ZyYW1lOjpyb3RhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcm90YXRpb247CiB9CiAK
LWJvb2wgVmlkZW9GcmFtZTo6dmlkZW9NaXJyb3JlZCgpIGNvbnN0Citib29sIFZpZGVvRnJhbWU6
OmlzTWlycm9yZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzTWlycm9yZWQ7CiB9CkBAIC0x
MzAsNyArMTMwLDcgQEAgUmVmUHRyPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZTo6YXNWaWRlb0Zy
YW1lQ1YoKQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIHZpZGVvTWly
cm9yZWQoKSwgdmlkZW9Sb3RhdGlvbigpLCBidWZmZXIpOworICAgIHJldHVybiBWaWRlb0ZyYW1l
Q1Y6OmNyZWF0ZShwcmVzZW50YXRpb25UaW1lKCksIGlzTWlycm9yZWQoKSwgcm90YXRpb24oKSwg
YnVmZmVyKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9WaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKaW5k
ZXggYWJhNGI2Y2NiOTJhMjdiMjQzNzI4NzRkMTkxMTI4OTUxYjY0MTk5Ny4uOGFhNDJlZWZmYWFm
NmFiNGQzN2U5YTg1NmEyNDU5N2NjYmE1NzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVmlkZW9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVv
RnJhbWUuaApAQCAtNDIsMTAgKzQyLDEyIEBAIGNsYXNzIFZpZGVvRnJhbWUgOiBwdWJsaWMgTWVk
aWFTYW1wbGUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lKCk7CiAK
KyAgICB1c2luZyBSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOworCiAgICAg
Ly8gV2ViQ29yZTo6TWVkaWFTYW1wbGUgb3ZlcnJpZGVzLgogICAgIFdFQkNPUkVfRVhQT1JUIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3QgZmluYWw7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB2aWRlb01pcnJvcmVkKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgUm90YXRpb24gcm90YXRpb24oKSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzTWlycm9yZWQoKSBjb25zdCBmaW5hbDsKICAgICAvLyBGSVhNRTogV2hlbiBWaWRl
b0ZyYW1lIGlzIG5vdCBNZWRpYVNhbXBsZSwgdGhlc2Ugd2lsbCBub3QgYmUgbmVlZGVkLgogICAg
IFdFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
Y29uc3QgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1TYW1wbGU6OlR5cGUgcGxh
dGZvcm1TYW1wbGVUeXBlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggODhmZjI3NWE0ODJjODM0MDY5MjNjOTQ4OWNlYzhh
NzRjNjVjYTkwNS4uNzk3OTg4NzY5OTlhNWYzZmMyMDEzYTI3YzNhOGY0OGFkY2MyYjgyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMjUsOCAr
MjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIE1lZGlhVGltZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgVmlkZW9GcmFtZTsKIAog
Y2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHsKIHB1YmxpYzoKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVE
aXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBm
bHVzaCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpID0gMDsK
QEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwbGF5KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVl
U2FtcGxlKE1lZGlhU2FtcGxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckVucXVldWVk
U2FtcGxlcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9G
cmFtZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygpID0gMDsKIAog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApp
bmRleCBhNjZiMjczNWJjZWFlZGVjMzU2ZWM3ZjA4Mzc0MjM1NjU0ZWRiMjNkLi40OTQ2NTAzYzky
ZTIwMjY3YzZjNzk3MzQ4ZjlhNWQ5NTRlYTJkZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogICAgIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFJldGFpblB0
cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4mJiwgQ2xpZW50Jik7CiAgICAgfkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CiAKKyAgICB2b2lkIGVucXVldWVCdWZmZXIoQ1ZQaXhl
bEJ1ZmZlclJlZiwgTWVkaWFUaW1lKTsKKwogICAgIC8vIEFQSSB1c2VkIGJ5IFdlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIKICAgICB2b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdl
KCk7CiAgICAgdm9pZCBsYXllckVycm9yRGlkQ2hhbmdlKCk7CkBAIC01NiwxMiArNTgsMTIgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm1MYXllciogZGlzcGxheUxheWVyKCk7CiAKLSAgICBQbGF0
Zm9ybUxheWVyKiByb290TGF5ZXIoKSBmaW5hbDsKLQogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBk
YXRlUm9vdExheWVyIHsgTm8sIFllcyB9OwotICAgIHZvaWQgdXBkYXRlUm9vdExheWVyQm91bmRz
QW5kUG9zaXRpb24oQ0dSZWN0LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgU2hvdWxkVXBk
YXRlUm9vdExheWVyKTsKKyAgICB2b2lkIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9u
KENHUmVjdCwgVmlkZW9GcmFtZTo6Um90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcik7CiAg
ICAgdm9pZCB1cGRhdGVSb290TGF5ZXJBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0p
OwogCisgICAgLy8gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorICAgIFBsYXRmb3JtTGF5ZXIq
IHJvb3RMYXllcigpIGZpbmFsOwogICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGhpZGVSb290TGF5
ZXIsIEludFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBkaWRTdWNjZWVkKT4mJikg
ZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dJZGVudGlm
aWVyKFN0cmluZyYmIGxvZ0lkZW50aWZpZXIpIGZpbmFsIHsgbV9sb2dJZGVudGlmaWVyID0gV1RG
TW92ZShsb2dJZGVudGlmaWVyKTsgfQpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RM
YXllcikgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRy
YW5zZm9ybSkgIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCb3Vu
ZHNBbmRQb3NpdGlvbihDR1JlY3QsIFZpZGVvRnJhbWU6OlJvdGF0aW9uKSBmaW5hbDsKIAogICAg
IHZvaWQgZmx1c2goKSBmaW5hbDsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5h
bDsKQEAgLTc5LDE3ICs4MSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5KCkgZmluYWw7CiAg
ICAgdm9pZCBwYXVzZSgpIGZpbmFsOwogCi0gICAgdm9pZCBlbnF1ZXVlKENWUGl4ZWxCdWZmZXJS
ZWYsIE1lZGlhVGltZSk7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJikgZmlu
YWw7Ci0gICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpIGZpbmFsOworICAgIHZvaWQgZW5x
dWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJWaWRlb0Zy
YW1lcygpIGZpbmFsOwogICAgIHZvaWQgc2V0UmVuZGVyUG9saWN5KFJlbmRlclBvbGljeSkgZmlu
YWw7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1
ZSgpOwotICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmKTsKKwor
ICAgIHZvaWQgcmVtb3ZlT2xkVmlkZW9GcmFtZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CisgICAgdm9p
ZCBhZGRWaWRlb0ZyYW1lVG9QZW5kaW5nUXVldWUoUmVmPFZpZGVvRnJhbWU+JiYpOwogICAgIHZv
aWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgIHZvaWQg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgc2V0Um9vdExheWVy
Qm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOwor
ICAgIHZvaWQgc2V0Um9vdExheWVyQm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCwgVmlkZW9GcmFt
ZTo6Um90YXRpb24pOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBvbkly
cmVndWxhckZyYW1lUmF0ZU5vdGlmaWNhdGlvbihNb25vdG9uaWNUaW1lIGZyYW1lVGltZSwgTW9u
b3RvbmljVGltZSBsYXN0RnJhbWVUaW1lKTsKQEAgLTEwNCw4ICsxMDUsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcHJvY2Vzc2luZ1F1ZXVlOwogCiAgICAgLy8gT25seSBh
Y2Nlc3NlZCB0aHJvdWdoIG1fcHJvY2Vzc2luZ1F1ZXVlIG9yIGlmIG1fcHJvY2Vzc2luZ1F1ZXVl
IGlzIG51bGwuCi0gICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlh
U2FtcGxlPj47Ci0gICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVl
dWU7CisgICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPFZpZGVvRnJhbWU+
PjsKKyAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlOwogICAg
IAogICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCmluZGV4IDFjY2Rk
ZmE4ODE1YTRmNzY0ZTI0OTFjNzA0NzViOGQyMGJkYzQ5MDQuLjQ1OGM1YTM5YWYwNWQ4YTBhMGUw
YmQ1NWMwYmZiMTAxYTEzZGQ5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0zMSw3ICszMSw2IEBACiAj
aW1wb3J0ICJDb2xvci5oIgogI2ltcG9ydCAiSW50U2l6ZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGll
cy5oIgogCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aD4KQEAgLTQyLDggKzQxLDkgQEAKICNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9N
ZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0
aW9uU1BJLmg+Ci0KKyNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtMTk4LDcgKzE5OCw3IEBAIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp+TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQogCiAgICAgW21fc3RhdHVzQ2hhbmdl
TGlzdGVuZXIgc3RvcF07CiAKLSAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7
CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFyKCk7CiAKICAgICBbbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogICAgIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaF07CkBAIC0yNjUsMjggKzI2NSwyOCBAQCB2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZp
bmVUcmFuc2Zvcm0gdHJhbgogICAgIH0pOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZpZGVvRnJh
bWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBv
c2l0aW9uKGJvdW5kcywgcm90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcjo6Tm8pOwogfQog
Ci12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJCb3VuZHNB
bmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24pCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpzZXRSb290TGF5ZXJC
b3VuZHNBbmRQb3NpdGlvbnMoQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24pCiB7CiAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IHsgYm91bmRzLnNpemUud2lkdGggLyAy
LCBib3VuZHMuc2l6ZS5oZWlnaHQgLyAyfTsKLSAgICBpZiAocm90YXRpb24gPT0gTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0IHx8IHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpMZWZ0KQorICAgIGlmIChyb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6UmlnaHQgfHwgcm90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQpCiAgICAg
ICAgIHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAog
ICAgIG1fcm9vdExheWVyLmdldCgpLnBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgbV9yb290TGF5
ZXIuZ2V0KCkuYm91bmRzID0gYm91bmRzOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRz
LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgU2hvdWxkVXBkYXRlUm9vdExh
eWVyIHNob3VsZFVwZGF0ZVJvb3RMYXllcikKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBTaG91bGRVcGRhdGVSb290TGF5ZXIgc2hvdWxk
VXBkYXRlUm9vdExheWVyKQogewogICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CiAgICAg
ICAgIGlmIChzaG91bGRVcGRhdGVSb290TGF5ZXIgPT0gU2hvdWxkVXBkYXRlUm9vdExheWVyOjpZ
ZXMpCiAgICAgICAgICAgICBzZXRSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbnMoYm91bmRzLCBy
b3RhdGlvbik7CiAKLSAgICAgICAgaWYgKHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpSaWdodCB8fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdCkKKyAgICAgICAgaWYgKHJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdo
dCB8fCByb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCkKICAgICAgICAgICAg
IHN0ZDo6c3dhcChib3VuZHMuc2l6ZS53aWR0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKIAogICAg
ICAgICBDR1BvaW50IHBvc2l0aW9uID0geyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5z
aXplLmhlaWdodCAvIDJ9OwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQogCiBzdGF0aWMgY29uc3QgZG91
YmxlIHJlbmRlcmVyTGF0ZW5jeSA9IDAuMDI7CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUpCiB7CiAgICAgaWYgKG1fcGF1c2VkKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECkBAIC0zMjEsMjIgKzMyMSwxNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHNhbXBsZSA9
IFJlZiB7IHNhbXBsZSB9XSB7CisgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCB2aWRlb0ZyYW1lID0gUmVmIHsgdmlkZW9GcmFtZSB9XSgpIG11dGFibGUgewogICAgICAgICBp
ZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0p
IHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjplbnF1ZXVlU2FtcGxlICgle3B1YmxpY31zKSBub3QgcmVhZHkgZm9yIG1vcmUg
bWVkaWEgZGF0YSIsIG1fbG9nSWRlbnRpZmllci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7CisgICAgICAgICAgICBhZGRWaWRlb0Zy
YW1lVG9QZW5kaW5nUXVldWUoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiAgICAgICAgICAgICByZXF1
ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihzYW1wbGUpOworICAg
ICAgICBlbnF1ZXVlQnVmZmVyKHZpZGVvRnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUt
PnByZXNlbnRhdGlvblRpbWUoKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
LXsKLSAgICBlbnF1ZXVlKHNhbXBsZS5waXhlbEJ1ZmZlcigpLCBzYW1wbGUucHJlc2VudGF0aW9u
VGltZSgpKTsKLX0KLQogc3RhdGljIHZvaWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRp
YXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyKQogewogICAgIENGQXJyYXlSZWYg
YXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50
c0FycmF5KHNhbXBsZUJ1ZmZlciwgdHJ1ZSk7CkBAIC0zNDYsNyArMzQxLDcgQEAgc3RhdGljIHZv
aWQgc2V0U2FtcGxlQnVmZmVyQXNEaXNwbGF5SW1tZWRpYXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyKQogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZW5xdWV1ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCBNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lIHByZXNlbnRh
dGlvblRpbWUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTM2MSw3ICsz
NTYsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlKENWUGl4
ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIE1lZGlhVAogICAgIGNvbnN0ZXhwciBzaXplX3QgZnJh
bWVDb3VudFBlckxvZyA9IDE4MDA7IC8vIGxvZyBldmVyeSBtaW51dGUgYXQgMzAgZnBzCiAgICAg
aWYgKCEobV9mcmFtZVJhdGVNb25pdG9yLmZyYW1lQ291bnQoKSAlIGZyYW1lQ291bnRQZXJMb2cp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBtZXRyaWNzID0gW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIHZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzXSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdl
YlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICgle3B1YmxpY31zKSBtZXRyaWNz
LCB0b3RhbD0lbHUsIGRyb3BwZWQ9JWx1LCBjb3JydXB0ZWQ9JWx1LCBkaXNwbGF5LWNvbXBvc2l0
ZWQ9JWx1LCBub24tZGlzcGxheS1jb21wb3NpdGVkPSVsdSAocGVuZGluZz0lbHUpIiwgbV9sb2dJ
ZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIG1ldHJpY3MudG90YWxOdW1iZXJPZlZpZGVvRnJhbWVz
LCBtZXRyaWNzLm51bWJlck9mRHJvcHBlZFZpZGVvRnJhbWVzLCBtZXRyaWNzLm51bWJlck9mQ29y
cnVwdGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEaXNwbGF5Q29tcG9zaXRlZFZpZGVv
RnJhbWVzLCBtZXRyaWNzLm51bWJlck9mTm9uRGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcywg
bV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKCV7cHVibGljfXMpIG1l
dHJpY3MsIHRvdGFsPSVsdSwgZHJvcHBlZD0lbHUsIGNvcnJ1cHRlZD0lbHUsIGRpc3BsYXktY29t
cG9zaXRlZD0lbHUsIG5vbi1kaXNwbGF5LWNvbXBvc2l0ZWQ9JWx1IChwZW5kaW5nPSVsdSkiLCBt
X2xvZ0lkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgbWV0cmljcy50b3RhbE51bWJlck9mVmlkZW9G
cmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZEcm9wcGVkVmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVy
T2ZDb3JydXB0ZWRWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJPZkRpc3BsYXlDb21wb3NpdGVk
VmlkZW9GcmFtZXMsIG1ldHJpY3MubnVtYmVyT2ZOb25EaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJh
bWVzLCBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuc2l6ZSgpKTsKICAgICB9CiAgICAgbV9mcmFt
ZVJhdGVNb25pdG9yLnVwZGF0ZSgpOwogI2VuZGlmCkBAIC0zNzMsNDQgKzM2OCw0NCBAQCB2b2lk
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpvbklycmVndWxhckZyYW1lUmF0ZU5vdGlm
aWNhdGlvbihNb25vdG9uaWNUaQogICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lVGltZSA9IGZy
YW1lVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIGxhc3RGcmFtZVRpbWUgPSBsYXN0
RnJhbWVUaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSwgb2JzZXJ2ZWRGcmFtZVJhdGUg
PSBtX2ZyYW1lUmF0ZU1vbml0b3Iub2JzZXJ2ZWRGcmFtZVJhdGUoKSwgZnJhbWVDb3VudCA9IG1f
ZnJhbWVSYXRlTW9uaXRvci5mcmFtZUNvdW50KCksIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVu
cXVldWVTYW1wbGVCdWZmZXIgKCV7cHVibGljfXMpIGF0ICVmLCBwcmV2aW91cyBmcmFtZSB3YXMg
YXQgJWYsIG9ic2VydmVkIGZyYW1lIHJhdGUgaXMgJWYsIGRlbGF5IHNpbmNlIGxhc3QgZnJhbWUg
aXMgJWYgbXMsIGZyYW1lIGNvdW50IGlzICVsdSIsIHdlYWtUaGlzLT5tX2xvZ0lkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSwgZnJhbWVUaW1lLCBsYXN0RnJhbWVUaW1lLCBvYnNlcnZlZEZyYW1lUmF0
ZSwgKGZyYW1lVGltZSAtIGxhc3RGcmFtZVRpbWUpICogMTAwMCwgZnJhbWVDb3VudCk7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpl
bnF1ZXVlVmlkZW9GcmFtZSAoJXtwdWJsaWN9cykgYXQgJWYsIHByZXZpb3VzIGZyYW1lIHdhcyBh
dCAlZiwgb2JzZXJ2ZWQgZnJhbWUgcmF0ZSBpcyAlZiwgZGVsYXkgc2luY2UgbGFzdCBmcmFtZSBp
cyAlZiBtcywgZnJhbWUgY291bnQgaXMgJWx1Iiwgd2Vha1RoaXMtPm1fbG9nSWRlbnRpZmllci51
dGY4KCkuZGF0YSgpLCBmcmFtZVRpbWUsIGxhc3RGcmFtZVRpbWUsIG9ic2VydmVkRnJhbWVSYXRl
LCAoZnJhbWVUaW1lIC0gbGFzdEZyYW1lVGltZSkgKiAxMDAwLCBmcmFtZUNvdW50KTsKICAgICB9
KTsKIH0KICNlbmRpZgogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZW1v
dmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZW1vdmVPbGRWaWRlb0ZyYW1lc0Zyb21QZW5kaW5nUXVldWUoKQogewogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKG1fcGVuZGluZ1ZpZGVvU2FtcGxl
UXVldWUuaXNFbXB0eSgpKQorICAgIGlmIChtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9yZW5kZXJQb2xpY3kgPT0gUmVuZGVy
UG9saWN5OjpJbW1lZGlhdGVseSkgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBub3cgPSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KTsKLSAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
Zmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9G
cmFtZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuZmlyc3QoKS0+cHJlc2VudGF0aW9uVGltZSgpOwogICAg
ICAgICBpZiAocHJlc2VudGF0aW9uVGltZS5pc1ZhbGlkKCkgJiYgcHJlc2VudGF0aW9uVGltZSA+
IG5vdykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1
ZXVlLnJlbW92ZUZpcnN0KCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5yZW1v
dmVGaXJzdCgpOwogICAgIH0KIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3ZvaWQgTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFZpZGVvRnJhbWVUb1BlbmRpbmdRdWV1ZShS
ZWY8VmlkZW9GcmFtZT4mJiB2aWRlb0ZyYW1lKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKTsKLSAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChzYW1wbGUpOworICAgIHJlbW92ZU9sZFZpZGVv
RnJhbWVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5h
cHBlbmQoV1RGTW92ZSh2aWRlb0ZyYW1lKSk7CiB9CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OmNsZWFyVmlkZW9GcmFtZXMoKQogewogICAgIG1fcHJvY2Vzc2luZ1F1
ZXVlLT5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAg
IH0pOwogfQogCkBAIC00MjQsMTMgKzQxOSwxMyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKICAg
ICAgICAgbV9wcm9jZXNzaW5nUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgICAgICBb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwogCi0g
ICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1Jl
YWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gbV9w
ZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBlbnF1
ZXVlU2FtcGxlQnVmZmVyKHNhbXBsZSk7CisgICAgICAgICAgICAgICAgYXV0byB2aWRlb0ZyYW1l
ID0gbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgICAg
IGVucXVldWVCdWZmZXIodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uVGltZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAyY2MxN2FkZjhkN2NiNGExZjNlM2M2NTU1MjY0NGRi
NzZjZjZlNTFiLi4xZDkzMWM2ZjlkNDVlZjMwODEwZWEzZjEzZDgwMDIyZWYxMTUzMDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3NTQsNyArMjc1NCw3IEBAIFJlZlB0cjxWaWRlb0Zy
YW1lPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb0ZyYW1lRm9yQ3Vy
cmVudFRpbWUoCiAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQ
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6Vmlk
ZW9Sb3RhdGlvbjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAg
cmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9
KTsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCA1YmU3MDgzZjU0ZjA4ODMzYTRhZmFmNGRlNjhiMTg1NzZhN2NiODRiLi45Yzkx
M2U0ZjQzZjczMDM4ZThjM2IwZDRjMjZjNWJhNTQ5NDJhNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC03NDcsNyArNzQ3LDcgQEAgUmVmUHRyPFZpZGVvRnJhbWU+IE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZW9GcmFtZUZvckN1cnJlbnRUaW0KICAg
ICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWVDVjo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CisgICAgcmV0dXJuIFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKGN1cnJlbnRNZWRpYVRpbWUoKSwgZmFsc2UsIFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lLCBSZXRhaW5QdHIgeyBtX2xhc3RQaXhlbEJ1ZmZlciB9KTsKIH0KIAog
RGVzdGluYXRpb25Db2xvclNwYWNlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6Y29sb3JTcGFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDkyZGFkMzA5ZmJj
YWY5NDE2M2M3MzkwZTljZmRiNGMwNzY0MDI1ZmEuLjBlNzQxODdjMTMwZDVkYzZmZWNlZGY3ZjY3
ZThiMTkxMGJmMmMzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yOCw5ICsyOCw5
IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCisjaW5jbHVkZSAiVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
IGZpbmFsCiAgICAgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAgICAgLCBw
cml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyCisgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW9GcmFtZU9ic2VydmVyCiAgICAgLCBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpDbGllbnQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiB7CkBAIC0xMzYsOSArMTM2
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmx1c2hSZW5kZXJlcnMoKTsKIAotICAgIHZvaWQg
cHJvY2Vzc05ld1ZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7Ci0gICAgdm9pZCBlbnF1ZXVlVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmKTsK
LSAgICB2b2lkIHJlZW5xdWV1ZUN1cnJlbnRWaWRlb1NhbXBsZUlmTmVlZGVkKCk7CisgICAgdm9p
ZCBwcm9jZXNzTmV3VmlkZW9GcmFtZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSwgU2Vjb25kcyk7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7Cisg
ICAgdm9pZCByZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CiAKICAgICB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMjEx
LDggKzIxMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKIAotICAgIC8vIFJlYWx0
aW1lTWVkaWFTb3VjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgotICAgIHZvaWQgdmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAg
ICAvLyBSZWFsdGltZU1lZGlhU291Y2U6OlZpZGVvRnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlk
ZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CiAKICAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gY3JlYXRlVmlkZW9GdWxsc2NyZWVu
TGF5ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRm
b3JtTGF5ZXIqLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIAog
ICAgICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7Ci0gICAgICAgIFJlZlB0cjxNZWRp
YVNhbXBsZT4gbWVkaWFTYW1wbGU7CisgICAgICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiB2aWRlb0Zy
YW1lOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gcGl4
ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgfTsKICAgICBDdXJyZW50RnJhbWVQYWludGVyIG1faW1h
Z2VQYWludGVyOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gV3JpdHRlbiBv
biBtYWluIHRocmVhZCwgcmVhZCBvbiBzYW1wbGUgdGhyZWFkLgogICAgIGJvb2wgbV9jYW5FbnF1
ZXVlRGlzcGxheUxheWVyIHsgZmFsc2UgfTsKICAgICAvLyBVc2VkIG9uIHNhbXBsZSB0aHJlYWQu
Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBt
X3ZpZGVvUm90YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wg
bV92aWRlb01pcnJvcmVkIHsgZmFsc2UgfTsKIAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9n
Z2VyOwpAQCAtMjcyLDggKzI3Miw4IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8V2ViUm9v
dFNhbXBsZUJ1ZmZlckJvdW5kc0NoYW5nZUxpc3RlbmVyPiBtX2JvdW5kc0NoYW5nZUxpc3RlbmVy
OwogCi0gICAgTG9jayBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2s7Ci0gICAgUmVmUHRyPE1lZGlh
U2FtcGxlPiBtX2N1cnJlbnRWaWRlb1NhbXBsZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fY3VycmVu
dFZpZGVvU2FtcGxlTG9jayk7CisgICAgTG9jayBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jazsKKyAg
ICBSZWZQdHI8VmlkZW9GcmFtZT4gbV9jdXJyZW50VmlkZW9GcmFtZSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fY3VycmVudFZpZGVvRnJhbWVMb2NrKTsKIAogICAgIGJvb2wgbV9wbGF5aW5nIHsgZmFs
c2UgfTsKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IDRkZDgxYmFhZjk1ODkwNWU2YWI5NjkyMWZiZmRjZDU3ZGQwZDIwNDMuLmU0NjQ2
ZDZiM2RjNTg2NzkxYjViZmIxZDNkYWNhMTQ1YzFkZDJhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllci5o
IgotI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EuaCIKICNpbXBvcnQgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2ltcG9ydCAi
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgpAQCAtMTYwLDcgKzE1OSw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQygpCiAgICAgICAgIHRyYWNrLT5zdHJlYW1UcmFjaygpLnJlbW92ZU9ic2VydmVyKCp0
aGlzKTsKIAogICAgIGlmIChtX2FjdGl2ZVZpZGVvVHJhY2spCi0gICAgICAgIG1fYWN0aXZlVmlk
ZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICAgICAgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJj
ZSgpLnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAKICAgICBbbV9ib3VuZHNDaGFu
Z2VMaXN0ZW5lciBpbnZhbGlkYXRlXTsKIApAQCAtMjI5LDI5ICsyMjgsMjkgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnN1
cHBvcnRzVHlwZShjb24KICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTYW1wbGVCdWZm
ZXIgTWV0aG9kcwogCi1zdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNm
b3JtYXRpb25NYXRyaXgoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3N0YXRpYyBpbmxpbmUgQ0dBZmZp
bmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChWaWRlb0ZyYW1lJiB2aWRlb0Zy
YW1lKQogewotICAgIGF1dG8gc2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAg
YXV0byBzaXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CiAgICAgc2l6ZV90IHdp
ZHRoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLndpZHRoKCkpOwogICAgIHNpemVfdCBoZWln
aHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUuaGVpZ2h0KCkpOwogICAgIGlmICghd2lkdGgg
fHwgIWhlaWdodCkKICAgICAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CiAK
LSAgICBhdXRvIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24o
c3RhdGljX2Nhc3Q8aW50PihzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAxODApOwot
ICAgIGlmIChzYW1wbGUudmlkZW9NaXJyb3JlZCgpKQorICAgIGF1dG8gdmlkZW9UcmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxpbnQ+KHZpZGVvRnJh
bWUucm90YXRpb24oKSkgKiBNX1BJIC8gMTgwKTsKKyAgICBpZiAodmlkZW9GcmFtZS5pc01pcnJv
cmVkKCkpCiAgICAgICAgIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh2
aWRlb1RyYW5zZm9ybSwgLTEsIDEpOwogCiAgICAgcmV0dXJuIHZpZGVvVHJhbnNmb3JtOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRh
ZGF0YSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBwcm9jZXNzTmV3VmlkZW9TYW1wbGUo
c2FtcGxlLCBtZXRhZGF0YSwgcHJlc2VudGF0aW9uVGltZSk7Ci0gICAgZW5xdWV1ZVZpZGVvU2Ft
cGxlKHNhbXBsZSk7CisgICAgcHJvY2Vzc05ld1ZpZGVvRnJhbWUodmlkZW9GcmFtZSwgbWV0YWRh
dGEsIHByZXNlbnRhdGlvblRpbWUpOworICAgIGVucXVldWVWaWRlb0ZyYW1lKHZpZGVvRnJhbWUp
OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSkKIHsKICAgICBpZiAoIW1faXNQYWdlVmlzaWJsZSB8fCAhbV9pc1Zpc2libGVJblZpZXdQ
b3J0KQogICAgICAgICByZXR1cm47CkBAIC0yNjMsNTIgKzI2Miw1MiBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU2Ft
cGxlJiBzYW1wbAogICAgIGlmICghbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyIHx8ICFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciB8fCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFp
bCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSAh
PSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWly
cm9yZWQpIHsKLSAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24o
KTsKLSAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVvTWlycm9yZWQoKTsKKyAg
ICBpZiAodmlkZW9GcmFtZS5yb3RhdGlvbigpICE9IG1fdmlkZW9Sb3RhdGlvbiB8fCB2aWRlb0Zy
YW1lLmlzTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQpIHsKKyAgICAgICAgbV92aWRlb1Jv
dGF0aW9uID0gdmlkZW9GcmFtZS5yb3RhdGlvbigpOworICAgICAgICBtX3ZpZGVvTWlycm9yZWQg
PSB2aWRlb0ZyYW1lLmlzTWlycm9yZWQoKTsKICAgICAgICAgbV9zaG91bGRVcGRhdGVEaXNwbGF5
TGF5ZXIgPSB0cnVlOwogICAgIH0KICAgICBpZiAobV9zaG91bGRVcGRhdGVEaXNwbGF5TGF5ZXIp
IHsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUFmZmluZVRyYW5z
Zm9ybSh2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSkpOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlQWZmaW5lVHJhbnNmb3JtKHZpZGVvVHJhbnNmb3Jt
YXRpb25NYXRyaXgodmlkZW9GcmFtZSkpOwogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+dXBkYXRlQm91bmRzQW5kUG9zaXRpb24obV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PnJvb3RMYXllcigpLmJvdW5kcywgbV92aWRlb1JvdGF0aW9uKTsKICAgICAgICAgbV9zaG91bGRV
cGRhdGVEaXNwbGF5TGF5ZXIgPSBmYWxzZTsKICAgICB9CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShzYW1wbGUpOworICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLT5lbnF1ZXVlVmlkZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZW5xdWV1ZUN1cnJlbnRWaWRlb1Nh
bXBsZUlmTmVlZGVkKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpyZWVucXVldWVDdXJyZW50VmlkZW9GcmFtZUlmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fY3Vy
cmVudFZpZGVvU2FtcGxlTG9jay50cnlMb2NrKCkpCisgICAgaWYgKCFtX2N1cnJlbnRWaWRlb0Zy
YW1lTG9jay50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBMb2NrZXIgbG9ja2VyIHsg
QWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sgfTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgQWRvcHRMb2NrLCBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9jayB9OwogCi0gICAgaWYgKCFtX2N1
cnJlbnRWaWRlb1NhbXBsZSAmJiAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYg
KCFtX2N1cnJlbnRWaWRlb0ZyYW1lICYmICFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBlbnF1ZXVlVmlkZW9TYW1wbGUobV9jdXJyZW50VmlkZW9TYW1w
bGUgPyAqbV9jdXJyZW50VmlkZW9TYW1wbGUgOiAqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUp
OworICAgIGVucXVldWVWaWRlb0ZyYW1lKG1fY3VycmVudFZpZGVvRnJhbWUgPyAqbV9jdXJyZW50
VmlkZW9GcmFtZSA6ICptX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRlb1NhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhLCBTZWNv
bmRzIHByZXNlbnRhdGlvblRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6cHJvY2Vzc05ld1ZpZGVvRnJhbWUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSwgU2Vjb25kcyBwcmVzZW50YXRpb25UaW1lKQog
ewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fY3VycmVudFZpZGVvU2FtcGxlTG9jayB9OwotICAgICAgICAgICAgbV9j
dXJyZW50VmlkZW9TYW1wbGUgPSAmc2FtcGxlOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICBtX2N1cnJlbnRWaWRlb0Zy
YW1lID0gJnZpZGVvRnJhbWU7CiAgICAgICAgIH0KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWVd
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBzYW1wbGU7CisgICAg
ICAgICAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdmlkZW9GcmFtZTsKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vha1RoaXMtPm1fY3VycmVudFZpZGVvU2Ft
cGxlTG9jayB9OwotICAgICAgICAgICAgICAgIHNhbXBsZSA9IFdURk1vdmUod2Vha1RoaXMtPm1f
Y3VycmVudFZpZGVvU2FtcGxlKTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2Vh
a1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWVMb2NrIH07CisgICAgICAgICAgICAgICAgdmlkZW9G
cmFtZSA9IFdURk1vdmUod2Vha1RoaXMtPm1fY3VycmVudFZpZGVvRnJhbWUpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKCFzYW1wbGUpCisgICAgICAgICAgICBpZiAoIXZpZGVvRnJh
bWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB3ZWFrVGhpcy0+cHJv
Y2Vzc05ld1ZpZGVvU2FtcGxlKCpzYW1wbGUsIG1ldGFkYXRhLCBwcmVzZW50YXRpb25UaW1lKTsK
KyAgICAgICAgICAgIHdlYWtUaGlzLT5wcm9jZXNzTmV3VmlkZW9GcmFtZSgqdmlkZW9GcmFtZSwg
bWV0YWRhdGEsIHByZXNlbnRhdGlvblRpbWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTMxNiwxNiArMzE1LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhCiAg
ICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUgfHwgbV9kaXNwbGF5TW9kZSAhPSBQYXVzZWRJbWFn
ZSkgewotICAgICAgICBtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSA9ICZzYW1wbGU7CisgICAg
aWYgKCFtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lIHx8IG1fZGlzcGxheU1vZGUgIT0gUGF1c2Vk
SW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSA9ICZ2aWRlb0ZyYW1l
OwogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlRW5vdWdoRGF0YSkK
ICAgICAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKICAgICB9CiAKICAgICBtX3ByZXNlbnRh
dGlvblRpbWUgPSBwcmVzZW50YXRpb25UaW1lOwotICAgIG1fdmlkZW9GcmFtZVNpemUgPSBzYW1w
bGUucHJlc2VudGF0aW9uU2l6ZSgpOwotICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpID09
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IHNhbXBsZS52aWRlb1JvdGF0aW9u
KCkgPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIG1fdmlkZW9GcmFt
ZVNpemUgPSB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICBpZiAodmlkZW9GcmFt
ZS5yb3RhdGlvbigpID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHZpZGVvRnJhbWUu
cm90YXRpb24oKSA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQpCiAgICAgICAgIG1fdmlk
ZW9GcmFtZVNpemUgPSB7IG1fdmlkZW9GcmFtZVNpemUuaGVpZ2h0KCksIG1fdmlkZW9GcmFtZVNp
emUud2lkdGgoKSB9OwogICAgIG1fc2FtcGxlTWV0YWRhdGEgPSBtZXRhZGF0YTsKICAgICArK21f
c2FtcGxlQ291bnQ7CkBAIC0zNjAsOCArMzU5LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBp
ZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmRpZEZhaWwoKSkgewogICAgICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgICAgICBpZiAo
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCi0gICAgICAgICAgICBlbnF1ZXVlVmlkZW9TYW1w
bGUoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICAgICAgaWYgKG1faW1hZ2VQYWlu
dGVyLnZpZGVvRnJhbWUpCisgICAgICAgICAgICBlbnF1ZXVlVmlkZW9GcmFtZSgqbV9pbWFnZVBh
aW50ZXIudmlkZW9GcmFtZSk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CiAgICAgfQog
fQpAQCAtNTY5LDcgKzU2OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpwbGF5KCkKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAg
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wbGF5KCk7CiAgICAgdXBkYXRlRGlzcGxh
eU1vZGUoKTsKLSAgICByZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpOworICAg
IHJlZW5xdWV1ZUN1cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKTsKIAogICAgIHNjaGVkdWxlRGVm
ZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIHVwZGF0ZVJlYWR5U3RhdGUoKTsKQEAgLTY0MSw3
ICs2NDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
UGFnZUlzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKIAogICAgIG1faXNQYWdlVmlzaWJsZSA9IGlz
VmlzaWJsZTsKICAgICBmbHVzaFJlbmRlcmVycygpOwotICAgIHJlZW5xdWV1ZUN1cnJlbnRWaWRl
b1NhbXBsZUlmTmVlZGVkKCk7CisgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJhbWVJZk5lZWRl
ZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0
VmlzaWJsZUZvckNhbnZhcyhib29sKQpAQCAtNjgxLDcgKzY4MCw3IEBAIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y3VycmVudFJl
YWR5U3RhdGUoCiAgICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVh
bVByaXZhdGUtPmFjdGl2ZSgpIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+aGFzVHJhY2tzKCkp
CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAK
LSAgICBib29sIHdhaXRpbmdGb3JJbWFnZSA9IGFjdGl2ZVZpZGVvVHJhY2soKSAmJiAhbV9pbWFn
ZVBhaW50ZXIubWVkaWFTYW1wbGU7CisgICAgYm9vbCB3YWl0aW5nRm9ySW1hZ2UgPSBhY3RpdmVW
aWRlb1RyYWNrKCkgJiYgIW1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWU7CiAgICAgaWYgKHdhaXRp
bmdGb3JJbWFnZSAmJiAoIW1faGF2ZVNlZW5NZXRhZGF0YSB8fCBtX3dhaXRpbmdGb3JGaXJzdElt
YWdlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGlu
ZzsKIApAQCAtNzQwLDcgKzczOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpzY2hlZHVsZVJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKICAgICBzY2hlZHVsZURl
ZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgICAgICBt
X3BsYXllci0+cmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKLSAgICAgICAgcmVlbnF1ZXVlQ3VycmVu
dFZpZGVvU2FtcGxlSWZOZWVkZWQoKTsKKyAgICAgICAgcmVlbnF1ZXVlQ3VycmVudFZpZGVvRnJh
bWVJZk5lZWRlZCgpOwogICAgIH0pOwogfQogCkBAIC04OTQsNyArODkzLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNr
KCkKIAogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewogICAgICAgICBpZiAo
IW1fYWN0aXZlVmlkZW9UcmFjaykKLSAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5jbGVhckVucXVldWVkU2FtcGxlcygpOworICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmNsZWFyVmlkZW9GcmFtZXMoKTsKICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPnVwZGF0ZURpc3BsYXlNb2RlKGhpZGVWaWRlb0xheWVyIHx8IG1fZGlzcGxh
eU1vZGUgPCBQYXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigpKTsKICAgICB9CiAKQEAgLTkwMiwx
MSArOTAxLDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
aGVja1NlbGVjdGVkVmlkZW9UcmFjaygpCiAKICAgICBpZiAob2xkVmlkZW9UcmFjayAhPSBtX2Fj
dGl2ZVZpZGVvVHJhY2spIHsKICAgICAgICAgaWYgKG9sZFZpZGVvVHJhY2spCi0gICAgICAgICAg
ICBvbGRWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLnJlbW92ZVZpZGVvU2FtcGxl
T2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgb2xkVmlkZW9UcmFjay0+c3RyZWFtVHJhY2so
KS5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAo
bV9hY3RpdmVWaWRlb1RyYWNrKSB7CiAgICAgICAgICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgJiYgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLnNvdXJjZSgpLmlz
Q2FwdHVyZVNvdXJjZSgpKQogICAgICAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT5zZXRSZW5kZXJQb2xpY3koU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpSZW5kZXJQb2xp
Y3k6OkltbWVkaWF0ZWx5KTsKLSAgICAgICAgICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFt
VHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAg
ICAgIG1fYWN0aXZlVmlkZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5hZGRWaWRlb0Zy
YW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAib2JzZXJ2aW5nIHZpZGVvIHNvdXJjZSAiLCBtX2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRy
YWNrKCkubG9nSWRlbnRpZmllcigpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTk4Nyw3ICs5ODYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogewotICAgIGlmICht
X2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAg
ICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZl
ckNvbmZvcm1lcikKQEAgLTk5Nyw3ICs5OTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgIGlmICghbV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvIHBpeGVsQnVmZmVyID0gbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBpeGVs
QnVmZmVyKCkpCisgICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSBtX2ltYWdlUGFpbnRlci52aWRl
b0ZyYW1lLT5waXhlbEJ1ZmZlcigpKQogICAgICAgICBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID0g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lci0+
Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIpKTsKIH0KIApAQCAtMTAwNiw3
ICsxMDA1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAobV9kaXNwbGF5TW9k
ZSA9PSBOb25lIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kaXNwbGF5TW9kZSAhPSBQYWlu
dEl0QmxhY2sgJiYgbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYgKG1fZGlzcGxh
eU1vZGUgIT0gUGFpbnRJdEJsYWNrICYmIG1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpCiAgICAg
ICAgIHVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CkBAIC0xMDE1LDEyICsxMDE0LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLmNnSW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAg
IGlmICghbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5j
Z0ltYWdlOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QgeyBGbG9hdFBvaW50Ojp6ZXJvKCksIGlt
YWdlLT5zaXplKCkgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSB2aWRl
b1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CisgICAg
QWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJp
eCgqbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSk7CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVk
RGVzdFJlY3QgPSB2YWx1ZU9yRGVmYXVsdCh2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5z
Zm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CkBAIC0xMDMyLDEyICsxMDMxLDcgQEAgUmVmUHRy
PFZpZGVvRnJhbWU+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9G
cmFtZUZvckN1cnJlbnRUaW0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKG1fZGlz
cGxheU1vZGUgPT0gUGFpbnRJdEJsYWNrKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpZiAoaXM8VmlkZW9GcmFtZT4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKSkKLSAg
ICAgICAgcmV0dXJuICZkb3duY2FzdDxWaWRlb0ZyYW1lPigqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpOwotICAgIEFTU0VSVChpczxNZWRpYVNhbXBsZUFWRk9iakM+KCptX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSkpOwotICAgIHJldHVybiBkb3duY2FzdDxNZWRpYVNhbXBsZUFWRk9iakM+
KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkudmlkZW9GcmFtZSgpOworICAgIHJldHVybiBt
X2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjb2xvclNwYWNlKCkKQEAgLTExMTEs
NyArMTEwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
Y2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogewog
ICAgIGNnSW1hZ2UgPSBudWxscHRyOwotICAgIG1lZGlhU2FtcGxlID0gbnVsbHB0cjsKKyAgICB2
aWRlb0ZyYW1lID0gbnVsbHB0cjsKICAgICBwaXhlbEJ1ZmZlckNvbmZvcm1lciA9IG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXgg
NWRjZmMwMmRhMWI4YjNmYzE2NDZjYjIyMWY5MTJmMTJiZDFlZDlmMi4uNmM1YWU1MzNiODdmMDA1
MzRhN2VlZTRlZGFlODVhY2FmMDZlMjNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFTYW1wbGVBVkZPYmpDLmgKQEAgLTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+
PiBkaXZpZGUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBVc2VFbmRUaW1lKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8TWVkaWFTYW1wbGU+IGNyZWF0ZU5vbkRp
c3BsYXlpbmdDb3B5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBWaWRlb1JvdGF0aW9uIHZpZGVv
Um90YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JvdGF0aW9uOyB9Ci0gICAgYm9v
bCB2aWRlb01pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9taXJyb3JlZDsgfQot
ICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5h
bDsKKyAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yb3RhdGlvbjsgfQorICAgIGJvb2wgaXNNaXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fbWlycm9yZWQ7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCBwaXhlbEZvcm1h
dCgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIENWUGl4ZWxCdWZmZXJSZWYgcGl4
ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVy
c2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggYTA0NTg3MGVkN2U2ODdk
MjFmMzM3OTE0MGIyODA0NjZlYTMxZjkyOC4uMTMxMWIzMzcxOGE4NGUzM2QxMzkzMTEzMDJkMDQ3
NWZkOTYzYzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIFBsYXRmb3JtU2FtcGxlIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6cGxhdGZvcm1TYW1wbGUoKSBjb25zdAogICAgIHJldHVybiBzYW1wbGU7CiB9CiAKLXVpbnQz
Ml90IE1lZGlhU2FtcGxlQVZGT2JqQzo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit1aW50MzJf
dCBNZWRpYVNhbXBsZUFWRk9iakM6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7CiAgICAgcmV0dXJuIENWUGl4ZWxC
dWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMQ29jb2EubW0KaW5kZXggMDNmN2U0NTNjMmY0ZTFhOWM3ZDlmNTAyZmNmMjVmYTM1OGIzMzYz
OC4uNzE1NDJmNzliN2MyZDMzNjI5OWZjYzJhZDUyZTkzMWIyMGVkYzQyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tCkBAIC03ODEsNyArNzgxLDcgQEAgUmVmUHRyPFZpZGVvRnJh
bWU+IEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb1ZpZGVv
RnJhbWUoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobV9yZXNvdXJjZU93bmVy
KQogICAgICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIobWVkaWFTYW1w
bGVQaXhlbEJ1ZmZlci5nZXQoKSwgbV9yZXNvdXJjZU93bmVyKTsKLSAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUoeyB9LCBmYWxzZSwgVmlkZW9GcmFtZTo6VmlkZW9Sb3RhdGlvbjo6Tm9u
ZSwgV1RGTW92ZShtZWRpYVNhbXBsZVBpeGVsQnVmZmVyKSk7CisgICAgcmV0dXJuIFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKHsgfSwgZmFsc2UsIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBXVEZN
b3ZlKG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZU
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vz
c2lvblZULmgKaW5kZXggZDM4OTE5ODFlODVlODAzZGY4NGU1MDU3MGIyZDQwYWQ0MmVjMTU4Ny4u
NzM5MjQ0NmExMDUyMDIxZDg5ZDA0ZWNmYmI0ZmVjYmZhZDRiNjc4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25T
ZXNzaW9uVlQuaApAQCAtMzQsNyArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZm
ZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFZpZGVvRnJhbWU7CiAKIGNsYXNzIEltYWdlUm90YXRp
b25TZXNzaW9uVlQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTaXplJiByb3RhdGVkU2l6ZSgpIHsg
cmV0dXJuIG1fcm90YXRlZFNpemU7IH0KIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiByb3RhdGUoQ1ZQaXhlbEJ1ZmZlclJlZik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZShNZWRpYVNhbXBsZSYsIGNvbnN0IFJvdGF0aW9uUHJv
cGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGUoVmlkZW9GcmFtZSYsIGNvbnN0IFJvdGF0aW9u
UHJvcGVydGllcyYsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
aW5pdGlhbGl6ZShjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBGbG9hdFNpemUsIElzQ0dJbWFn
ZUNvbXBhdGlibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQubW0KaW5kZXggM2VhYjA2ODllOTA0
NTFhZDQ1OGNlZjM4OTY5NGZmOWU2OWIwNmY3Ni4uYTI2YWY4MWQ2MTk0MjZhYWVlOTczNzkxZjNm
MDUyOGE5Mzc3ZjM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW1wb3J0ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbXBvcnQgIkNWVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorI2ltcG9ydCAi
VmlkZW9GcmFtZS5oIgogCiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCAi
VmlkZW9Ub29sYm94U29mdExpbmsuaCIKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoTWVkaWFTYW1wbGUmIHZpZGVv
RnJhbWUsIGNvbnN0IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBh
dGlibGUgY2dJbWFnZUNvbXBhdGlibGUpCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0
IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIElzQ0dJbWFnZUNvbXBhdGlibGUgY2dJbWFn
ZUNvbXBhdGlibGUpCiB7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHZpZGVvRnJhbWUucGl4ZWxC
dWZmZXIoKTsKICAgICBBU1NFUlQocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5o
CmluZGV4IGJhODEwNGQ2OTgxNGI0ZDgxYTJjNTk0MDllNWUyZGZmN2EzNTQ5YzcuLmQyMDUxMzQw
YThhMTU0OTczNDM0YmZmYmQyOGJmNGY2NzVlZTkwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4obmV3IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQo
cGl4ZWxGb3JtYXQsIHNob3VsZFVzZUlPU3VyZmFjZSkpOwogICAgIH0KIAotICAgIFJlZlB0cjxN
ZWRpYVNhbXBsZT4gY29udmVydFZpZGVvRnJhbWUoTWVkaWFTYW1wbGUmLCBjb25zdCBJbnRTaXpl
Jik7Ci0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVm
LCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9
IGZhbHNlKTsKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNyZWF0ZU1lZGlhU2FtcGxlKENNU2Ft
cGxlQnVmZmVyUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9v
bCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY29udmVydFZpZGVv
RnJhbWUoVmlkZW9GcmFtZSYsIGNvbnN0IEludFNpemUmKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFt
ZT4gY3JlYXRlVmlkZW9GcmFtZShDR0ltYWdlUmVmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBJ
bnRTaXplJiwgVmlkZW9GcmFtZTo6Um90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9u
ZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gY3JlYXRl
VmlkZW9GcmFtZShDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50
U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUs
IGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE1lZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShJ
T1N1cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBib29s
IG1pcnJvcmVkID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxWaWRlb0ZyYW1l
PiBjcmVhdGVWaWRlb0ZyYW1lKElPU3VyZmFjZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
SW50U2l6ZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5v
bmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7CiAjZW5kaWYKIAogICAgIHVpbnQzMl90IHBpeGVs
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEZvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNz
aW9uVlQubW0KaW5kZXggOGI2ZDc5NDU1YWI3MzMyYzM0Mzk5MjgxNDkzM2M2MDVmOTc5Y2M2ZC4u
YTczNTg2ZDlkNjljYzVmMTZlOTkzMTU2YTE3YzBkZGQyZmJlMmJiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVy
U2Vzc2lvblZULm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVy
UmVmPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVDTVNhbXBsZUJ1ZmZlcihJT1N1cmYK
IH0KICNlbmRpZgogCi1SZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNvbnZlcnRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBjb25zdCBJbnRTaXpl
JiBzaXplKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNvbnZl
cnRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgaWYgKHNpemUgPT0gZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0
aW9uU2l6ZSgpKSkKICAgICAgICAgcmV0dXJuICZ2aWRlb0ZyYW1lOwpAQCAtMjY0LDExICsyNjQs
MTEgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0
VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW8KICAgICBpZiAoIXJlc2l6ZWRCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRl
KHZpZGVvRnJhbWUucHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb0ZyYW1lLnZpZGVvTWlycm9yZWQo
KSwgdmlkZW9GcmFtZS52aWRlb1JvdGF0aW9uKCksIFdURk1vdmUocmVzaXplZEJ1ZmZlcikpOwor
ICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRp
bWUoKSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgV1RG
TW92ZShyZXNpemVkQnVmZmVyKSk7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi1S
ZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2Ft
cGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNv
bnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBi
b29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6
OmNyZWF0ZVZpZGVvRnJhbWUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IE1lZGlhVGltZSYg
c2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVhdGVD
TVNhbXBsZUJ1ZmZlcihzdXJmYWNlLCBzYW1wbGVUaW1lLCBzaXplKTsKICAgICBpZiAoIXNhbXBs
ZUJ1ZmZlcikKQEAgLTI3OCw3ICsyNzgsNyBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYQogfQog
I2VuZGlmCiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlTWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVU
aW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbiwgYm9vbCBtaXJyb3JlZCkKK1JlZlB0cjxWaWRlb0ZyYW1lPiBJbWFnZVRyYW5zZmVyU2Vz
c2lvblZUOjpjcmVhdGVWaWRlb0ZyYW1lKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IE1lZGlhVGlt
ZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmlkZW9GcmFtZTo6Um90YXRpb24g
cm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiB7CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBjcmVh
dGVDTVNhbXBsZUJ1ZmZlcihpbWFnZSwgc2FtcGxlVGltZSwgc2l6ZSk7CiAgICAgaWYgKCFzYW1w
bGVCdWZmZXIpCkBAIC0yODcsNyArMjg3LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShDR0ltYWdlUmVmIGltYWdlLAogICAg
IHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIG1pcnJvcmVk
LCByb3RhdGlvbik7CiB9CiAKLVJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y3JlYXRlTWVkaWFTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyLCBjb25zdCBN
ZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNpemUsIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQorUmVmUHRyPFZpZGVvRnJhbWU+
IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZVZpZGVvRnJhbWUoQ01TYW1wbGVCdWZmZXJS
ZWYgYnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNpemUmIHNp
emUsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQogewogICAg
IGF1dG8gc2FtcGxlQnVmZmVyID0gY29udmVydENNU2FtcGxlQnVmZmVyKGJ1ZmZlciwgc2l6ZSwg
JnNhbXBsZVRpbWUpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAppbmRleCA5M2EzZTcxNTdl
NjFmNTA5MTA1MmJmM2Y1ZjQwNGNmMDkyNjgxYzg0Li4wY2QyZTEwOWJjNzg2MDM1YTVhZGYxOTY0
YzFjZTM5ZGYxZTY5Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9WaWRlb0ZyYW1lQ1YuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlZpZGVv
RnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLXVzaW5nIENWUGl4ZWxCdWZm
ZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7Cit1c2luZyBDTVNhbXBsZUJ1ZmZlclJlZiA9IHN0
cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzksOCArMzksOCBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3MgVmlkZW9GcmFtZUNWIDog
cHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wg
aXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUNWPiBjcmVhdGUoQ01T
YW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0ZyYW1lQ1Y+IGNyZWF0ZShNZWRpYVRpbWUgcHJl
c2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GcmFt
ZUNWPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24p
OwogICAgIHN0YXRpYyBSZWZQdHI8VmlkZW9GcmFtZUNWPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflZpZGVvRnJhbWVDVigpOwogCkBA
IC01MiwyNyArNTIsMjYgQEAgcHVibGljOgogCiAgICAgLy8gVmlkZW9GcmFtZSBvdmVycmlkZXMu
CiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUo
KSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB1aW50MzJfdCB2aWRlb1BpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3QgcGl4ZWxGb3Jt
YXQoKSBjb25zdCBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElk
ZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpIGZpbmFsOwogICAgIGJvb2wgaXNDVigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9GcmFtZUNWPiBhc1ZpZGVvRnJhbWVDVigpIGZpbmFsOwogCiBwcml2YXRlOgot
ICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlkZW9GcmFtZUNWKE1lZGlhVGltZSBwcmVz
ZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4mJik7CiAKICAgICBjb25zdCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
bV9waXhlbEJ1ZmZlcjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgVmlk
ZW9GcmFtZUNWOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1fcHJlc2VudGF0aW9uVGltZSA8PCBtX2lzTWlycm9yZWQgPDwgbV9yb3RhdGlvbiA8PCBt
X3BpeGVsQnVmZmVyOworICAgIGVuY29kZXIgPDwgcHJlc2VudGF0aW9uVGltZSgpIDw8IGlzTWly
cm9yZWQoKSA8PCByb3RhdGlvbigpIDw8IG1fcGl4ZWxCdWZmZXI7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFZpZGVvRnJhbWVDVj4+IFZpZGVv
RnJhbWVDVjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcmVzZW50YXRp
b25UaW1lID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8TWVkaWFUaW1lPigpOwogICAgIGF1dG8g
aXNNaXJyb3JlZCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPGJvb2w+KCk7Ci0gICAgYXV0byBy
b3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFZpZGVvUm90YXRpb24+KCk7CisgICAg
YXV0byByb3RhdGlvbiA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPFJvdGF0aW9uPigpOwogICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4+KCk7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSB8fCAhKnBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtODMsNyArODIsNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxWaWRlb0ZyYW1l
Q1Y+PiBWaWRlb0ZyYW1lQ1Y6OmRlYwogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlZpZGVvRnJhbWVDVikKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlkZW9GcmFtZS5pc0NWKCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlh
U2FtcGxlKSB7IHJldHVybiBpczxXZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYg
aXM8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPihkb3duY2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lPiht
ZWRpYVNhbXBsZSkpOyB9CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFt
ZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNW
Lm1tCmluZGV4IGFiZDdlMmZjODk3YjA3MWJiMGI1ZmYzOTc2ZDk5ZjBjMTllMTQ0NmMuLmJmZmUy
YjRiZDZiNTU3YTI4Nzk4Y2IyZGVjMTJiYjlkNDg2M2M4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb0ZyYW1lQ1YubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0Zy
YW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaXJy
b3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1JlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJh
bWVDVjo6Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgYm9vbCBpc01pcnJv
cmVkLCBSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q1ZQaXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVy
KHNhbXBsZUJ1ZmZlcikpOwogICAgIGF1dG8gdGltZVN0YW1wID0gUEFMOjpDTVNhbXBsZUJ1ZmZl
ckdldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChzYW1wbGVCdWZmZXIpOwpAQCAtNDQsNyAr
NDQsNyBAQCBSZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaQogICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6
OmNyZWF0ZShQQUw6OnRvTWVkaWFUaW1lKHRpbWVTdGFtcCksIGlzTWlycm9yZWQsIHJvdGF0aW9u
LCBwaXhlbEJ1ZmZlcik7CiB9CiAKLVJlZjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3Jl
YXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90
YXRpb24gcm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVy
KQorUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24sIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyKQogewogICAgIEFTU0VSVChwaXhlbEJ1
ZmZlcik7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUNWKHByZXNlbnRhdGlv
blRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uLCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSkpOwpAQCAt
NzMsMTAgKzczLDEwIEBAIFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWVDVjo6Y3JlYXRl
RnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7Ci0gICAg
cmV0dXJuIGNyZWF0ZSh7IH0sIGZhbHNlLCBWaWRlb1JvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKGN2
UGl4ZWxCdWZmZXIpKTsKKyAgICByZXR1cm4gY3JlYXRlKHsgfSwgZmFsc2UsIFJvdGF0aW9uOjpO
b25lLCBXVEZNb3ZlKGN2UGl4ZWxCdWZmZXIpKTsKIH0KIAotVmlkZW9GcmFtZUNWOjpWaWRlb0Zy
YW1lQ1YoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9S
b3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZm
ZXIpCitWaWRlb0ZyYW1lQ1Y6OlZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSwgYm9vbCBpc01pcnJvcmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIpCiAgICAgOiBWaWRlb0ZyYW1lKHByZXNlbnRhdGlvblRp
bWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uKQogICAgICwgbV9waXhlbEJ1ZmZlcihXVEZNb3ZlKHBp
eGVsQnVmZmVyKSkKIHsKQEAgLTg5LDcgKzg5LDcgQEAgV2ViQ29yZTo6RmxvYXRTaXplIFZpZGVv
RnJhbWVDVjo6cHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX3BpeGVsQnVmZmVyLmdldCgpKSksIHN0
YXRpY19jYXN0PGZsb2F0PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fcGl4ZWxCdWZmZXIuZ2V0
KCkpKSB9OwogfQogCi11aW50MzJfdCBWaWRlb0ZyYW1lQ1Y6OnZpZGVvUGl4ZWxGb3JtYXQoKSBj
b25zdAordWludDMyX3QgVmlkZW9GcmFtZUNWOjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUobV9waXhlbEJ1ZmZlci5nZXQo
KSk7CiB9CkBAIC0xMDIsMjMgKzEwMiwxOCBAQCB2b2lkIFZpZGVvRnJhbWVDVjo6c2V0T3duZXJz
aGlwSWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogICAgIHNl
dE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihidWZmZXIsIHJlc291cmNlT3duZXIp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmFzVmlk
ZW9GcmFtZUNWKCkKLXsKLSAgICByZXR1cm4gdGhpczsKLX0KLQogSW1hZ2VPcmllbnRhdGlvbiBW
aWRlb0ZyYW1lQ1Y6Om9yaWVudGF0aW9uKCkgY29uc3QKIHsKICAgICAvLyBTYW1wbGUgdHJhbnNm
b3JtIGZpcnN0IGZsaXBzIHgtY29vcmRpbmF0ZXMsIHRoZW4gcm90YXRlcy4KLSAgICBzd2l0Y2gg
KG1fcm90YXRpb24pIHsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25l
OgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2lu
VG9wUmlnaHQgOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OwotICAgIGNhc2UgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgotICAgICAgICByZXR1cm4gbV9pc01pcnJv
cmVkID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0
aW9uOjpPcmlnaW5SaWdodFRvcDsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpVcHNpZGVEb3duOgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8gSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJp
Z2h0OwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ6Ci0gICAgICAg
IHJldHVybiBtX2lzTWlycm9yZWQgPyBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDog
SW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRvbTsKKyAgICBzd2l0Y2ggKHJvdGF0aW9u
KCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9wUmlnaHQgOiBJbWFn
ZU9yaWVudGF0aW9uOjpPcmlnaW5Ub3BMZWZ0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRp
b246OlJpZ2h0OgorICAgICAgICByZXR1cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlv
bjo6T3JpZ2luUmlnaHRCb3R0b20gOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5SaWdodFRvcDsK
KyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgICAgICByZXR1
cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luQm90dG9tTGVmdCA6IElt
YWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbVJpZ2h0OworICAgIGNhc2UgVmlkZW9GcmFtZTo6
Um90YXRpb246OkxlZnQ6CisgICAgICAgIHJldHVybiBpc01pcnJvcmVkKCkgPyBJbWFnZU9yaWVu
dGF0aW9uOjpPcmlnaW5MZWZ0VG9wIDogSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdEJvdHRv
bTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcAppbmRleCBl
OTU1ZTA0MmY4NWY5YzNjMTZmYjJkYTgzYjkzNWI3N2Q5Mzk0NTRmLi5iOWQzOGYwNDc0OGRkMTNi
M2Q0ZmQyZTMyNjcwODYzNTg1N2YyNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFt
ZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFZp
ZGVvRnJhbWVHU3RyZWFtZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1
ZmZlcihQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRh
dGlvblRpbWUsIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSwgZG91YmxlIGZyYW1lUmF0
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIHN0ZDo6
b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0YSkKK1JlZjxWaWRlb0Zy
YW1lR1N0cmVhbWVyPiBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIo
UGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlciwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25U
aW1lLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUsIGRvdWJsZSBmcmFtZVJhdGUsIFJv
dGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxW
aWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhKQogewogICAgIGVuc3VyZUdTdHJlYW1l
ckluaXRpYWxpemVkKCk7CiAKQEAgLTg1LDcgKzg1LDcgQEAgUmVmPFZpZGVvRnJhbWVHU3RyZWFt
ZXI+IFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZl
ciYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb0ZyYW1lR1N0cmVhbWVyKFdURk1vdmUo
c2FtcGxlKSwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBwcmVzZW50YXRpb25UaW1lLCB2aWRl
b1JvdGF0aW9uLCB2aWRlb01pcnJvcmVkLCBXVEZNb3ZlKG1ldGFkYXRhKSkpOwogfQogCi1WaWRl
b0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYm
IHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRp
bWUmIHByZXNlbnRhdGlvblRpbWUsIFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiwgYm9vbCB2
aWRlb01pcnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0
YWRhdGEpCitWaWRlb0ZyYW1lR1N0cmVhbWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBj
b25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24s
IGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
PiYmIG1ldGFkYXRhKQogICAgIDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCB2aWRlb01p
cnJvcmVkLCB2aWRlb1JvdGF0aW9uKQogICAgICwgbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQog
ICAgICwgbV9wcmVzZW50YXRpb25TaXplKHByZXNlbnRhdGlvblNpemUpCkBAIC05OCw3ICs5OCw3
IEBAIFZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoR1JlZlB0cjxHc3RT
YW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hCiAgICAgICAgIGJ1ZmZlciA9IHdlYmtpdEdzdEJ1
ZmZlclNldFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEoYnVmZmVyLCBXVEZNb3ZlKG1ldGFkYXRhKSk7
CiB9CiAKLVZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3QgR1Jl
ZlB0cjxHc3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGlt
ZSwgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQorVmlkZW9GcmFtZUdTdHJlYW1lcjo6Vmlk
ZW9GcmFtZUdTdHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNhbXBsZSwgY29uc3Qg
TWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBSb3RhdGlvbiB2aWRlb1JvdGF0aW9uKQogICAg
IDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBmYWxzZSwgdmlkZW9Sb3RhdGlvbikKICAg
ICAsIG1fc2FtcGxlKHNhbXBsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCmlu
ZGV4IDExYmY5MDJjMDBjMWE5MzIxM2E1OTA1Yjc4ZjI4OWI3M2Y4MTQ2MTMuLjFjODBjMjJlMDI2
NjU5NjZkMTdiOThhODZjMTI1MjZlMTZmYjkwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3Ry
ZWFtZXIuaApAQCAtMzAsMjYgKzMwLDI3IEBAIGNsYXNzIFBpeGVsQnVmZmVyOwogCiBjbGFzcyBW
aWRlb0ZyYW1lR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIFZpZGVvRnJhbWUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQdHI8R3N0U2Ft
cGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBN
ZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCksIFZp
ZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgdmlk
ZW9NaXJyb3JlZCA9IGZhbHNlLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+
JiYgbWV0YWRhdGEgPSBzdGQ6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0
cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBGbG9hdFNp
emUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSA9
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFJvdGF0
aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GcmFtZUdTdHJlYW1lcihXVEZNb3ZlKHNh
bXBsZSksIHByZXNlbnRhdGlvblNpemUsIHByZXNlbnRhdGlvblRpbWUsIHZpZGVvUm90YXRpb24s
IHZpZGVvTWlycm9yZWQsIFdURk1vdmUobWV0YWRhdGEpKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0IEdSZWZQ
dHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUs
IFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpCisgICAg
c3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVXcmFwcGVkU2FtcGxlKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlv
blRpbWUsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVHU3RyZWFtZXIoc2FtcGxlLCBw
cmVzZW50YXRpb25UaW1lLCB2aWRlb1JvdGF0aW9uKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJl
ZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXIm
JiwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFt
ZVJhdGUgPSAxLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpO
b25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgUmVm
PFZpZGVvRnJhbWVHU3RyZWFtZXI+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYm
LCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCksIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSA9IHsgfSwgZG91YmxlIGZyYW1l
UmF0ZSA9IDEsIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSwgYm9vbCB2
aWRlb01pcnJvcmVkID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0
YT4mJiBtZXRhZGF0YSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBHc3RTYW1wbGUqIHNhbXBsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9G
cmFtZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiwgY29uc3QgRmxvYXRTaXplJiBwcmVz
ZW50YXRpb25TaXplLCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCksIFZpZGVvUm90YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBi
b29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKLSAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0
IEdSZWZQdHI8R3N0U2FtcGxlPiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwg
VmlkZW9Sb3RhdGlvbiA9IFZpZGVvUm90YXRpb246Ok5vbmUpOworICAgIFZpZGVvRnJhbWVHU3Ry
ZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9u
U2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpLCBSb3RhdGlvbiA9IFJvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQg
PSBmYWxzZSwgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmID0gc3RkOjpu
dWxsb3B0KTsKKyAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxl
PiYsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgUm90YXRpb24gPSBSb3RhdGlv
bjo6Tm9uZSk7CiAKICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uU2l6ZTsgfQogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xh
bXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3Qg
cGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAKICAgICBHUmVmUHRyPEdz
dFNhbXBsZT4gbV9zYW1wbGU7CiAgICAgRmxvYXRTaXplIG1fcHJlc2VudGF0aW9uU2l6ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAwMzgxODlmNzQ3ZGZiYjI4Zjg3NWY3ZTY3ZjViYzFm
YTMxNTg2Y2ZjLi44ZTc5ZjRiZWE4MzQwZGJkNjcxMWRkYzI4ZTJhNzA4ZWI5YTg2MjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnM7CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgOiBw
dWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgICwgcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiBwdWJsaWM6CiAg
ICAgfk1lZGlhUmVjb3JkZXJQcml2YXRlKCk7CiAKQEAgLTExNiwxMiArMTE2LDEyIEBAIGlubGlu
ZSB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZXRBdWRpb1NvdXJjZShSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4mJiBhCiBpbmxpbmUgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2V0
VmlkZW9Tb3VyY2UoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgdmlkZW9Tb3VyY2UpCiB7
CiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5yZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV92aWRlb1NvdXJjZSA9IFdURk1vdmUo
dmlkZW9Tb3VyY2UpOwogCiAgICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9T
b3VyY2UtPmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291
cmNlLT5hZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiBpbmxpbmUgTWVkaWFSZWNv
cmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCkBAIC0xMzIsNyArMTMyLDcgQEAg
aW5saW5lIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp+TWVkaWFSZWNvcmRlclByaXZhdGUoKQogICAg
IGlmIChtX2F1ZGlvU291cmNlKQogICAgICAgICBtX2F1ZGlvU291cmNlLT5yZW1vdmVBdWRpb1Nh
bXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICBpZiAobV92aWRlb1NvdXJjZSkKLSAgICAgICAgbV92
aWRlb1NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1f
dmlkZW9Tb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNw
cAppbmRleCAxYzBkM2U1M2M2MWMyZjE2OGZhNWRjZmVmZTNkYTJjMzYzZDI5MmJkLi5hNzRlYmRk
OTM2YTQ1NTIzMTQxNjQ4MTVkMWQ5ODc4MTZkZWQ0NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC04MywxOSArODMsMTkgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2sm
JiBjYWxsYmEKICAgICBjYWxsYmFjayhTdHJpbmcobV93cml0ZXItPm1pbWVUeXBlKCkpLCBtX3dy
aXRlci0+YXVkaW9CaXRSYXRlKCksIG1fd3JpdGVyLT52aWRlb0JpdFJhdGUoKSk7CiB9CiAKLXZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9G
cmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVv
KCkpIHsKICAgICAgICAgaWYgKCFtX2JsYWNrRnJhbWUpIHsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgICAgICBtX2JsYWNrRnJhbWUg
PSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUu
dmlkZW9NaXJyb3JlZCgpLCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpLCBjcmVhdGVCbGFja1BpeGVs
QnVmZmVyKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgYXV0byBz
aXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBtX2JsYWNr
RnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRpbWUo
KSwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUucm90YXRpb24oKSwgY3JlYXRl
QmxhY2tQaXhlbEJ1ZmZlcihzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKICAgICAgICAg
fQogICAgICAgICBtX3dyaXRlci0+YXBwZW5kVmlkZW9GcmFtZSgqbV9ibGFja0ZyYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fYmxhY2tGcmFtZSA9IG51bGxwdHI7Ci0gICAg
bV93cml0ZXItPmFwcGVuZFZpZGVvRnJhbWUoVmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlLnBy
ZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxlLnZpZGVvUm90
YXRpb24oKSwgc2FtcGxlLnBpeGVsQnVmZmVyKCkpKTsKKyAgICBtX3dyaXRlci0+YXBwZW5kVmlk
ZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGwuaAppbmRleCA5NTdmNWQwODc3OWZhOWMzOTI3N2U5MTU5M2M1NjM5NjhjZDc4
ODI2Li4xMjg5NzM1OWNkYmQ3MDgxZTU5YzkxZDhlZGJmMGI1YzA1ZDU4MTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyPiYmKTsKIAogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRlCi0gICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0
YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyLmgKaW5kZXggNzRmMWU3MjM2NzRlOGQwMTk4MjVjNzQwYmM4NjcyZmM2N2Rh
ZjkyMi4uYjE1YzdiZTQxM2MxYmMxMDkxZmM5MmUxOWEwZGFlNTBkZTI0ZDZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBwcmVwYXJlUGlwZWxpbmUoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkgZmluYWwgeyB9OworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWwgeyB9OwogICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbCB7IH07CiAKICAg
ICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCAwNjE3NmM3NDAwMWVmZGY2ZjQ1OTFmNjhkMmUw
MGUxMGE3Y2MwZjhhLi43ZjZkYjNjN2IwNzM3ZmFmMGNlYjlhYTY5ZThkMGRlMzhkZDBiNmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpyZXN1bWVSZWNvcmRpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICBtX2J1ZmZl
ci5hcHBlbmQoIlZpZGVvIFRyYWNrIElEOiAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9j
ay5oCmluZGV4IDcyOTY0NjI1NTM2YzZmMTIwOTIwMzA4MmZmM2UwYjZhN2EzNzcyN2EuLmY5MzU5
MGE4MDg2NzVmZDgzM2RkMjQ0YTI4ZjM3YjU1ZjA1ODgwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZU1vY2suaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Ly8gTWVkaWFSZWNvcmRlclByaXZhdGUKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgdm9pZCB2aWRl
b0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5h
bDsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFs
OwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCBhZGNlNDgzMDJmNWRhOWY3MzA1ZjlkZjJmNGJiYjA4YzBjZDFlZGYwLi5mYWFj
NmM5ODhjZTZhMzcxZWYyNTNlYThmYjlmOTVlZTYxZDkzYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMTMyLDcgKzEzMiw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMgeyBmYWxzZSB9
OwogCiAgICAgUmV0YWluUHRyPFdlYkFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gbV93cml0ZXJEZWxl
Z2F0ZTsKLSAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3BlbmRpbmdW
aWRlb1NhbXBsZVF1ZXVlOworICAgIERlcXVlPFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4+
IG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZTsKICAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+PiBtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlOwogCiAgICAgYm9vbCBtX2lzRmx1
c2hpbmdTYW1wbGVzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCAzMTY2ZTgxNDYyOWU5MDQ4ZTEwZDRjODkw
Yjg5YTJhN2U2MjBjMjUzLi4wMjRmMDlkZmU3Y2U5ZjlmZjE5YzJlODBhMDA1YTAwOGY3YTU5YjRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmkKIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogewog
ICAgIG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuY2xlYXIoKTsKLSAgICBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmNsZWFy
KCk7CiAgICAgaWYgKG1fd3JpdGVyKSB7CiAgICAgICAgIFttX3dyaXRlciBjYW5jZWxXcml0aW5n
XTsKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKQEAgLTI4MywxNSArMjgzLDE1IEBAIGJvb2wg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1
ZmZlcklmUG9zc2libGUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9pc0Zs
dXNoaW5nU2FtcGxlcykgewotICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IHdoaWxlICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fdmlkZW9B
c3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgYXBwZW5k
Q29tcHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUudGFr
ZUZpcnN0KCkuZ2V0KCkpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmlz
RW1wdHkoKSAmJiBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURh
dGFdKQorICAgICAgICBhcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIobV9wZW5kaW5n
VmlkZW9GcmFtZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgpKTsKIAogICAgIGlmICghW21fdmlkZW9B
c3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgewotICAgICAgICBtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVy
SW5wdXQgKmFzCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNz
ZWRTYW1wbGVCdWZmZXJzKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBib29s
IGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMgPSAhbV9wZW5kaW5nQXVkaW9TYW1wbGVRdWV1ZS5pc0Vt
cHR5KCk7Ci0gICAgYm9vbCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzID0gIW1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUuaXNFbXB0eSgpOworICAgIGJvb2wgaGFzUGVuZGluZ1ZpZGVvU2FtcGxlcyA9
ICFtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0eSgpOwogCiAgICAgaWYgKG1faGFzRW5j
b2RlZFZpZGVvU2FtcGxlcykgewogICAgICAgICBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzIHw9ICFb
bV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdOwpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZsdXNoQ29tcHJl
c3NlZFNhbXBsZUJ1ZmZlcnMoRnVuY3Rpb248dm9pZCgpPiYmCiAKICAgICBBU1NFUlQoIW1faXNG
bHVzaGluZ1NhbXBsZXMpOwogICAgIG1faXNGbHVzaGluZ1NhbXBsZXMgPSB0cnVlOwotICAgIGF1
dG8gYmxvY2sgPSBtYWtlQmxvY2tQdHIoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGhhc1BlbmRpbmdBdWRpb1NhbXBsZXMsIGhhc1BlbmRpbmdWaWRlb1NhbXBsZXMsIGF1ZGlv
U2FtcGxlUXVldWUgPSBXVEZNb3ZlKG1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUpLCB2aWRlb1Nh
bXBsZVF1ZXVlID0gV1RGTW92ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGJsb2NrID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBoYXNQZW5kaW5nQXVk
aW9TYW1wbGVzLCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzLCBhdWRpb1NhbXBsZVF1ZXVlID0gV1RG
TW92ZShtX3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlKSwgdmlkZW9TYW1wbGVRdWV1ZSA9IFdURk1v
dmUobV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgY2Fs
bGJhY2soKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4Niw5ICszODYsOSBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIGZy
YW1lKQogICAgIGlmICghbV9maXJzdFZpZGVvRnJhbWUpIHsKICAgICAgICAgbV9maXJzdFZpZGVv
RnJhbWUgPSB0cnVlOwogICAgICAgICBtX3Jlc3VtZWRWaWRlb1RpbWUgPSBQQUw6OkNNQ2xvY2tH
ZXRUaW1lKFBBTDo6Q01DbG9ja0dldEhvc3RUaW1lQ2xvY2soKSk7Ci0gICAgICAgIGlmIChmcmFt
ZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfHwg
ZnJhbWUudmlkZW9NaXJyb3JlZCgpKSB7Ci0gICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGljX2Nhc3Q8aW50PihmcmFtZS52aWRl
b1JvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7Ci0gICAgICAgICAgICBpZiAoZnJhbWUudmlkZW9N
aXJyb3JlZCgpKQorICAgICAgICBpZiAoZnJhbWUucm90YXRpb24oKSAhPSBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6Tm9uZSB8fCBmcmFtZS5pc01pcnJvcmVkKCkpIHsKKyAgICAgICAgICAgIG1fdmlk
ZW9UcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihzdGF0aWNfY2FzdDxp
bnQ+KGZyYW1lLnJvdGF0aW9uKCkpICogTV9QSSAvIDE4MCk7CisgICAgICAgICAgICBpZiAoZnJh
bWUuaXNNaXJyb3JlZCgpKQogICAgICAgICAgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSBDR0Fm
ZmluZVRyYW5zZm9ybVNjYWxlKCptX3ZpZGVvVHJhbnNmb3JtLCAtMSwgMSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRhOTU3OTg3MmE3NzE1ZTU0MDQzOTVk
MDU3NGRjNGRkNzFlZmIyMzkuLjZmYTNiMWUwMWQ0ODg5NGM1YTU0NzU3ZjVkMTA2N2RmZWU0YTUx
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC03NSwxOCArNzUsMTggQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpyZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2Jz
ZXJ2ZXImIG9ic2VydmUKICAgICBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2
ZXIpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZFZpZGVvU2FtcGxlT2JzZXJ2
ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmFkZFZpZGVvRnJhbWVPYnNlcnZlcihWaWRlb0ZyYW1lT2JzZXJ2ZXImIG9ic2VydmVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgTG9ja2VyIGxvY2tlciB7IG1fdmlk
ZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0gICAgbV92aWRlb1NhbXBsZU9ic2VydmVycy5hZGQo
Jm9ic2VydmVyKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9j
ayB9OworICAgIG1fVmlkZW9GcmFtZU9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKIH0KIAotdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2Ft
cGxlT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxl
T2JzZXJ2ZXJzTG9jayB9OwotICAgIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMucmVtb3ZlKCZvYnNl
cnZlcik7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fVmlkZW9GcmFtZU9ic2VydmVyc0xvY2sgfTsK
KyAgICBtX1ZpZGVvRnJhbWVPYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CiB9CiAKIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQpAQCAt
MTkyLDcgKzE5Miw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dXBkYXRlSGFzU3RhcnRl
ZFByb2R1Y2luZ0RhdGEoKQogICAgIH0pOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSwgVmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9G
cmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhIG1ldGFkYXRhKQogewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICsrbV9mcmFt
ZUNvdW50OwpAQCAtMjEwLDkgKzIxMCw5IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlLCBWaWRlb0ZyCiAKICAg
ICB1cGRhdGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSgpOwogCi0gICAgTG9ja2VyIGxvY2tlciB7
IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07Ci0gICAgZm9yIChhdXRvKiBvYnNlcnZlciA6
IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT52aWRlb1NhbXBsZUF2
YWlsYWJsZShtZWRpYVNhbXBsZSwgbWV0YWRhdGEpOworICAgIExvY2tlciBsb2NrZXIgeyBtX1Zp
ZGVvRnJhbWVPYnNlcnZlcnNMb2NrIH07CisgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fVmlk
ZW9GcmFtZU9ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnZpZGVvRnJhbWVBdmFpbGFibGUo
dmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3Jt
QXVkaW9EYXRhJiBhdWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggNzM0
ODM1MmJlMjUxOTM1OGI1NDZkZTY4ZDBjM2I4OTJhOWY0NGU0ZS4uMWE4OTk4ZGUzYjc5ZWM0MDZj
OTZhZDBhM2Y0OTM2MzJlNzc4MzhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMzgsMTAgKzM4
LDEwIEBACiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VD
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlRmFjdG9yeS5oIgor
I2luY2x1ZGUgIlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KQEAgLTk4LDEyICs5OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE1heSBiZSBjYWxs
ZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KICAgICAgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QgLypudW1iZXJPZkZyYW1lcyov
KSA9IDA7CiAgICAgfTsKLSAgICBjbGFzcyBWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAgICBjbGFz
cyBWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+Vmlk
ZW9TYW1wbGVPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB+VmlkZW9GcmFt
ZU9ic2VydmVyKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIC8vIE1heSBiZSBjYWxsZWQgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KLSAgICAgICAgdmlydHVhbCB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRp
bWVNZXRhZGF0YSkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291
cmNlKCkgPSBkZWZhdWx0OwpAQCAtMTQ3LDggKzE0Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZEF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZlcihBdWRp
b1NhbXBsZU9ic2VydmVyJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcihWaWRlb1NhbXBsZU9ic2VydmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaWRlb0ZyYW1lT2JzZXJ2ZXIoVmlkZW9GcmFtZU9ic2Vy
dmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIo
VmlkZW9GcmFtZU9ic2VydmVyJik7CiAKICAgICBjb25zdCBJbnRTaXplIHNpemUoKSBjb25zdDsK
ICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpOwpAQCAtMjUwLDcgKzI1MCw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemVTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKSB7
IG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVFY2hvQ2Fu
Y2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikgeyBtX2VjaG9DYW5jZWxsYXRpb24gPSBl
Y2hvQ2FuY2VsbGF0aW9uOyB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZh
aWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKICAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlv
RGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOwogCiAgICAgdm9p
ZCBmb3JFYWNoT2JzZXJ2ZXIoY29uc3QgRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiYpOwpAQCAt
Mjg5LDggKzI4OSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBMb2NrIG1fYXVkaW9TYW1wbGVP
YnNlcnZlcnNMb2NrOwogICAgIEhhc2hTZXQ8QXVkaW9TYW1wbGVPYnNlcnZlcio+IG1fYXVkaW9T
YW1wbGVPYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJz
TG9jayk7CiAKLSAgICBtdXRhYmxlIExvY2sgbV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2s7Ci0g
ICAgSGFzaFNldDxWaWRlb1NhbXBsZU9ic2VydmVyKj4gbV92aWRlb1NhbXBsZU9ic2VydmVycyBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBtdXRh
YmxlIExvY2sgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9jazsKKyAgICBIYXNoU2V0PFZpZGVvRnJh
bWVPYnNlcnZlcio+IG1fVmlkZW9GcmFtZU9ic2VydmVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
VmlkZW9GcmFtZU9ic2VydmVyc0xvY2spOwogCiAgICAgLy8gU2V0IG9uIHRoZSBtYWluIHRocmVh
ZCBmcm9tIGNvbnN0cmFpbnRzLgogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggOWE3MTA1NWQ4NmIzZTEwOWZmMjkxNzg3MmNmYmIw
YjI0ODRjZGJmYS4uMjczNmE0M2U3NmU5OTVkZWQ4NjAwYjc0MWQ4NTdkMDhlZTk5YTFiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpvYnNlcnZlU291cmNlKCkKIHZvaWQgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp1bm9ic2VydmVTb3VyY2UoKQogewogICAgIG1fdmlk
ZW9Tb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKLSAgICBtX3ZpZGVvU291cmNlLT5zb3Vy
Y2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3ZpZGVvU291cmNl
LT5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlKFJlZjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4mJiBuZXdTb3VyY2UpCkBAIC0xMTQsMTMgKzExNCwxMyBAQCB2b2lkIFJlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZTo6c3RvcCgpCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZTo6dXBkYXRlQmxhY2tGcmFtZXNTZW5kaW5nKCkKIHsKICAgICBpZiAoIW1fbXV0ZWQgJiYg
bV9lbmFibGVkKSB7Ci0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLmFkZFZpZGVvU2Ft
cGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5hZGRW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBpZiAobV9ibGFja0ZyYW1lVGltZXIu
aXNBY3RpdmUoKSkKICAgICAgICAgICAgIG1fYmxhY2tGcmFtZVRpbWVyLnN0b3AoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJlbW92ZVZp
ZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fdmlkZW9Tb3VyY2UtPnNvdXJjZSgpLnJl
bW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgc2VuZEJsYWNrRnJhbWVzSWZOZWVk
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAppbmRleCBiMmFjMTY5
MDBhM2I1NmJmNzZhMGE1YzEyMGY4ZGQyMWZiN2M5NmU4Li4zMGUyZjkzN2IyNGE1NGM1NDY3YjQ4
Mjk1YmRjMGJmOWE0YjAwODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuaApA
QCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UKICAgICA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Us
IFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwdWJsaWMgd2VicnRjOjpWaWRl
b1RyYWNrU291cmNlSW50ZXJmYWNlCiAgICAgLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpPYnNlcnZlcgotICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1Nh
bXBsZU9ic2VydmVyCisgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBMb2dn
ZXJIZWxwZXIKICNlbmRpZgpAQCAtMTM0LDggKzEzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0
cmFja1NldHRpbmdzQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIGZpbmFsIHsgaW5p
dGlhbGl6ZUZyb21Tb3VyY2UoKTsgfQogICAgIHZvaWQgdHJhY2tFbmRlZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIGZpbmFsIHsgfQogCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJpZGUgeyB9CisgICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIEFQSQorICAgIHZvaWQgdmlkZW9G
cmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgb3ZlcnJp
ZGUgeyB9CiAKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fdmlkZW9Tb3VyY2U7
CiAgICAgVGltZXIgbV9ibGFja0ZyYW1lVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKaW5kZXggNTc5OWQwMDM4OTEyNWU0Y2ZiYjliZTljYTNhYTA1ZGNhMWY1ZmMzNy4u
ZWQ3ZDU2NGE5OTgxYWEwNmIxNmRkZmJjYTExNDg3MTFjZDc5N2ViMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMzY1LDkgKzM2NSw5IEBAIHZvaWQgUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+
IHdpZHRoLCBzCiAgICAgc2V0RnJhbWVSYXRlKG1hdGNoLT5yZXF1ZXN0ZWRGcmFtZVJhdGUpOwog
fQogCi12b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwYXRjaE1lZGlhU2FtcGxl
VG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmIHNhbXBsZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVN
ZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3Bh
dGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7Ci0gICAgTWVkaWFUaW1lIHNhbXBs
ZVRpbWUgPSBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpOworICAgIE1lZGlhVGltZSBzYW1wbGVU
aW1lID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCk7CiAKICAgICBhdXRvIGZyYW1lVGlt
ZSA9IHNhbXBsZVRpbWUudG9Eb3VibGUoKTsKICAgICBtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBz
LmFwcGVuZChmcmFtZVRpbWUpOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2U6OmRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBs
ZSYgc2FtCiAgICAgaWYgKGludGVydmFsID4gMSkKICAgICAgICAgbV9vYnNlcnZlZEZyYW1lUmF0
ZSA9IChtX29ic2VydmVkRnJhbWVUaW1lU3RhbXBzLnNpemUoKSAvIGludGVydmFsKTsKIAotICAg
IHZpZGVvU2FtcGxlQXZhaWxhYmxlKHNhbXBsZSwgbWV0YWRhdGEpOworICAgIHZpZGVvRnJhbWVB
dmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlOjpjbGllbnRVcGRhdGVkU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFs
PGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBmcmFtZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCA0ZTA5
YWUyMWY0NTgzYWJmNDczMjY3ODljZmJmMmIyN2VjMzlkOTYyLi4wYmRjMGQ1NjQ0MTcwM2ZmYzgz
ODcwNzk0Yjc1NjIzMDI4YjU3ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJWaWRlb1ByZXNldC5oIgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CkBAIC00Niw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9ydHNT
aXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxp
bnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2VuZXJhdGVQcmVzZXRzKCkgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb24oKSBjb25zdCB7IHJldHVybiBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6Tm9uZTsgfQorICAgIHZpcnR1YWwgVmlkZW9GcmFtZTo6Um90YXRpb24g
dmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246
Ok5vbmU7IH0KIAogICAgIGRvdWJsZSBvYnNlcnZlZEZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JzZXJ2ZWRGcmFtZVJhdGU7IH0KICAgICBWZWN0b3I8VmlkZW9QcmVzZXREYXRhPiBwcmVz
ZXRzRGF0YSgpOwpAQCAtNzMsNyArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0
ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJik7CiAKLSAgICB2
b2lkIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYsIFdlYkNvcmU6
OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOworICAgIHZvaWQgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9P
YnNlcnZlcnMoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpOwogCiAgICAgc3Rh
dGljIFNwYW48Y29uc3QgSW50U2l6ZT4gc3RhbmRhcmRWaWRlb1NpemVzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKaW5kZXggYTIzNWQ0MjNmMjkxMDRjNTk0OTI4NTRmMGY3NTdhZjA3ZjkyNGEy
OC4uZjllODRmN2I1NzQwODhmMGNkZjY5YTVmOTU0ODQ4NjA3ZDdiYTQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6UmVhbHRp
bWVWaWRlb1NvdXJjZShSZWY8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U+JiYgc291cmMKIAog
UmVhbHRpbWVWaWRlb1NvdXJjZTo6flJlYWx0aW1lVmlkZW9Tb3VyY2UoKQogewotICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVt
b3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOwogfQogCkBAIC02OSwxOCArNjksMTggQEAgdm9pZCBSZWFsdGltZVZpZGVvU291
cmNlOjp3aGVuUmVhZHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNhbGxiYWNr
KQogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewogICAg
IG1fc291cmNlLT5zdGFydCgpOwotICAgIG1fc291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+YWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0K
IAogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAg
bV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNl
LT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5zdG9wKCk7
CiB9CiAKIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZW5kUHJvZHVjaW5nRGF0YSgpCiB7Ci0g
ICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291
cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNlLT5yZXF1
ZXN0VG9FbmQoKnRoaXMpOwogfQogCkBAIC0xMjUsMTIgKzEyNSwxMiBAQCB2b2lkIFJlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c291cmNlU2V0dGluZ3NDaGFuZ2VkKCkKIHsKLSAgICBhdXRvIHJvdGF0aW9uID0gbV9z
b3VyY2UtPnNhbXBsZVJvdGF0aW9uKCk7CisgICAgYXV0byByb3RhdGlvbiA9IG1fc291cmNlLT52
aWRlb0ZyYW1lUm90YXRpb24oKTsKICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAg
aWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICBzaXplID0gbV9zb3VyY2UtPnNpemUoKTsKIAot
ICAgIGlmIChyb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCBy
b3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQpCisgICAgaWYgKHJv
dGF0aW9uID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0IHx8IHJvdGF0aW9uID09IFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNp
emUoKTsKIAogICAgIG1fY3VycmVudFNldHRpbmdzLnNldFdpZHRoKHNpemUud2lkdGgoKSk7CkBA
IC0xNzIsMTAgKzE3MiwxMCBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVN0b3Bw
ZWQoKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1SZWZQdHI8TWVkaWFTYW1wbGU+IFJlYWx0
aW1lVmlkZW9Tb3VyY2U6OmFkYXB0VmlkZW9GcmFtZShNZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSkK
K1JlZlB0cjxWaWRlb0ZyYW1lPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUo
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKLSAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Np
b24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSB2aWRlb0ZyYW1l
LnZpZGVvUGl4ZWxGb3JtYXQoKSkKLSAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IElt
YWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnZpZGVvUGl4ZWxGb3JtYXQo
KSwgbV9zaG91bGRVc2VJT1N1cmZhY2UpOworICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vzc2lv
biB8fCBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5waXhlbEZvcm1hdCgpICE9IHZpZGVvRnJhbWUu
cGl4ZWxGb3JtYXQoKSkKKyAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJh
bnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZSh2aWRlb0ZyYW1lLnBpeGVsRm9ybWF0KCksIG1fc2hvdWxk
VXNlSU9TdXJmYWNlKTsKIAogICAgIEFTU0VSVChtX2ltYWdlVHJhbnNmZXJTZXNzaW9uKTsKICAg
ICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24pCkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRy
PE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZpZGVvRnJhbWUoTWVkaWFT
YW1wbGUmIHZpZGVvRnJhbWUKIH0KICNlbmRpZgogCi12b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1l
VGltZU1ldGFkYXRhIG1ldGFkYXRhKQordm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEgbWV0YWRhdGEpCiB7CiAgICAgaWYgKG1fZnJhbWVEZWNpbWF0aW9uID4gMSAmJiArK21fZnJh
bWVEZWNpbWF0aW9uQ291bnRlciAlIG1fZnJhbWVEZWNpbWF0aW9uKQogICAgICAgICByZXR1cm47
CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYQogICAgIGF1dG8g
c2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBpZiAoIXNpemUuaXNFbXB0eSgpICYmIHNpemUgIT0g
ZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpKSkgewogICAgICAg
ICBpZiAoYXV0byBuZXdWaWRlb0ZyYW1lID0gYWRhcHRWaWRlb0ZyYW1lKHZpZGVvRnJhbWUpKSB7
Ci0gICAgICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSgq
bmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOworICAgICAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSgqbmV3VmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKLSAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7Cisg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBt
ZXRhZGF0YSk7CiB9CiAKIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBSZWFsdGltZVZpZGVvU291
cmNlOjpjbG9uZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggYTcxOTQ5Nzg5ZTRlMDVhOTBhODlm
YzE0MDNiYjgwODhjZmZiZjhhOC4uNjQ2ZDU4YTIyMzdjYWM2NWM5MGVkMjY0MjgwMzEyZTc5MmZi
ZWY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBJbWFnZVRy
YW5zZmVyU2Vzc2lvblZUOwogY2xhc3MgUmVhbHRpbWVWaWRlb1NvdXJjZSBmaW5hbAogICAgIDog
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpPYnNlcnZlcgotICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2Ft
cGxlT2JzZXJ2ZXIgeworICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJh
bWVPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZVZpZGVvU291cmNl
PiBjcmVhdGUoUmVmPFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlPiYmIHNvdXJjZSwgYm9vbCBz
aG91bGRVc2VJT1N1cmZhY2UgPSB0cnVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWx0aW1l
VmlkZW9Tb3VyY2UoV1RGTW92ZShzb3VyY2UpLCBzaG91bGRVc2VJT1N1cmZhY2UpKTsgfQogCkBA
IC03MSwxMSArNzEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5h
bDsKICAgICBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBmaW5hbDsKIAotICAgIC8v
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZT4gYWRhcHRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJik7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+
IGFkYXB0VmlkZW9GcmFtZShWaWRlb0ZyYW1lJik7CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vVmlkZW9QcmVzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Zp
ZGVvUHJlc2V0LmgKaW5kZXggZjgwY2NlZWRkYTc2MGZlZmI3ZTdmZjM5YTBjOWNkNzdhOGIwYThm
Yy4uNmNkMjkwNzNiZjAxY2UyZjQ1Y2MyMTk1MWJiYTU2NmQ1NTc3MWUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAppbmRleCA2ZWU5
NGEwZmE0YmY3ZDBkZDVkYzQ4OGI4MDBkMWVhMGE1M2FkZDEyLi40MDMwNGFiZTY5MDZjYjFmMzRj
NzBhZDJjNjBkNDA4ZjZiYjdiOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hLmNwcApAQCAtMjkzLDM1ICsyOTMsMzUgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNv
dXJjZUNvY29hOjplbWl0RnJhbWUoKQogICAgICAgICB1cGRhdGVGcmFtZVNpemUoKTsKICAgICB9
CiAKLSAgICBhdXRvIHNhbXBsZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCi0gICAgICAgIFt0aGlz
LCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYgc3VyZmFjZSkgLT4gUmVmUHRy
PE1lZGlhU2FtcGxlPiB7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gV1RGOjpzd2l0Y2hPbihmcmFt
ZSwKKyAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxJT1N1cmZhY2VSZWY+JiBz
dXJmYWNlKSAtPiBSZWZQdHI8VmlkZW9GcmFtZT4gewogICAgICAgICAgICAgaWYgKCFzdXJmYWNl
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICByZXR1cm4g
bV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwg
c2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUo
KSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZl
SW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAgICAgIFt0aGlzLCBz
YW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+JiBpbWFnZSkgLT4gUmVmUHRyPFZpZGVvRnJh
bWU+IHsKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVNZWRpYVNhbXBsZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBz
aXplKCkpOworICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0
ZVZpZGVvRnJhbWUoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6
ZSgpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4mIHNhbXBsZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAg
ICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiBzYW1w
bGUpIC0+IFJlZlB0cjxWaWRlb0ZyYW1lPiB7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1h
Z2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxlKHNhbXBsZS5nZXQoKSwgc2FtcGxl
VGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9u
LT5jcmVhdGVWaWRlb0ZyYW1lKHNhbXBsZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKICAg
ICAgICAgfQogICAgICk7CiAKLSAgICBpZiAoIXNhbXBsZSkgeworICAgIGlmICghdmlkZW9GcmFt
ZSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGE7CiAgICAgbWV0YWRhdGEu
Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwot
ICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKCpzYW1wbGUuZ2V0KCksIG1ldGFkYXRhKTsKKyAgICB2
aWRlb0ZyYW1lQXZhaWxhYmxlKCp2aWRlb0ZyYW1lLmdldCgpLCBtZXRhZGF0YSk7CiB9CiAKIHZv
aWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Y2FwdHVyZXJDb25maWd1cmF0aW9uQ2hhbmdl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2Nv
YS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXggYjllYjA4
NWQ0NzQ5MzRjNWUwNTFhNzVhYjFkZDAzY2M1NGU3Zjg1Mi4uNDQ4NjJkNWM5NjRmY2VkOTYzMmU2
NGI2MTM1NzlkM2U3MDQ5OGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgog
I2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM2LDEwICszNywx
MCBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAotCi10eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IF9f
SU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7Cit1c2luZyBDR0ltYWdlUmVmID0gQ0dJbWFnZSo7Cit1
c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwordXNpbmcgSU9TdXJm
YWNlUmVmID0gc3RydWN0IF9fSU9TdXJmYWNlKjsKK3VzaW5nIENNU2FtcGxlQnVmZmVyUmVmID0g
c3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyKjsKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBN
ZWRpYVRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291
cmNlLmNwcAppbmRleCAyNDNjYWFhNWM0Y2Y3MWZlYTg1ZDkyOTI4OGM2OTA3NTRiYWY5NDA0Li44
NDczNzA0MWUyN2JjYTk0ZWViZDg0OWNiMjYxZjg1ZjZmZDZlNTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRNZWRpYVN0cmVhbVNyY0Vuc3VyZVN0cmVhbUNvbGxlY3Rp
b25Qb3N0ZWQoV2ViS2l0TWVkaWFTdHJlYW1TcgogCiBjbGFzcyBJbnRlcm5hbFNvdXJjZSBmaW5h
bCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIsCiAgICAgcHVibGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIsCi0gICAgcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgeworICAgIHB1YmxpYyBSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEludGVybmFsU291cmNlKEdzdEVsZW1lbnQqIHBhcmVu
dCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBjb25zdCBTdHJpbmcmIHBhZE5hbWUp
CkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRp
bygpKQogICAgICAgICAgICAgbV90cmFjay5zb3VyY2UoKS5hZGRBdWRpb1NhbXBsZU9ic2VydmVy
KCp0aGlzKTsKICAgICAgICAgZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAg
ICAgbV90cmFjay5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAg
ICAgICAgIG1fdHJhY2suc291cmNlKCkuYWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAg
ICAgICAgbV9pc09ic2VydmluZyA9IHRydWU7CiAgICAgfQogCkBAIC0xOTYsNyArMTk2LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAobV90cmFjay5oYXNBdWRpbygpKQogICAgICAgICAgICAgbV90
cmFjay5zb3VyY2UoKS5yZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAg
ZWxzZSBpZiAobV90cmFjay5oYXNWaWRlbygpKQotICAgICAgICAgICAgbV90cmFjay5zb3VyY2Uo
KS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgICAgIG1fdHJhY2su
c291cmNlKCkucmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV90cmFj
ay5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgfQogCkBAIC0yNzIsMTMgKzI3MiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsCisgICAg
dm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW1fcGFyZW50IHx8ICFt
X2lzT2JzZXJ2aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gc2FtcGxl
U2l6ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgIEludFNpemUgY2FwdHVy
ZVNpemUoc2FtcGxlU2l6ZS53aWR0aCgpLCBzYW1wbGVTaXplLmhlaWdodCgpKTsKKyAgICAgICAg
YXV0byB2aWRlb0ZyYW1lU2l6ZSA9IHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOworICAg
ICAgICBJbnRTaXplIGNhcHR1cmVTaXplKHZpZGVvRnJhbWVTaXplLndpZHRoKCksIHZpZGVvRnJh
bWVTaXplLmhlaWdodCgpKTsKIAogICAgICAgICBhdXRvIHNldHRpbmdzID0gbV90cmFjay5zZXR0
aW5ncygpOwogICAgICAgICBtX2NvbmZpZ3VyZWRTaXplLnNldFdpZHRoKHNldHRpbmdzLndpZHRo
KCkpOwpAQCAtMjg5LDggKzI4OSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2NvbmZpZ3Vy
ZWRTaXplLmhlaWdodCgpKQogICAgICAgICAgICAgbV9jb25maWd1cmVkU2l6ZS5zZXRIZWlnaHQo
Y2FwdHVyZVNpemUuaGVpZ2h0KCkpOwogCi0gICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHNh
bXBsZS52aWRlb1JvdGF0aW9uKCk7Ci0gICAgICAgIGJvb2wgdmlkZW9NaXJyb3JlZCA9IHNhbXBs
ZS52aWRlb01pcnJvcmVkKCk7CisgICAgICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IHZpZGVvRnJh
bWUucm90YXRpb24oKTsKKyAgICAgICAgYm9vbCB2aWRlb01pcnJvcmVkID0gdmlkZW9GcmFtZS5p
c01pcnJvcmVkKCk7CiAgICAgICAgIGlmIChtX3ZpZGVvUm90YXRpb24gIT0gdmlkZW9Sb3RhdGlv
biB8fCBtX3ZpZGVvTWlycm9yZWQgIT0gdmlkZW9NaXJyb3JlZCkgewogICAgICAgICAgICAgbV92
aWRlb1JvdGF0aW9uID0gdmlkZW9Sb3RhdGlvbjsKICAgICAgICAgICAgIG1fdmlkZW9NaXJyb3Jl
ZCA9IHZpZGVvTWlycm9yZWQ7CkBAIC0zMDEsOCArMzAxLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgZ3N0X3BhZF9wdXNoX2V2ZW50KHBhZC5nZXQoKSwgZ3N0X2V2ZW50X25ld190YWcoZ3N0X3Rh
Z19saXN0X25ldyhHU1RfVEFHX0lNQUdFX09SSUVOVEFUSU9OLCBvcmllbnRhdGlvbi51dGY4KCku
ZGF0YSgpLCBudWxscHRyKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogdmlkZW9GcmFt
ZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmc2FtcGxlKTsKLSAgICAgICAg
YXV0byogZ3N0U2FtcGxlID0gdmlkZW9GcmFtZS0+c2FtcGxlKCk7CisgICAgICAgIGF1dG8qIGdz
dFNhbXBsZSA9IHN0YXRpY19jYXN0PFZpZGVvRnJhbWVHU3RyZWFtZXIqPigmdmlkZW9GcmFtZSkt
PnNhbXBsZSgpOwogICAgICAgICBpZiAoIW1fY29uZmlndXJlZFNpemUuaXNFbXB0eSgpICYmIG1f
bGFzdEtub3duU2l6ZSAhPSBtX2NvbmZpZ3VyZWRTaXplKSB7CiAgICAgICAgICAgICBtX2xhc3RL
bm93blNpemUgPSBtX2NvbmZpZ3VyZWRTaXplOwogICAgICAgICAgICAgdXBkYXRlQmxhY2tGcmFt
ZShnc3Rfc2FtcGxlX2dldF9jYXBzKGdzdFNhbXBsZSkpOwpAQCAtMzg0LDcgKzM4Myw3IEBAIHBy
aXZhdGU6CiAgICAgSW50U2l6ZSBtX2NvbmZpZ3VyZWRTaXplOwogICAgIEludFNpemUgbV9sYXN0
S25vd25TaXplOwogICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBtX2JsYWNrRnJhbWU7Ci0gICAgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBtX3ZpZGVvUm90
YXRpb24geyBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIGJvb2wgbV92aWRlb01p
cnJvcmVkIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggMTUwMDUwMmEzZWRjMDk5YjNkMmFjNmMyZmJm
NTk5OWUwZWQyYjBmNi4uNmJkNjBhYjI2ZjgzMDdkNzIxMDg5NzE2ZTc1YTRiZmNhYzVhMmQxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5j
cHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6
cHJvY2Vzc05ld0ZyYW1lKFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiYmIHZpZAogICAgIGlmICgh
aXNQcm9kdWNpbmdEYXRhKCkgfHwgbXV0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGlz
cGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKFdURk1vdmUodmlkZW9GcmFtZSksIHsgfSk7Cisg
ICAgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9PYnNlcnZlcnMoV1RGTW92ZSh2aWRlb0ZyYW1lKSwgeyB9
KTsKIH0KIAogR3N0Rmxvd1JldHVybiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6Om5ld1Nh
bXBsZUNhbGxiYWNrKEdzdEVsZW1lbnQqIHNpbmssIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZSogc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNDAxZTRhMTQ5N2FjMjFhMDk5MWM2ZTU5OTE1NDNk
NWI5NWExZjJhZS4uZDViMTQ5NjBjNTA0MDM1OWYxMzliMjc5ZjI3YTc0OGFlNTIwMWE1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC02OSwyNCArNjksMjQgQEAgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0
cmVhbWVyOjpNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIoUmVhbHRpbWVNZWQKICAg
ICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKICAgICAsIG1fZGV2aWNlVHlwZShkZXZpY2VU
eXBlKQogewotICAgIG1fc291cmNlLT5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAg
ICBtX3NvdXJjZS0+YWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogTW9ja0Rpc3Bs
YXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjp+TW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVh
bWVyKCkKIHsKLSAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7
CisgICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZv
aWQgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjpzdG9wUHJvZHVjaW5nRGF0YSgp
CiB7Ci0gICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAg
IG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgIG1fc291cmNl
LT5zdG9wKCk7CiB9CiAKIHZvaWQgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNlR1N0cmVhbWVyOjpy
ZXF1ZXN0VG9FbmQoT2JzZXJ2ZXImIGNhbGxpbmdPYnNlcnZlcikKIHsKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjpyZXF1ZXN0VG9FbmQoY2FsbGluZ09ic2VydmVyKTsKLSAgICBtX3NvdXJjZS0+
cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9zb3VyY2UtPnJlbW92ZVZp
ZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgbV9zb3VyY2UtPnJlcXVlc3RUb0VuZChjYWxs
aW5nT2JzZXJ2ZXIpOwogfQogCkBAIC05Niw5ICs5Niw5IEBAIHZvaWQgTW9ja0Rpc3BsYXlDYXB0
dXJlU291cmNlR1N0cmVhbWVyOjpzZXRNdXRlZChib29sIGlzTXV0ZWQpCiAgICAgbV9zb3VyY2Ut
PnNldE11dGVkKGlzTXV0ZWQpOwogfQogCi12b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdT
dHJlYW1lcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9G
cmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgTW9ja0Rpc3BsYXlDYXB0dXJlU291cmNl
R1N0cmVhbWVyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZp
ZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiB7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlLCBtZXRhZGF0YSk7CisgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLCBtZXRhZGF0YSk7CiB9
CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUdTdHJlYW1lcjo6Y2FwYWJpbGl0aWVzKCkKQEAgLTE2NSw4ICsxNjUsOCBAQCB2
b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyOjp1cGRhdGVTYW1wbGVCdWZmZXIo
KQogICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4gbWV0YWRhdGE7CiAg
ICAgbWV0YWRhdGEtPmNhcHR1cmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1Np
bmNlRXBvY2goKTsKICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1lKCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7Ci0gICAgYXV0
byB2aWRlb0ZyYW1lID0gVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVy
KFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgcHJlc2VudGF0aW9uVGltZSwgc2l6ZSgpLCBmcmFtZVJh
dGUoKSwgc2FtcGxlUm90YXRpb24oKSwgZmFsc2UsIFdURk1vdmUobWV0YWRhdGEpKTsKLSAgICBk
aXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnModmlkZW9GcmFtZS5nZXQoKSwgeyB9KTsKKyAg
ICBhdXRvIHZpZGVvRnJhbWUgPSBWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxC
dWZmZXIoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBwcmVzZW50YXRpb25UaW1lLCBzaXplKCksIGZy
YW1lUmF0ZSgpLCB2aWRlb0ZyYW1lUm90YXRpb24oKSwgZmFsc2UsIFdURk1vdmUobWV0YWRhdGEp
KTsKKyAgICBkaXNwYXRjaFZpZGVvRnJhbWVUb09ic2VydmVycyh2aWRlb0ZyYW1lLmdldCgpLCB7
IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oCmluZGV4IDMxNjE3ZTM4YTYz
NWRhOWQ0YWRkNjQ0ZWEwODY2N2FlYmZiOTY2ZmIuLjAxYzNiNTgxMjYyNzI2MmMwZmUzM2M3Njhl
ZmNjN2FmOTM5NDE2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lci5oCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBjYW5SZXNpemVWaWRlb0ZyYW1lcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IH07CiAKLWNsYXNzIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lciBmaW5hbCA6IHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBs
ZU9ic2VydmVyIHsKK2NsYXNzIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lciBmaW5h
bCA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlLCBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRl
b0ZyYW1lT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJv
ciBjcmVhdGUoY29uc3QgQ2FwdHVyZURldmljZSYsIFN0cmluZyYmLCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKik7CiAKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TXV0ZWQo
Ym9vbCBpc011dGVkKSBmaW5hbDsKIAogcHJvdGVjdGVkOgotICAgIC8vIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyCisgICAgdm9pZCB2aWRlb0ZyYW1l
QXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKIAog
cHJpdmF0ZToKICAgICBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSwgUmVmPE1vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyPiYm
LCBTdHJpbmcmJiwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDhhY2EwNDM5ZjQ5YmNjMDYyOTI0NWFmNmI3YTllODUyOTFmOTVmMWMuLjU3NzMyNzQ2
YzZiYTBiZTI1NDAwYWRmMTAzNGI1MGRkZTUxZGVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VHU3RyZWFt
ZXI6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU0KIHZvaWQgUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyOjpkaXNwYXRjaFNhbXBsZShHUmVmUHRyPEdzdFNh
bXBsZT4mJiBnc3RTYW1wbGUpCiB7CiAgICAgYXV0byogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRf
YnVmZmVyKGdzdFNhbXBsZS5nZXQoKSk7Ci0gICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoVmlkZW9G
cmFtZUdTdHJlYW1lcjo6Y3JlYXRlV3JhcHBlZFNhbXBsZShnc3RTYW1wbGUsIGZyb21Hc3RDbG9j
a1RpbWUoR1NUX0JVRkZFUl9QVFMoYnVmZmVyKSkpLCB7IH0pOworICAgIHZpZGVvRnJhbWVBdmFp
bGFibGUoVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlV3JhcHBlZFNhbXBsZShnc3RTYW1wbGUs
IGZyb21Hc3RDbG9ja1RpbWUoR1NUX0JVRkZFUl9QVFMoYnVmZmVyKSkpLCB7IH0pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCmlu
ZGV4IDM1Yjk3MGQ2MDhlMzhlMzU1NjdjOTMzMzU5NzZmZThiYzVmYTVmMTMuLjUzYmU1ZGRkMDE4
MzZmZDliYzNjOWVkNGI1ODIxMGZhMTQ0NmFkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJlU291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9SZXBsYXlLaXRDYXB0dXJl
U291cmNlLm1tCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBSZXBsYXlLaXRDYXB0dXJlU291cmNl
OjpzdGFydCgpCiAgICAgfSk7CiAKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpZGVudGlmaWVyXShO
U0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJdCBzaG91bGQg
YmUgc2FmZSB0byBjYWxsIGB2aWRlb1NhbXBsZUF2YWlsYWJsZWAgZnJvbSBhbnkgdGhyZWFkLiBU
ZXN0IHRoaXMgYW5kIGdldCByaWQgb2YgdGhpcyBtYWluIHRocmVhZCBob3AuCisgICAgICAgIC8v
IEZJWE1FOiBJdCBzaG91bGQgYmUgc2FmZSB0byBjYWxsIGB2aWRlb0ZyYW1lQXZhaWxhYmxlYCBm
cm9tIGFueSB0aHJlYWQuIFRlc3QgdGhpcyBhbmQgZ2V0IHJpZCBvZiB0aGlzIG1haW4gdGhyZWFk
IGhvcC4KICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcywg
ZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBpZGVudGlmaWVyXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZXJyb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCmluZGV4IGVmODcwMDIwYzli
OTYyNTU3NzI5ZGY3YzFlNGM1ODZlNWZhMzdmNzguLmEyZjEwYzQ0ZjhkYWQ2OThhNWI1ZmQ5ZTY5
N2UxYzM0MzBkMzZiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJUQy5j
cHAKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxWaWRl
b0ZyYW1lTGliV2ViUlRDPiBWaWRlb0ZyYW1lTGliV2ViUlRDOjpjcmVhdGUoTWVkaWFUaW1lIHBy
ZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENv
bnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25DYWxsYmFjaykKK1JlZjxWaWRlb0ZyYW1lTGli
V2ViUlRDPiBWaWRlb0ZyYW1lTGliV2ViUlRDOjpjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlv
blRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24sIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBDb252ZXJzaW9uQ2FsbGJh
Y2smJiBjb252ZXJzaW9uQ2FsbGJhY2spCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlk
ZW9GcmFtZUxpYldlYlJUQyhwcmVzZW50YXRpb25UaW1lLCBpc01pcnJvcmVkLCByb3RhdGlvbiwg
V1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKGNvbnZlcnNpb25DYWxsYmFjaykpKTsKIH0KIAotVmlk
ZW9GcmFtZUxpYldlYlJUQzo6VmlkZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRpbWUgcHJlc2VudGF0
aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lv
bkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNrKQorVmlkZW9GcmFtZUxpYldlYlJUQzo6Vmlk
ZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01pcnJv
cmVkLCBSb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25DYWxs
YmFjaykKICAgICA6IFZpZGVvRnJhbWUocHJlc2VudGF0aW9uVGltZSwgaXNNaXJyb3JlZCwgcm90
YXRpb24pCiAgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX3NpemUobV9i
dWZmZXItPndpZHRoKCksICBtX2J1ZmZlci0+aGVpZ2h0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxpYldlYlJU
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVv
RnJhbWVMaWJXZWJSVEMuaAppbmRleCAzYTY2MzkwN2E0NmI4Zjc5M2Q3NTA4OGQ4OGJjNDk2NTlj
MzYyZTQ0Li40YzllNWE2Y2M1MjNmZjA4N2YxZjA2MGIwYWZmNTE0ZTUzYWFjNTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9G
cmFtZUxpYldlYlJUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmgKQEAgLTQyLDE2ICs0MiwxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWaWRlb0ZyYW1lTGliV2ViUlRDIGZpbmFsIDogcHVibGlj
IFZpZGVvRnJhbWUgewogcHVibGljOgogICAgIHVzaW5nIENvbnZlcnNpb25DYWxsYmFjayA9IEZ1
bmN0aW9uPFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPih3ZWJydGM6OlZpZGVvRnJhbWVCdWZm
ZXImKT47Ci0gICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lTGliV2ViUlRDPiBjcmVhdGUoTWVkaWFU
aW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKKyAgICBz
dGF0aWMgUmVmPFZpZGVvRnJhbWVMaWJXZWJSVEM+IGNyZWF0ZShNZWRpYVRpbWUsIGJvb2wgaXNN
aXJyb3JlZCwgUm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVC
dWZmZXI+JiYsIENvbnZlcnNpb25DYWxsYmFjayYmKTsKIAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9GcmFtZUxpYldlYlJUQyhNZWRpYVRpbWUsIGJvb2wgaXNN
aXJyb3JlZCwgVmlkZW9Sb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9G
cmFtZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOworICAgIFZpZGVvRnJhbWVMaWJX
ZWJSVEMoTWVkaWFUaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJik7
CiAKICAgICAvLyBWaWRlb0ZyYW1lCiAgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB1aW50MzJfdCB2aWRlb1BpeGVsRm9y
bWF0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92aWRlb1BpeGVsRm9ybWF0OyB9CisgICAgdWlu
dDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvUGl4ZWxGb3Jt
YXQ7IH0KICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7CiAK
ICAgICBjb25zdCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiBt
X2J1ZmZlcjsKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKIAogU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lTGliV2ViUlRDKQogICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKSB7IHJldHVybiB2
aWRlb0ZyYW1lLmlzTGliV2ViUlRDKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBpczxXZWJDb3JlOjpW
aWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYgaXM8V2ViQ29yZTo6VmlkZW9GcmFtZUxpYldlYlJU
Qz4oZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpKTsgfQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIFVT
RShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldl
YlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
Z3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKaW5kZXgg
N2Q5NTBmNjc4MDA2NWIyZTllNTc2ZDQ2YzU1NmExM2E3NTNjNTBlOS4uY2YwMmU5YzM2MTY2MWEx
OGJkZmIyOWUxMGU3OGQ0MmI4ZGFjNDk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGli
V2ViUlRDLmNwcApAQCAtNjEsMTEgKzYxLDExIEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlTGliV2ViUlRDOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhCiAg
ICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gZnJvbUdzdENsb2NrVGltZShmcmFtZS50aW1lc3Rh
bXBfdXMoKSk7CiAgICAgaWYgKGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLT50eXBlKCkgPT0g
d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyOjpUeXBlOjprTmF0aXZlKSB7CiAgICAgICAgIGF1dG8q
IGZyYW1lYnVmZmVyID0gc3RhdGljX2Nhc3Q8R1N0cmVhbWVyVmlkZW9GcmFtZUxpYldlYlJUQyo+
KGZyYW1lLnZpZGVvX2ZyYW1lX2J1ZmZlcigpLmdldCgpKTsKLSAgICAgICAgdmlkZW9TYW1wbGVB
dmFpbGFibGUoVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlV3JhcHBlZFNhbXBsZShmcmFtZWJ1
ZmZlci0+Z2V0U2FtcGxlKCksIHByZXNlbnRhdGlvblRpbWUsIHN0YXRpY19jYXN0PE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSksIHsgfSk7CisgICAgICAgIHZp
ZGVvRnJhbWVlQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZVdyYXBwZWRTYW1w
bGUoZnJhbWVidWZmZXItPmdldFNhbXBsZSgpLCBwcmVzZW50YXRpb25UaW1lLCBzdGF0aWNfY2Fz
dDxWaWRlb0ZyYW1lOjpSb3RhdGlvbj4oZnJhbWUucm90YXRpb24oKSkpLCB7IH0pOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGF1dG8gZ3N0U2FtcGxlID0gY29udmVydExpYldlYlJUQ1ZpZGVvRnJh
bWVUb0dTdHJlYW1lclNhbXBsZShmcmFtZSk7CiAgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBzdGQ6
Om1ha2Vfb3B0aW9uYWwobWV0YWRhdGFGcm9tVmlkZW9GcmFtZShmcmFtZSkpOwotICAgICAgICB2
aWRlb1NhbXBsZUF2YWlsYWJsZShWaWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGUoV1RGTW92ZShn
c3RTYW1wbGUpLCB7IH0sIHByZXNlbnRhdGlvblRpbWUsIHN0YXRpY19jYXN0PE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSwgZmFsc2UsIFdURk1vdmUobWV0YWRh
dGEpKSwgeyB9KTsKKyAgICAgICAgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lR1N0cmVh
bWVyOjpjcmVhdGUoV1RGTW92ZShnc3RTYW1wbGUpLCB7IH0sIHByZXNlbnRhdGlvblRpbWUsIHN0
YXRpY19jYXN0PFZpZGVvRnJhbWU6OlJvdGF0aW9uPihmcmFtZS5yb3RhdGlvbigpKSwgZmFsc2Us
IFdURk1vdmUobWV0YWRhdGEpKSwgeyB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlTGliV2ViUlRDLmNwcAppbmRleCBjNmRjYWQ3NTI1ZWRiZTY4ZDExMGFlMDIxMjU3MWNi
MzZiNGY4NmZiLi4wZDE1NzMwMDcwNTEyNjFmZjc0NTM5Mzg1YmJmNzgzODM2MWE5MzFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0
cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCkBAIC01MCwxOSArNTAsMTkgQEAg
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDOjpSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEMoUmVmPE0KIHsKIH0KIAotdm9pZCBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VMaWJXZWJSVEM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1w
bGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUxpYldlYlJUQzo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1l
LCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewotICAgIHN3aXRjaCAoc2FtcGxlLnZpZGVvUm90
YXRpb24oKSkgewotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU6Cisg
ICAgc3dpdGNoICh2aWRlb0ZyYW1lLnJvdGF0aW9uKCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lOgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1Zp
ZGVvUm90YXRpb25fMDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjoKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpV
cHNpZGVEb3duOgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90
YXRpb25fMTgwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpSaWdodDoKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDoKICAg
ICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0Ogor
ICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ6CiAgICAgICAgIG1fY3VycmVudFJv
dGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oCmluZGV4IDdiMWRlZGMxODhlMzM1
YTVhOGQwNjJmZTJmMDNhMWRhZjE1MzRjOWUuLjcwMjQ4MTRhYWFmNmI3YmYxZmI0ZmYxOWJiYTgx
ZmYzM2ZkNmI1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2Vi
UlRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuaApAQCAtNDEs
OCArNDEsOCBAQCBwcml2YXRlOgogCiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4gY3JlYXRlQmxhY2tGcmFtZShzaXplX3QsIHNpemVfdCkgZmluYWw7CiAK
LSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIEFQSQotICAg
IHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhKSBmaW5hbDsKKyAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2Jz
ZXJ2ZXIgQVBJCisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRl
b0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggMjRlMTFhZTEzZmJiZTdjMWM4NmZmYTZh
OGY3MGIyNGRmNjFmZTZhMS4uNTgwY2NiYmY1NTQ0MTEyYzM2YjNmMTM4NmQzNWY5ZmZiZWFlOTVm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0
ZToKICAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE7IH0KICAgICBib29s
IGludGVycnVwdGVkKCkgY29uc3QgZmluYWw7CiAKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbiBzYW1wbGVSb3RhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2FtcGxlUm90YXRp
b247IH0KKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiB2aWRlb0ZyYW1lUm90YXRpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvRnJhbWVSb3RhdGlvbjsgfQogICAgIHZvaWQgc2V0RnJh
bWVSYXRlV2l0aFByZXNldChkb3VibGUsIFJlZlB0cjxWaWRlb1ByZXNldD4pIGZpbmFsOwogICAg
IGJvb2wgcHJlZmVyc1ByZXNldChWaWRlb1ByZXNldCYpIGZpbmFsOwogICAgIHZvaWQgZ2VuZXJh
dGVQcmVzZXRzKCkgZmluYWw7CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNldFNlc3Npb25TaXplQW5kRnJhbWVSYXRlKCk7CiAgICAgYm9vbCBzZXRQcmVzZXQoTlNTdHJp
bmcqKTsKLSAgICB2b2lkIGNvbXB1dGVTYW1wbGVSb3RhdGlvbigpOworICAgIHZvaWQgY29tcHV0
ZVZpZGVvRnJhbWVSb3RhdGlvbigpOwogICAgIEFWRnJhbWVSYXRlUmFuZ2UqIGZyYW1lRHVyYXRp
b25Gb3JGcmFtZVJhdGUoZG91YmxlKTsKIAogICAgIC8vIE9yaWVudGF0aW9uTm90aWZpZXI6Ok9i
c2VydmVyIEFQSQpAQCAtMTE4LDEzICsxMTgsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZVZlcmlmeUNhcHR1cmluZ1RpbWVyKCk7CiAgICAgdm9pZCB2ZXJpZnlJc0NhcHR1cmluZygpOwog
Ci0gICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8VmlkZW9GcmFt
ZT4gbV9idWZmZXI7CiAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dD4gbV92
aWRlb091dHB1dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4g
bV9pbWFnZVRyYW5zZmVyU2Vzc2lvbjsKIAogICAgIGludCBtX3NlbnNvck9yaWVudGF0aW9uIHsg
MCB9OwogICAgIGludCBtX2RldmljZU9yaWVudGF0aW9uIHsgMCB9OwotICAgIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIG1fc2FtcGxlUm90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6Tm9uZSB9OworICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIG1fdmlkZW9GcmFtZVJvdGF0
aW9uIHsgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUgfTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzPiBtX2N1cnJlbnRTZXR0aW5nczsKICAgICBzdGQ6
Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmluZGV4IDM3OGM5YWY5N2Q3NTI1Y2RmYzI4
NTVmZTE4NDBhOTY4NjFhZGMxN2UuLjJiYzYyZmU4NTQ1N2M1MzYzYjRiMDU4YmZjY2NhZDcxMzMw
NjkyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KQEAgLTI1MSw3ICsyNTEsNyBA
QCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXR0aW5ncygpCiAgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKGZyYW1lUmF0ZSgpKTsKIAog
ICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICBpZiAobV9zYW1wbGVSb3RhdGlvbiA9
PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCB8fCBtX3NhbXBsZVJvdGF0aW9uID09
IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodCkKKyAgICBpZiAobV92aWRlb0ZyYW1l
Um90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQgfHwgbV92aWRlb0ZyYW1lUm90
YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0KQogICAgICAgICBzaXplID0gc2l6
ZS50cmFuc3Bvc2VkU2l6ZSgpOwogICAgIAogICAgIHNldHRpbmdzLnNldFdpZHRoKHNpemUud2lk
dGgoKSk7CkBAIC00OTYsNyArNDk2LDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
dXBDYXB0dXJlU2Vzc2lvbigpCiAgICAgc2V0U2Vzc2lvblNpemVBbmRGcmFtZVJhdGUoKTsKIAog
ICAgIG1fc2Vuc29yT3JpZW50YXRpb24gPSBzZW5zb3JPcmllbnRhdGlvbkZyb21WaWRlb091dHB1
dChtX3ZpZGVvT3V0cHV0LmdldCgpKTsKLSAgICBjb21wdXRlU2FtcGxlUm90YXRpb24oKTsKKyAg
ICBjb21wdXRlVmlkZW9GcmFtZVJvdGF0aW9uKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTUyMSwzOCArNTIxLDM4IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6Om9yaWVudGF0aW9u
Q2hhbmdlZChpbnQgb3JpZW50YXRpb24pCiB7CiAgICAgQVNTRVJUKG9yaWVudGF0aW9uID09IDAg
fHwgb3JpZW50YXRpb24gPT0gOTAgfHwgb3JpZW50YXRpb24gPT0gLTkwIHx8IG9yaWVudGF0aW9u
ID09IDE4MCk7CiAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOwotICAgIGNv
bXB1dGVTYW1wbGVSb3RhdGlvbigpOwotICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExP
R0lERU5USUZJRVIsICJyb3RhdGlvbiA9ICIsIG1fc2FtcGxlUm90YXRpb24sICIsIG9yaWVudGF0
aW9uID0gIiwgbV9kZXZpY2VPcmllbnRhdGlvbik7CisgICAgY29tcHV0ZVZpZGVvRnJhbWVSb3Rh
dGlvbigpOworICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJy
b3RhdGlvbiA9ICIsIG1fdmlkZW9GcmFtZVJvdGF0aW9uLCAiLCBvcmllbnRhdGlvbiA9ICIsIG1f
ZGV2aWNlT3JpZW50YXRpb24pOwogfQogCi12b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjb21w
dXRlU2FtcGxlUm90YXRpb24oKQordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y29tcHV0ZVZp
ZGVvRnJhbWVSb3RhdGlvbigpCiB7CiAgICAgYm9vbCBmcm9udENhbWVyYSA9IFtkZXZpY2UoKSBw
b3NpdGlvbl0gPT0gQVZDYXB0dXJlRGV2aWNlUG9zaXRpb25Gcm9udDsKLSAgICBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiBzYW1wbGVSb3RhdGlvbjsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlv
biB2aWRlb0ZyYW1lUm90YXRpb247CiAgICAgc3dpdGNoIChtX3NlbnNvck9yaWVudGF0aW9uIC0g
bV9kZXZpY2VPcmllbnRhdGlvbikgewogICAgIGNhc2UgMDoKLSAgICAgICAgc2FtcGxlUm90YXRp
b24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAgICAgdmlkZW9GcmFt
ZVJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgMTgwOgogICAgIGNhc2UgLTE4MDoKLSAgICAgICAgc2FtcGxlUm90YXRpb24gPSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsKKyAgICAgICAgdmlkZW9GcmFt
ZVJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd247CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgOTA6CiAgICAgY2FzZSAtMjcwOgotICAgICAgICBzYW1wbGVSb3RhdGlv
biA9IGZyb250Q2FtZXJhID8gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQgOiBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAgICAgIHZpZGVvRnJhbWVSb3RhdGlv
biA9IGZyb250Q2FtZXJhID8gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQgOiBWaWRlb0ZyYW1l
OjpSb3RhdGlvbjo6UmlnaHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgLTkwOgogICAgIGNh
c2UgMjcwOgotICAgICAgICBzYW1wbGVSb3RhdGlvbiA9IGZyb250Q2FtZXJhID8gTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlJpZ2h0IDogTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Okxl
ZnQ7CisgICAgICAgIHZpZGVvRnJhbWVSb3RhdGlvbiA9IGZyb250Q2FtZXJhID8gVmlkZW9GcmFt
ZTo6Um90YXRpb246OlJpZ2h0IDogVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICBzYW1wbGVSb3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOwor
ICAgICAgICB2aWRlb0ZyYW1lUm90YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsK
ICAgICB9Ci0gICAgaWYgKHNhbXBsZVJvdGF0aW9uID09IG1fc2FtcGxlUm90YXRpb24pCisgICAg
aWYgKHZpZGVvRnJhbWVSb3RhdGlvbiA9PSBtX3ZpZGVvRnJhbWVSb3RhdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9zYW1wbGVSb3RhdGlvbiA9IHNhbXBsZVJvdGF0aW9uOworICAgIG1f
dmlkZW9GcmFtZVJvdGF0aW9uID0gdmlkZW9GcmFtZVJvdGF0aW9uOwogICAgIG5vdGlmeVNldHRp
bmdzRGlkQ2hhbmdlT2JzZXJ2ZXJzKHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
OjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSk7CiB9
CiAKQEAgLTU2MSwxMiArNTYxLDEyIEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcHR1
cmVPdXRwdXREaWRPdXRwdXRTYW1wbGVCdWZmZXJGcm9tQ29ubmVjdGlvbihBVkNhCiAgICAgaWYg
KCsrbV9mcmFtZXNDb3VudCA8PSBmcmFtZXNUb0Ryb3BXaGVuU3RhcnRpbmcpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHNhbXBs
ZUJ1ZmZlciwgW2NhcHR1cmVDb25uZWN0aW9uIGlzVmlkZW9NaXJyb3JlZF0sIG1fc2FtcGxlUm90
YXRpb24pOworICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHNhbXBs
ZUJ1ZmZlciwgW2NhcHR1cmVDb25uZWN0aW9uIGlzVmlkZW9NaXJyb3JlZF0sIG1fdmlkZW9GcmFt
ZVJvdGF0aW9uKTsKICAgICBtX2J1ZmZlciA9ICZ2aWRlb0ZyYW1lLmdldCgpOwogICAgIHNldElu
dHJpbnNpY1NpemUoZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUtPnByZXNlbnRhdGlvblNpemUo
KSkpOwogICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGE7CiAgICAgbWV0YWRhdGEu
Y2FwdHVyZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOwot
ICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhXVEZNb3ZlKHZpZGVvRnJhbWUpLCBt
ZXRhZGF0YSk7CisgICAgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9PYnNlcnZlcnMoV1RGTW92ZSh2aWRl
b0ZyYW1lKSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0
dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4IDAzNTMyNThhYjYxZjQyZGE0MjNjMTY1NzU0
MWMwODcwMzUzYmRkZDQuLmMwNTVkM2M2MzNkZDBlZjA2MTRhZWYzY2JjZDA3OTE5YzQ3OTFkMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTkzLDE2ICs5
MywxNiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZm
ZXIoKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZSgp
LT5uYXRpdmVJbWFnZSgpKQogICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKIAotICAgIGF1dG8gc2FtcGxlVGltZSA9IE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygpKTsKLSAgICBhdXRv
IHNhbXBsZUJ1ZmZlciA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2FtcGxl
KHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRpb24o
KSk7Ci0gICAgaWYgKCFzYW1wbGVCdWZmZXIpCisgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0g
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGltZSgpICsgMTAwX21zKS5zZWNv
bmRzKCkpOworICAgIGF1dG8gdmlkZW9GcmFtZSA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNy
ZWF0ZVZpZGVvRnJhbWUocGxhdGZvcm1JbWFnZS5nZXQoKSwgcHJlc2VudGF0aW9uVGltZSwgc2l6
ZSgpLCB2aWRlb0ZyYW1lUm90YXRpb24oKSk7CisgICAgaWYgKCF2aWRlb0ZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdXRvIGNhcHR1cmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCku
c2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzYW1wbGVCdWZmZXIgPSBXVEZNb3ZlKHNhbXBs
ZUJ1ZmZlciksIGNhcHR1cmVUaW1lXSgpIG11dGFibGUgeworICAgIG1fd29ya1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHZpZGVvRnJhbWUgPSBX
VEZNb3ZlKHZpZGVvRnJhbWUpLCBjYXB0dXJlVGltZV0oKSBtdXRhYmxlIHsKICAgICAgICAgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YTsKICAgICAgICAgbWV0YWRhdGEuY2FwdHVyZVRp
bWUgPSBjYXB0dXJlVGltZTsKLSAgICAgICAgZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJz
KCpzYW1wbGVCdWZmZXIsIG1ldGFkYXRhKTsKKyAgICAgICAgZGlzcGF0Y2hWaWRlb0ZyYW1lVG9P
YnNlcnZlcnMoKnZpZGVvRnJhbWUsIG1ldGFkYXRhKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRleCA5MmMyZmVjNjgy
ZGQ2YWU3NjRmYmIyOTA0Y2FjOGZlZmE0OTY3MzRmLi4xZTkxMzNlOWY1Yzk0ZjQyMmU0ODIyNmM1
ZmIzYmNmMjY1YmU5ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EuaApAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgogICAgIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJh
Y2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gcGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKTsK
ICAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiBwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0LCB3ZWJydGM6OkJ1ZmZlclR5cGUpOwotICAgIFJlZlB0cjxWaWRlb0ZyYW1l
PiB0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24pOwotICAgIFJlZjxWaWRlb0ZyYW1lPiBjcmVhdGVWaWRlb1NhbXBsZUZyb21D
VlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
LCBpbnQ2NF90KTsKKyAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdG9WaWRlb0ZyYW1lKGNvbnN0IHdl
YnJ0Yzo6VmlkZW9GcmFtZSYsIFZpZGVvRnJhbWU6OlJvdGF0aW9uKTsKKyAgICBSZWY8VmlkZW9G
cmFtZT4gY3JlYXRlVmlkZW9TYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVm
LCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiwgaW50NjRfdCk7CiAKICAgICAvLyBydGM6OlZpZGVvU2lu
a0ludGVyZmFjZQogICAgIHZvaWQgT25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bQppbmRleCBlZTI4MjNjMWVhNzM4NWQ5YTE4NDAxOTZjN2RjYmI2YjMxMDQxYjA1Li5lMDJmODMw
MzhhNWMxYWJhZTI4MTMwZmFkNDk0MTU0NmQzYmZjMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC05MSwxMiArOTEsMTIgQEAgQ1ZQ
aXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVs
QnVmZmVyUG9vbChzaXplX3Qgd2kKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlclBvb2wuZ2V0KCk7
CiB9CiAKLVJlZjxWaWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6
Y3JlYXRlVmlkZW9TYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIHBpeGVs
QnVmZmVyLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgaW50NjRfdCB0aW1l
U3RhbXApCitSZWY8VmlkZW9GcmFtZT4gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6
OmNyZWF0ZVZpZGVvU2FtcGxlRnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlciwgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24sIGludDY0X3QgdGltZVN0YW1w
KQogewogICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShNZWRpYVRpbWUodGltZVN0YW1w
LCAxMDAwMDAwKSwgZmFsc2UsIHJvdGF0aW9uLCBwaXhlbEJ1ZmZlcik7CiB9CiAKLVJlZlB0cjxW
aWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6dG9WaWRlb0ZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHJvdGF0aW9uKQorUmVmUHRyPFZpZGVvRnJhbWU+IFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hOjp0b1ZpZGVvRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSwg
VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24pCiB7CiAgICAgaWYgKG11dGVkKCkpIHsKICAg
ICAgICAgaWYgKCFtX2JsYWNrRnJhbWUgfHwgbV9ibGFja0ZyYW1lV2lkdGggIT0gZnJhbWUud2lk
dGgoKSB8fCBtX2JsYWNrRnJhbWVIZWlnaHQgIT0gZnJhbWUuaGVpZ2h0KCkpIHsKQEAgLTE0NCwy
MCArMTQ0LDIwIEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJh
bWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiB3ZWJydGNWCiAgICAgdW5zaWduZWQgd2lkdGgg
PSB3ZWJydGNWaWRlb0ZyYW1lLndpZHRoKCk7CiAgICAgdW5zaWduZWQgaGVpZ2h0ID0gd2VicnRj
VmlkZW9GcmFtZS5oZWlnaHQoKTsKIAotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJv
dGF0aW9uOworICAgIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uOwogICAgIHN3aXRjaCAo
d2VicnRjVmlkZW9GcmFtZS5yb3RhdGlvbigpKSB7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1Jv
dGF0aW9uXzA6Ci0gICAgICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
Ok5vbmU7CisgICAgICAgIHJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA6Ci0gICAg
ICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247Cisg
ICAgICAgIHJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd247CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl85MDoKLSAgICAgICAg
cm90YXRpb24gPSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7CisgICAgICAgIHJv
dGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OwogICAgICAgICBzdGQ6OnN3YXAo
d2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9S
b3RhdGlvbl8yNzA6Ci0gICAgICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246OkxlZnQ7CisgICAgICAgIHJvdGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ7
CiAgICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29j
b2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiB3ZWJydGNWCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHNldEludHJpbnNpY1NpemUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0g
ICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoKnZpZGVvRnJhbWUsIG1ldGFkYXRhRnJvbVZpZGVvRnJh
bWUod2VicnRjVmlkZW9GcmFtZSkpOworICAgIHZpZGVvRnJhbWVBdmFpbGFibGUoKnZpZGVvRnJh
bWUsIG1ldGFkYXRhRnJvbVZpZGVvRnJhbWUod2VicnRjVmlkZW9GcmFtZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZUNvY29hLmNwcAppbmRleCAzYTNmY2JmOTZlZjgyMDFmOTBiY2U4N2U1ZTJkZWJjMWRk
MWNkNjA2Li5iY2VmNmExNTA2MWQwMmE2MjU4NjgzMzUyNWQyZjhlMmE5YmI0NzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKQEAgLTYz
LDQ2ICs2Myw0NiBAQCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EoUmVmPE1lZGlhU3RyZQogewogfQogCi12b2lkIFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYTo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRl
b0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIGlmICghKCsrbV9udW1iZXJPZkZyYW1lcyAlIDYwKSkKICAgICAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAiZnJhbWUgIiwgbV9udW1iZXJPZkZyYW1lcyk7CiAjZW5kaWYK
IAotICAgIHN3aXRjaCAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSkgewotICAgIGNhc2UgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU6CisgICAgc3dpdGNoICh2aWRlb0ZyYW1lLnJvdGF0
aW9uKCkpIHsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgogICAgICAgICBt
X2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjoKKyAg
ICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOgogICAgICAgICBtX2N1cnJl
bnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDoKKyAgICBjYXNlIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDoKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3
ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzkwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OgorICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRp
b246OkxlZnQ6CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3Rh
dGlvbl8yNzA7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkQXBwbHlS
b3RhdGlvbiA9IG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBtX2N1cnJlbnRSb3RhdGlvbiAhPSB3
ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA7Ci0gICAgaWYgKCFzaG91bGRBcHBseVJvdGF0aW9uICYm
IGlzPFZpZGVvRnJhbWU+KHNhbXBsZSkpIHsKLSAgICAgICAgaWYgKGRvd25jYXN0PFZpZGVvRnJh
bWU+KHNhbXBsZSkuaXNSZW1vdGVQcm94eSgpKSB7Ci0gICAgICAgICAgICBSZWYgdmlkZW9GcmFt
ZSB7IGRvd25jYXN0PFZpZGVvRnJhbWU+KHNhbXBsZSkgfTsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7Ci0gICAgICAgICAgICBzZW5kRnJhbWUod2Vi
cnRjOjp0b1dlYlJUQ1ZpZGVvRnJhbWVCdWZmZXIoJnZpZGVvRnJhbWUubGVha1JlZigpLAorICAg
IGlmICghc2hvdWxkQXBwbHlSb3RhdGlvbikgeworICAgICAgICBpZiAodmlkZW9GcmFtZS5pc1Jl
bW90ZVByb3h5KCkpIHsKKyAgICAgICAgICAgIFJlZiByZW1vdGVWaWRlb0ZyYW1lIHsgdmlkZW9G
cmFtZSB9OworICAgICAgICAgICAgYXV0byBzaXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25T
aXplKCk7CisgICAgICAgICAgICBzZW5kRnJhbWUod2VicnRjOjp0b1dlYlJUQ1ZpZGVvRnJhbWVC
dWZmZXIoJnJlbW90ZVZpZGVvRnJhbWUubGVha1JlZigpLAogICAgICAgICAgICAgICAgIFtdKGF1
dG8qIHBvaW50ZXIpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFZpZGVvRnJhbWUqPihwb2ludGVyKS0+
cGl4ZWxCdWZmZXIoKTsgfSwKICAgICAgICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHN0
YXRpY19jYXN0PFZpZGVvRnJhbWUqPihwb2ludGVyKS0+ZGVyZWYoKTsgfSwKICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc2l6
ZS5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBp
ZiAoZG93bmNhc3Q8VmlkZW9GcmFtZT4oc2FtcGxlKS5pc0xpYldlYlJUQygpKSB7Ci0gICAgICAg
ICAgICBzZW5kRnJhbWUoZG93bmNhc3Q8VmlkZW9GcmFtZUxpYldlYlJUQz4oc2FtcGxlKS5idWZm
ZXIoKSk7CisgICAgICAgIGlmICh2aWRlb0ZyYW1lLmlzTGliV2ViUlRDKCkpIHsKKyAgICAgICAg
ICAgIHNlbmRGcmFtZShkb3duY2FzdDxWaWRlb0ZyYW1lTGliV2ViUlRDPih2aWRlb0ZyYW1lKS5i
dWZmZXIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBh
dXRvIHBpeGVsQnVmZmVyID0gc2FtcGxlLnBpeGVsQnVmZmVyKCk7CisgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IHZpZGVvRnJhbWUucGl4ZWxCdWZmZXIoKTsKICAgICBhdXRvIHBpeGVsRm9ybWF0VHlw
ZSA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwogCiAgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnRlZEJ1ZmZlciA9IHBpeGVsQnVmZmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaAppbmRl
eCBmZTdkZGQxMDg2NmM3Nzk1OWNmMDI3MzJjNzNhMWRlZTJiZTY0MWJkLi5iZmNiYWZkMmFjNDQ0
YjI3NWQxNmQ5ZGQ2MWU4YjVmM2U5NzFmYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaApAQCAtNDQsOCArNDQsOCBAQCBwcml2YXRlOgogCiAg
ICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gY3JlYXRlQmxh
Y2tGcmFtZShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIGZpbmFsOwogCi0gICAgLy8gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIEFQSQor
ICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVN
ZXRhZGF0YSkgZmluYWw7CiAKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVy
dFRvWVVWKENWUGl4ZWxCdWZmZXJSZWYpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiByb3RhdGVQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCB3ZWJydGM6OlZpZGVvUm90YXRp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1t
CmluZGV4IDM5Yjk5OGQ0ZjU0NTliOTkyNDIwNTU2M2I5NmY3ZGQyYjI1NGQ4MWQuLmQ0NzhlMTM5
NzVlNmQ3ZDdlNzVkMmMxNGI0YTczMzAzOGMxZjQ3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBv
cnQgIkFmZmluZVRyYW5zZm9ybS5oIgogI2ltcG9ydCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5o
IgogI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKICNpbXBvcnQg
IlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgIlJlYWx0aW1lVmlkZW9VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAppbmRleCAzY2Y3NDYwYzgwZTNiZTFkNWJhM2YwY2VkN2MxOWIyNWRmMjlhYmYyLi40ZmVjNGQ5
MzliYjI5MmQ2NDY0OWY5NWRlMmQ3N2U5NzI4NjgwNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAt
MTgwLDcgKzE4MCw3IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzKCkKICAgICBzZXR0aW5ncy5zZXRGcmFtZVJhdGUo
ZnJhbWVSYXRlKCkpOwogICAgIGF1dG8gc2l6ZSA9IHRoaXMtPnNpemUoKTsKICAgICBpZiAobW9j
a0NhbWVyYSgpKSB7Ci0gICAgICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9uID09IE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IHx8IG1fZGV2aWNlT3JpZW50YXRpb24gPT0gTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgICAgICBpZiAobV9kZXZpY2VPcmllbnRh
dGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdCB8fCBtX2RldmljZU9yaWVudGF0aW9u
ID09IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodCkKICAgICAgICAgICAgIHNpemUgPSBzaXpl
LnRyYW5zcG9zZWRTaXplKCk7CiAgICAgfQogICAgIHNldHRpbmdzLnNldFdpZHRoKHNpemUud2lk
dGgoKSk7CkBAIC00OTYsMTYgKzQ5NiwxNiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpvcmllbnRhdGlvbkNoYW5nZWQoaW50IG9yaWVudGF0aW9uKQogICAgIGF1dG8gZGV2aWNlT3Jp
ZW50YXRpb24gPSBtX2RldmljZU9yaWVudGF0aW9uOwogICAgIHN3aXRjaCAob3JpZW50YXRpb24p
IHsKICAgICBjYXNlIDA6Ci0gICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDkwOgot
ICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
OlJpZ2h0OworICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRp
b246OlJpZ2h0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIC05MDoKLSAgICAgICAgbV9kZXZp
Y2VPcmllbnRhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OworICAgICAg
ICBtX2RldmljZU9yaWVudGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgMTgwOgotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0g
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247CisgICAgICAgIG1fZGV2aWNl
T3JpZW50YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmgKaW5kZXggZmM1ZmM3YWExY2I3NmZhNmQ5NzM5MDU4NjViZmFmZWNlZGUzNmJjNy4uZDhi
YWM1NjFkYTRiMTNmYzM3MjFkYzA4NDQ1YzU0MmQxNDlkMDVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAt
NjIsNyArNjIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBTZWNvbmRzIGVsYXBzZWRUaW1lKCk7CiAg
ICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnPikgb3ZlcnJpZGU7Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24g
c2FtcGxlUm90YXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RldmljZU9yaWVudGF0aW9u
OyB9CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gdmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbjsgfQogICAgIHZvaWQgZ2VuZXJhdGVQ
cmVzZXRzKCkgb3ZlcnJpZGU7CiAKICAgICBJbnRTaXplIGNhcHR1cmVTaXplKCkgY29uc3Q7CkBA
IC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBDb2xvciBtX2ZpbGxDb2xvciB7IENvbG9y
OjpibGFjayB9OwogICAgIE1vY2tNZWRpYURldmljZSBtX2RldmljZTsKICAgICBSZWZQdHI8Vmlk
ZW9QcmVzZXQ+IG1fcHJlc2V0OwotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fZGV2
aWNlT3JpZW50YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAg
IFZpZGVvRnJhbWU6OlJvdGF0aW9uIG1fZGV2aWNlT3JpZW50YXRpb24geyBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6Tm9uZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGU4NmFlNWZmMmJjYzVjMjczNTQyYTljZWYzNWU3
NGQ3YTBhOGY2MjMuLjU2NzBiNmJmYTY3ZTNkYjZkYjc2ODI4OTY2YjYyZmI1MTE4ZGMzYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU1MjUsNyArNTUyNSw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpzdG9wT2JzZXJ2aW5nUmVhbHRpbWVNZWRpYVNvdXJjZSgpCiAgICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzoKICAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OlNjcmVlbjoKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OldpbmRvdzoKLSAgICAgICAgbV90cmFja1NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNl
cnZlcigqdGhpcyk7CisgICAgICAgIG1fdHJhY2tTb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNl
cnZlcigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTUyLDcg
KzU1NTIsNyBAQCB2b2lkIEludGVybmFsczo6b2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFT
dHJlYW1UcmFjayYgdHJhY2spCiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpW
aWRlbzoKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlNjcmVlbjoKICAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OldpbmRvdzoKLSAgICAgICAgbV90cmFja1Nv
dXJjZS0+YWRkVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1fdHJhY2tTb3Vy
Y2UtPmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC01NTY5LDEzICs1NTY5LDEzIEBAIHZvaWQgSW50ZXJuYWxzOjptZWRpYVN0
cmVhbVRyYWNrVmlkZW9GcmFtZVJvdGF0aW9uKERPTVByb21pc2VEZWZlcnJlZDxJRExTaG9ydD4m
CiAgICAgcHJvbWlzZS5yZXNvbHZlKG1fdHJhY2tWaWRlb1JvdGF0aW9uKTsKIH0KIAotdm9pZCBJ
bnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpCit2b2lkIEludGVybmFsczo6dmlkZW9GcmFtZUF2YWlsYWJsZShW
aWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHNhbXBs
ZSA9IFJlZiB7IHNhbXBsZSB9XSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdmlkZW9GcmFtZSA9IFJlZiB7IHZpZGVvRnJhbWUgfV0g
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBt
X3RyYWNrVmlkZW9TYW1wbGVDb3VudCsrOwotICAgICAgICBtX3RyYWNrVmlkZW9Sb3RhdGlvbiA9
IHN0YXRpY19jYXN0PGludD4oc2FtcGxlLT52aWRlb1JvdGF0aW9uKCkpOworICAgICAgICBtX3Ry
YWNrVmlkZW9Sb3RhdGlvbiA9IHN0YXRpY19jYXN0PGludD4odmlkZW9GcmFtZS0+cm90YXRpb24o
KSk7CiAgICAgICAgIGlmICghbV9uZXh0VHJhY2tGcmFtZVByb21pc2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTU1ODMsNyArNTU4Myw3IEBAIHZvaWQgSW50ZXJuYWxzOjp2aWRlb1NhbXBs
ZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhCiAg
ICAgICAgIGlmICghdmlkZW9TZXR0aW5ncy53aWR0aCgpIHx8ICF2aWRlb1NldHRpbmdzLmhlaWdo
dCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gcmdiYSA9IHNhbXBsZS0+
Z2V0UkdCQUltYWdlRGF0YSgpOworICAgICAgICBhdXRvIHJnYmEgPSB2aWRlb0ZyYW1lLT5nZXRS
R0JBSW1hZ2VEYXRhKCk7CiAgICAgICAgIGlmICghcmdiYSkKICAgICAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYTkyYWZkODI1NWExZWNkNGM3OWZl
YTVlNTUzMjJmOTlkNTMwYmVmZC4uOTczNDZkOWRiMjk1YzU0ZjJkNGUwNWFkMWUyZTA4YTYyYTZj
ODEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xNjUsNyArMTY1LDcgQEAg
Y2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHJp
dmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb24KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwg
cHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCiAgICAgLCBwcml2YXRlIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIKLSAgICAsIHByaXZhdGUgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgorICAgICwgcHJpdmF0ZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIKICNlbmRpZgogICAgIHsKIHB1YmxpYzoK
QEAgLTEyOTYsNyArMTI5Niw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIEFQSQotICAgIHZvaWQgdmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBm
aW5hbDsKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
U2FtcGxlT2JzZXJ2ZXIgQVBJCiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbCB7IG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50Kys7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IDBlMTZkYmFmODA3NTUz
N2MxNDc0MzY3ZTM5OWVlZjVmMzRlODJmMjQuLmIzYTE5ODBlMzdmMjMxZmI5MTIxODJhMDA3NmYw
N2FlZTMxOGIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTU2
LDEzICs1Niw5IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNvcHlUZXh0dXJlRnJv
bVZpZGVvRnJhbWUoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAvLyBOb3RlOiBUaGlz
IGV4dHJhIGNhc3RpbmcgaXMgbmVlZGVkIHNpbmNlIFZpZGVvRnJhbWVzIGFyZSBzdGlsbCBNZWRp
YVNhbXBsZXMuCi0gICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4gdmlkZW9GcmFtZUNW
OwotICAgIGlmIChpczxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+KCp2aWRlb0ZyYW1lKSkKLSAgICAg
ICAgdmlkZW9GcmFtZUNWID0gJmRvd25jYXN0PFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4oKnZpZGVv
RnJhbWUpOwotICAgIGVsc2UgaWYgKGlzPFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQz4oKnZp
ZGVvRnJhbWUpKQotICAgICAgICB2aWRlb0ZyYW1lQ1YgPSBkb3duY2FzdDxXZWJDb3JlOjpNZWRp
YVNhbXBsZUFWRk9iakM+KCp2aWRlb0ZyYW1lKS52aWRlb0ZyYW1lKCk7Ci0gICAgZWxzZSB7CisK
KyAgICBhdXRvIHZpZGVvRnJhbWVDViA9IHZpZGVvRnJhbWUtPmFzVmlkZW9GcmFtZUNWKCk7Cisg
ICAgaWYgKCF2aWRlb0ZyYW1lQ1YpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8v
IFByb2dyYW1taW5nIGVycm9yLCBub3QgYSBJUEMgYXR0YWNrLgogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3Bw
CmluZGV4IDA4YjgwYTU4ZmVmOTVkMmFhYzcwY2VjZGU5Y2U2NzIwYTU3YTc5OTIuLjRiYWM5YjM2
ODUzM2VhMDk3MTUyM2QxMzI0NzVmZDI0NGEzMGY0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGVBVkZPYmpDLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lQ1YuaD4KICNpbmNsdWRlIDxwYWwvY2YvQ29y
ZU1lZGlhU29mdExpbmsuaD4KICNlbmRpZgpAQCAtODQsNyArODMsNyBAQCB2b2lkIFJlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwOjpjbG9zZSgpCiAgICAgLy8gVE9ETzogYWRkIGNhbiBoYXBwZW4g
YWZ0ZXIgc3RvcHBpbmcuCiB9CiAKLVJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBS
ZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6YWRkKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4m
JiBmcmFtZSkKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0Zy
YW1lT2JqZWN0SGVhcDo6YWRkKFJlZjxXZWJDb3JlOjpWaWRlb0ZyYW1lPiYmIGZyYW1lKQogewog
ICAgIGF1dG8gd3JpdGUgPSBSZW1vdGVWaWRlb0ZyYW1lV3JpdGVSZWZlcmVuY2U6OmdlbmVyYXRl
Rm9yQWRkKCk7CiAgICAgYXV0byBuZXdGcmFtZVJlZmVyZW5jZSA9IHdyaXRlLnJldGlyZWRSZWZl
cmVuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKaW5kZXggNTNlZDU2ZTBhZTBkZWVmNjE1NGM4
Y2UwNGE5YjE2Y2YxNTBlNjhiMC4uYzA4YTVhNGM3N2Y2MDUyMTY2MjdjNTBiMTBhNDExZWYxYWI5
MmMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVPYmplY3RIZWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgiCiAjaW5j
bHVkZSAiVGhyZWFkU2FmZU9iamVjdEhlYXAuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2Ft
cGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb0ZyYW1lLmg+CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICNpbmNsdWRlICJTaGFyZWRWaWRlb0ZyYW1lLmgiCkBAIC00NCw4ICs0NCw4IEBAIHB1
YmxpYzoKICAgICB+UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAoKTsKIAogICAgIHZvaWQgY2xv
c2UoKTsKLSAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgYWRkKFJlZjxXZWJD
b3JlOjpNZWRpYVNhbXBsZT4mJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiBn
ZXQoUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2UmJiByZWFkKSB7IHJldHVybiBtX2hlYXAu
cmV0aXJlKFdURk1vdmUocmVhZCksIDBfcyk7IH0KKyAgICBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXMgYWRkKFJlZjxXZWJDb3JlOjpWaWRlb0ZyYW1lPiYmKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6VmlkZW9GcmFtZT4gZ2V0KFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlJiYg
cmVhZCkgeyByZXR1cm4gbV9oZWFwLnJldGlyZShXVEZNb3ZlKHJlYWQpLCAwX3MpOyB9CiAKICAg
ICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFw
PiYmKSB7IGNsb3NlKCk7IH0KIApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBjb25zdCBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0gICAgVGhyZWFk
U2FmZU9iamVjdEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYVNhbXBsZT4+IG1faGVhcDsKKyAgICBUaHJlYWRTYWZlT2JqZWN0SGVhcDxSZW1vdGVW
aWRlb0ZyYW1lSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWU+PiBtX2hlYXA7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2hhcmVkVmlkZW9GcmFtZVdyaXRlciBtX3NoYXJl
ZFZpZGVvRnJhbWVXcml0ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5Lm1tCmluZGV4IGQ4YTI5MjI2NjE2
YjI2NDdmMTFmODQ1NjAyOWYzZGVkZWUyM2UyMTQuLjBmODJkOTQ1NWE5OTU0ZWIzMGViNmUzYWEx
ZmYxMGYzYTY3OTIyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3NQcm94eS5tbQpAQCAtOTcsNyArOTcsNyBAQCBhdXRvIExp
YldlYlJUQ0NvZGVjc1Byb3h5OjpjcmVhdGVEZWNvZGVyQ2FsbGJhY2soUlRDRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllcgogICAgIGlmICh1c2VSZW1vdGVGcmFtZXMpCiAgICAgICAgIHZpZGVv
RnJhbWVPYmplY3RIZWFwID0gbV92aWRlb0ZyYW1lT2JqZWN0SGVhcC5wdHIoKTsKICAgICByZXR1
cm4gW2lkZW50aWZpZXIsIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb24sIHJlc291cmNlT3duZXIg
PSBtX3Jlc291cmNlT3duZXIsIHZpZGVvRnJhbWVPYmplY3RIZWFwID0gV1RGTW92ZSh2aWRlb0Zy
YW1lT2JqZWN0SGVhcCldIChDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyLCB1aW50MzJfdCB0
aW1lU3RhbXBOcywgdWludDMyX3QgdGltZVN0YW1wKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byB2
aWRlb0ZyYW1lID0gV2ViQ29yZTo6VmlkZW9GcmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lKHRpbWVT
dGFtcE5zLCAxKSwgZmFsc2UsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lLCBwaXhlbEJ1ZmZlcik7CisgICAgICAgIGF1dG8gdmlkZW9GcmFtZSA9IFdlYkNvcmU6OlZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIGZhbHNlLCBXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwgcGl4ZWxCdWZmZXIpOwogICAgICAgICBp
ZiAocmVzb3VyY2VPd25lcikKICAgICAgICAgICAgIHZpZGVvRnJhbWUtPnNldE93bmVyc2hpcElk
ZW50aXR5KHJlc291cmNlT3duZXIpOwogICAgICAgICBpZiAodmlkZW9GcmFtZU9iamVjdEhlYXAp
IHsKQEAgLTIxNSwxNiArMjE1LDE2IEBAIExpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVyKiBM
aWJXZWJSVENDb2RlY3NQcm94eTo6ZmluZEVuY29kZXIoUlRDRW5jb2RlcklkZW50CiAgICAgcmV0
dXJuICZpdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1Jv
dGF0aW9uIHRvV2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiByb3RhdGlvbikKK3N0YXRpYyBpbmxpbmUgd2VicnRjOjpWaWRlb1JvdGF0aW9uIHRv
V2ViUlRDVmlkZW9Sb3RhdGlvbihXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlv
bikKIHsKICAgICBzd2l0Y2ggKHJvdGF0aW9uKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICBjYXNlIFdlYkNvcmU6OlZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lOgogICAgICAgICByZXR1cm4gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8w
OwotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURv
d246CisgICAgY2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjoK
ICAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOwotICAgIGNhc2UgV2Vi
Q29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgorICAgIGNhc2UgV2ViQ29y
ZTo6VmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OgogICAgICAgICByZXR1cm4gd2VicnRjOjpr
VmlkZW9Sb3RhdGlvbl85MDsKLSAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpMZWZ0OgorICAgIGNhc2UgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb246Okxl
ZnQ6CiAgICAgICAgIHJldHVybiB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA1MmY2MThhMzg2YzMw
ZWFmNmRiZTA4ODAxNjRmNGM5ZjMyNjk4YjExLi5iZjBiOTQyZTQ2MTM1MzRkMGE5ZmE4M2JjODg4
MjRhZmJhMTFjOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVp
bnQ2NF90IG51bWJlck8KICAgICBtX3dyaXRlci0+YXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoKm1f
YXVkaW9CdWZmZXJMaXN0LCBtX2Rlc2NyaXB0aW9uLCB0aW1lLCBudW1iZXJPZkZyYW1lcyk7CiB9
CiAKLXZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoU2hhcmVk
VmlkZW9GcmFtZSYmIHNoYXJlZFZpZGVvRnJhbWUpCit2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6
OnZpZGVvRnJhbWVBdmFpbGFibGUoU2hhcmVkVmlkZW9GcmFtZSYmIHNoYXJlZFZpZGVvRnJhbWUp
CiB7CiAgICAgaWYgKGF1dG8gZnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIucmVhZChX
VEZNb3ZlKHNoYXJlZFZpZGVvRnJhbWUpKSkKICAgICAgICAgbV93cml0ZXItPmFwcGVuZFZpZGVv
RnJhbWUoKmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmgKaW5kZXggMWNjMWJiM2JmYTAwODIwMDExYjA3NTliYjI3
MGVkYzNlNTM1NDE1Ni4uM2Y4MWVmYjQzNDU3MTVlODdlY2M1ZWEwNWEwODQ4MDg2NGMwODk1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgogICAgIHZvaWQgYXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoY29uc3QgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNB
dmFpbGFibGUoTWVkaWFUaW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcyk7Ci0gICAgdm9pZCB2
aWRlb1NhbXBsZUF2YWlsYWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYpOworICAgIHZvaWQgdmlkZW9G
cmFtZUF2YWlsYWJsZShTaGFyZWRWaWRlb0ZyYW1lJiYpOwogICAgIHZvaWQgZmV0Y2hEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYpOwog
ICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgcGF1c2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5tZXNzYWdlcy5pbgppbmRleCA5YjdkOTZmNjNkZDQyOGYyYTBkY2NmYjY1OGUyZTg5YTljNmY2
MDA3Li4xMmJjODA1MGI2NDVlM2IwODM4M2NmZGJiYTNlNmJkM2I4NDIwZmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiBtZXNzYWdlcyAtPiBSZW1v
dGVNZWRpYVJlY29yZGVyIE5vdFJlZkNvdW50ZWQgewogICAgIEF1ZGlvU2FtcGxlc1N0b3JhZ2VD
aGFuZ2VkKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RvcmFnZUhhbmRsZSwgV2Vi
Q29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCB1aW50NjRfdCBudW1i
ZXJPZkZyYW1lcykKICAgICBBdWRpb1NhbXBsZXNBdmFpbGFibGUoTWVkaWFUaW1lIHRpbWUsIHVp
bnQ2NF90IG51bWJlck9mRnJhbWVzKQotICAgIFZpZGVvU2FtcGxlQXZhaWxhYmxlKHN0cnVjdCBX
ZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUpCisgICAgVmlkZW9GcmFtZUF2YWlsYWJsZShz
dHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1lIGZyYW1lKQogICAgIEZldGNoRGF0YSgpIC0+
IChJUEM6OkRhdGFSZWZlcmVuY2UgYnVmZmVyLCBkb3VibGUgdGltZUNvZGUpCiAgICAgU3RvcFJl
Y29yZGluZygpIC0+ICgpCiAgICAgUGF1c2UoKSAtPiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuY3BwCmluZGV4IDhkMDRmMmNjNWE3ODlhN2E0ZTk1ODc0MGM3YjY4YjUzOTNlNWJh
NGIuLjFkN2FkYWI1NjkzOTMyZWQ4ZDNkMzk4YTQwNGRkOTNlNjQwMjE4ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBSZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRy
YW5zZm9ybSB0cmEKICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlUm9vdExh
eWVyQWZmaW5lVHJhbnNmb3JtKHRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK3ZvaWQgUmVtb3Rl
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3Qg
Ym91bmRzLCBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlUm9vdExheWVyQm91bmRzQW5kUG9zaXRp
b24oYm91bmRzLCByb3RhdGlvbiwgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNob3Vs
ZFVwZGF0ZVJvb3RMYXllcjo6WWVzKTsKIH0KQEAgLTExNiwxNSArMTE2LDE1IEBAIHZvaWQgUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVzZSgpCiAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPnBhdXNlKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjplbnF1ZXVlKFNoYXJlZFZpZGVvRnJhbWUmJiBmcmFtZSkKK3ZvaWQgUmVtb3RlU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlVmlkZW9GcmFtZShTaGFyZWRWaWRlb0ZyYW1l
JiYgZnJhbWUpCiB7CiAgICAgaWYgKGF1dG8gdmlkZW9GcmFtZSA9IG1fc2hhcmVkVmlkZW9GcmFt
ZVJlYWRlci5yZWFkKFdURk1vdmUoZnJhbWUpKSkKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXItPmVucXVldWUodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+
cHJlc2VudGF0aW9uVGltZSgpKTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PmVucXVldWVCdWZmZXIodmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uVGltZSgpKTsKIH0KIAotdm9pZCBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpjbGVhclZpZGVvRnJhbWVzKCkKIHsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+Y2xlYXJFbnF1ZXVlZFNhbXBsZXMoKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+Y2xlYXJWaWRlb0ZyYW1lcygpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggMTYxZjNjOTU5ZWQzY2JhN2IzODJj
ZTIyZjUyNDhiNmQxYmNiMjQ4Zi4uNTk3Njg4ODk3M2QxMmY5ZGU2ZGVlZDZmNTNiMmMyMGQ2ODcx
OWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC03MCwxMyArNzAsMTMg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9vbCBoaWRl
RGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpOwogICAgIHZvaWQgdXBkYXRlQWZmaW5l
VHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKTsKLSAgICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBv
c2l0aW9uKENHUmVjdCwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOworICAg
IHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBXZWJDb3JlOjpWaWRlb0ZyYW1l
OjpSb3RhdGlvbik7CiAgICAgdm9pZCBmbHVzaCgpOwogICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVJ
bWFnZSgpOwogICAgIHZvaWQgcGxheSgpOwogICAgIHZvaWQgcGF1c2UoKTsKLSAgICB2b2lkIGVu
cXVldWUoU2hhcmVkVmlkZW9GcmFtZSYmKTsKLSAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVz
KCk7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShTaGFyZWRWaWRlb0ZyYW1lJiYpOworICAg
IHZvaWQgY2xlYXJWaWRlb0ZyYW1lcygpOwogICAgIHZvaWQgc2V0U2hhcmVkVmlkZW9GcmFtZVNl
bWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVN
ZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgppbmRleCA3MzEwZWJhZjlhMmY5MTU4
MGUxZmQ4MWNkOWRhMmI2Njk4MGVmYTc1Li41MjRmNDVlYjZmMDVjZTVhYWZiZTExMjZmYTZmNjVk
ZmRmN2YzOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNz
YWdlcy5pbgpAQCAtMjksMTEgKzI5LDExIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogICAgIFVwZGF0ZURpc3BsYXlN
b2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKQogICAgIFVwZGF0
ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0pCi0gICAgVXBkYXRl
Qm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gcm90YXRpb24pCisgICAgVXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
IGJvdW5kcywgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24pCiAgICAgRmx1
c2goKQogICAgIEZsdXNoQW5kUmVtb3ZlSW1hZ2UoKQotICAgIEVucXVldWUoc3RydWN0IFdlYktp
dDo6U2hhcmVkVmlkZW9GcmFtZSBmcmFtZSkKLSAgICBDbGVhckVucXVldWVkU2FtcGxlcygpCisg
ICAgRW5xdWV1ZVZpZGVvRnJhbWUoc3RydWN0IFdlYktpdDo6U2hhcmVkVmlkZW9GcmFtZSBmcmFt
ZSkKKyAgICBDbGVhclZpZGVvRnJhbWVzKCkKICAgICBQbGF5KCkKICAgICBQYXVzZSgpCiAgICAg
U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSBzZW1hcGhvcmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJkNDUzZTRkYTc5YzJkODJkMWE5MWQwNDJm
MzQ1MWViOGVkZGM1MGIuLmZjNTc0ODI0NWMxZTQyMzdhMjJlZjUzMTgyOGMwNTQ1ZGQ3N2U1MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6U291
cmNlUHJveHkKICAgICA6IHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICAg
ICAsIHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgotICAg
ICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAg
ICAsIHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTb3VyY2VQcm94eShSZWFs
dGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVyLCBSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZT4mJiBzb3VyY2UsIFJlZlB0cjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJiB2
aWRlb0ZyYW1lT2JqZWN0SGVhcCkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvOgogICAgICAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlNjcmVlbjoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgICAgICBtX3NvdXJjZS0+YWRkVmlkZW9TYW1w
bGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3NvdXJjZS0+YWRkVmlkZW9GcmFtZU9i
c2VydmVyKCp0aGlzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGU6OlZpZGVvOgogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGU6OlNjcmVlbjoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpXaW5k
b3c6Ci0gICAgICAgICAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhp
cyk7CisgICAgICAgICAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlz
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU6Ok5vbmU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE3OCwx
NiArMTc4LDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2NhcHR1cmVTZW1hcGhvcmUtPnNp
Z25hbCgpOwogICAgIH0KIAotICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcm90YXRlVmlkZW9GcmFt
ZUlmTmVlZGVkKE1lZGlhU2FtcGxlJiBzYW1wbGUpCisgICAgUmVmUHRyPFZpZGVvRnJhbWU+IHJv
dGF0ZVZpZGVvRnJhbWVJZk5lZWRlZChWaWRlb0ZyYW1lJiBmcmFtZSkKICAgICB7Ci0gICAgICAg
IGlmIChtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgc2FtcGxlLnZpZGVvUm90YXRpb24oKSAhPSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSkgewotICAgICAgICAgICAgYXV0byBwaXhl
bEJ1ZmZlciA9IHJvdGF0ZVBpeGVsQnVmZmVyKHNhbXBsZSk7Ci0gICAgICAgICAgICByZXR1cm4g
VmlkZW9GcmFtZUNWOjpjcmVhdGUoc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZp
ZGVvTWlycm9yZWQoKSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIFdURk1vdmUo
cGl4ZWxCdWZmZXIpKTsKKyAgICAgICAgaWYgKG1fc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBmcmFt
ZS5yb3RhdGlvbigpICE9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lKSB7CisgICAgICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gcm90YXRlUGl4ZWxCdWZmZXIoZnJhbWUpOworICAgICAgICAg
ICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKGZyYW1lLnByZXNlbnRhdGlvblRpbWUoKSwg
ZnJhbWUuaXNNaXJyb3JlZCgpLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwgV1RGTW92ZShw
aXhlbEJ1ZmZlcikpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAmc2FtcGxlOworICAgICAg
ICByZXR1cm4gJmZyYW1lOwogICAgIH0KIAotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUo
TWVkaWFTYW1wbGUmIGZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKSBmaW5h
bAorICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiBmcmFtZSwgVmlkZW9G
cmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgZmluYWwKICAgICB7CiAgICAgICAgIGF1dG8gdmlk
ZW9GcmFtZSA9IHJvdGF0ZVZpZGVvRnJhbWVJZk5lZWRlZChmcmFtZSk7CiAgICAgICAgIGlmICgh
dmlkZW9GcmFtZSkKQEAgLTE5NSwzNSArMTk1LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICht
X3Jlc291cmNlT3duZXIpCiAgICAgICAgICAgICB2aWRlb0ZyYW1lLT5zZXRPd25lcnNoaXBJZGVu
dGl0eShtX3Jlc291cmNlT3duZXIpOwogICAgICAgICBpZiAoIW1fdmlkZW9GcmFtZU9iamVjdEhl
YXApIHsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2Fw
dHVyZVNhbXBsZU1hbmFnZXI6OlZpZGVvRnJhbWVBdmFpbGFibGVDVihtX2lkLCB2aWRlb0ZyYW1l
LT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT52aWRlb1JvdGF0aW9uKCksIHZpZGVvRnJhbWUt
PnZpZGVvTWlycm9yZWQoKSwgdmlkZW9GcmFtZS0+cHJlc2VudGF0aW9uVGltZSgpLCBtZXRhZGF0
YSksIDApOworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlcjo6VmlkZW9GcmFtZUF2YWlsYWJsZUNWKG1faWQsIHZpZGVvRnJh
bWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnJvdGF0aW9uKCksIHZpZGVvRnJhbWUtPmlz
TWlycm9yZWQoKSwgdmlkZW9GcmFtZS0+cHJlc2VudGF0aW9uVGltZSgpLCBtZXRhZGF0YSksIDAp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcHJvcGVydGll
cyA9IG1fdmlkZW9GcmFtZU9iamVjdEhlYXAtPmFkZCgqdmlkZW9GcmFtZSk7CiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlZp
ZGVvRnJhbWVBdmFpbGFibGUobV9pZCwgcHJvcGVydGllcywgbWV0YWRhdGEpLCAwKTsKICAgICB9
CiAKLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRlUGl4ZWxCdWZmZXIoTWVk
aWFTYW1wbGUmIHNhbXBsZSkKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRl
UGl4ZWxCdWZmZXIoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKICAgICB7CiAgICAgICAgIGlmICgh
bV9yb3RhdGlvblNlc3Npb24pCiAgICAgICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IG1ha2VV
bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oKTsKIAogICAgICAgICBJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpSb3RhdGlvblByb3BlcnRpZXMgcm90YXRpb247Ci0gICAgICAgIHN3aXRjaCAo
c2FtcGxlLnZpZGVvUm90YXRpb24oKSkgewotICAgICAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpOb25lOgorICAgICAgICBzd2l0Y2ggKHZpZGVvRnJhbWUucm90YXRpb24oKSkg
eworICAgICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByb3RhdGlvbi5hbmdsZSA9IDA7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6VXBzaWRlRG93bjoKKyAgICAgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRl
RG93bjoKICAgICAgICAgICAgIHJvdGF0aW9uLmFuZ2xlID0gMTgwOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0OgorICAg
ICAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDoKICAgICAgICAgICAgIHJvdGF0
aW9uLmFuZ2xlID0gOTA7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDoKKyAgICAgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3Rh
dGlvbjo6TGVmdDoKICAgICAgICAgICAgIHJvdGF0aW9uLmFuZ2xlID0gMjcwOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5y
b3RhdGUoc2FtcGxlLCByb3RhdGlvbiwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdl
Q29tcGF0aWJsZTo6Tm8pOworICAgICAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24tPnJvdGF0
ZSh2aWRlb0ZyYW1lLCByb3RhdGlvbiwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdl
Q29tcGF0aWJsZTo6Tm8pOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVk
TWVtb3J5KiBzdG9yYWdlLCBjb25zdCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKaW5kZXgg
YWI4ZjY5MjhhZWY3MzNlNTkwZTdhZDlmZDgwZjQ5YjQwNjgyODM4MS4uZTgxYjIzZjkwYjUxN2Mx
NTI4M2M3NTE2Mzc1YTdiMWMwMWEwNWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmNwcApAQCAt
NDIsMTUgKzQyLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZW1vdGVWaWRlb0ZyYW1l
UHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZVByb3h5Ojpwcm9wZXJ0aWVzKFdlYktp
dDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSYmIHJlZmVyZW5jZSwgY29uc3QgV2ViQ29yZTo6
TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQorUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0
aWVzIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhXZWJLaXQ6OlJlbW90ZVZpZGVv
RnJhbWVSZWZlcmVuY2UmJiByZWZlcmVuY2UsIGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZp
ZGVvRnJhbWUpCiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgV1RGTW92ZShyZWZlcmVuY2UpLAot
ICAgICAgICBtZWRpYVNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksCi0gICAgICAgIG1lZGlhU2Ft
cGxlLnZpZGVvTWlycm9yZWQoKSwKLSAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9Sb3RhdGlvbigp
LAotICAgICAgICBleHBhbmRlZEludFNpemUobWVkaWFTYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgp
KSwKLSAgICAgICAgbWVkaWFTYW1wbGUudmlkZW9QaXhlbEZvcm1hdCgpCisgICAgICAgIHZpZGVv
RnJhbWUucHJlc2VudGF0aW9uVGltZSgpLAorICAgICAgICB2aWRlb0ZyYW1lLmlzTWlycm9yZWQo
KSwKKyAgICAgICAgdmlkZW9GcmFtZS5yb3RhdGlvbigpLAorICAgICAgICBleHBhbmRlZEludFNp
emUodmlkZW9GcmFtZS5wcmVzZW50YXRpb25TaXplKCkpLAorICAgICAgICB2aWRlb0ZyYW1lLnBp
eGVsRm9ybWF0KCkKICAgICB9OwogfQogCkBAIC05NCw3ICs5NCw3IEBAIFJlbW90ZVZpZGVvRnJh
bWVSZWFkUmVmZXJlbmNlIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6bmV3UmVhZFJlZmVyZW5jZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fcmVmZXJlbmNlVHJhY2tlci5yZWFkKCk7CiB9CiAKLXVpbnQz
Ml90IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6dmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0Cit1aW50
MzJfdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9waXhlbEZvcm1hdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5oCmluZGV4IGNlNDA3MTBk
NzFlMDQyY2NiMTc3OWJjYzNlNDViM2JhYjJmMzQxMjYuLmU0NGQyOWZlZTM2YTkwNGY3NzQ1NWY2
NzIwNDQ2Y2VhMTFhOGZiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgICAgIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSByZWZl
cmVuY2U7CiAgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lOwogICAgICAgICBib29s
IGlzTWlycm9yZWQgeyBmYWxzZSB9OwotICAgICAgICBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uIHsg
VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAgICAgICBSb3RhdGlvbiByb3RhdGlvbiB7IFJvdGF0
aW9uOjpOb25lIH07CiAgICAgICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZTsKICAgICAgICAgdWlu
dDMyX3QgcGl4ZWxGb3JtYXQgeyAwIH07CiAKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm9w
ZXJ0aWVzPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKLSAgICBzdGF0aWMgUHJvcGVydGll
cyBwcm9wZXJ0aWVzKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVJlZmVyZW5jZSYmLCBjb25zdCBX
ZWJDb3JlOjpNZWRpYVNhbXBsZSYpOworICAgIHN0YXRpYyBQcm9wZXJ0aWVzIHByb3BlcnRpZXMo
V2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYsIGNvbnN0IFdlYkNvcmU6OlZpZGVv
RnJhbWUmKTsKIAogICAgIHN0YXRpYyBSZWY8UmVtb3RlVmlkZW9GcmFtZVByb3h5PiBjcmVhdGUo
SVBDOjpDb25uZWN0aW9uJiwgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXBQcm94eSYsIFByb3Bl
cnRpZXMmJik7CiAKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgLy8gV2ViQ29yZTo6
VmlkZW9GcmFtZSBvdmVycmlkZXMuCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHByZXNlbnRhdGlv
blNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB1aW50MzJfdCB2aWRl
b1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisgICAgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGlzUmVtb3RlUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwpAQCAtMTE2LDEyICsxMTYsMTIgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3Bl
cnRpZXM+IFJlbW8KICAgICBhdXRvIHJlZmVyZW5jZSA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2Rl
PFJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2U+KCk7CiAgICAgYXV0byBwcmVzZW50YXRpb25UaW1l
ID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8TWVkaWFUaW1lPigpOwogICAgIGF1dG8gaXNNaXJy
b3JlZCA9IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPGJvb2w+KCk7Ci0gICAgYXV0byB2aWRlb1Jv
dGF0aW9uID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8VmlkZW9Sb3RhdGlvbj4oKTsKKyAgICBh
dXRvIHJvdGF0aW9uID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8Um90YXRpb24+KCk7CiAgICAg
YXV0byBzaXplID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8V2ViQ29yZTo6SW50U2l6ZT4oKTsK
ICAgICBhdXRvIHBpeGVsRm9ybWF0ID0gZGVjb2Rlci50ZW1wbGF0ZSBkZWNvZGU8dWludDMyX3Q+
KCk7CiAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnJlZmVyZW5jZSksIFdURk1v
dmUoKnByZXNlbnRhdGlvblRpbWUpLCAqaXNNaXJyb3JlZCwgKnZpZGVvUm90YXRpb24sICpzaXpl
LCAqcGl4ZWxGb3JtYXQgfTsKKyAgICByZXR1cm4gUHJvcGVydGllcyB7IFdURk1vdmUoKnJlZmVy
ZW5jZSksIFdURk1vdmUoKnByZXNlbnRhdGlvblRpbWUpLCAqaXNNaXJyb3JlZCwgKnJvdGF0aW9u
LCAqc2l6ZSwgKnBpeGVsRm9ybWF0IH07CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYpOwpAQCAt
MTI5LDcgKzEyOSw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyYpOwogfQogCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0JFR0lOKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5KQotICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpIHsg
cmV0dXJuIGlzPFdlYkNvcmU6OlZpZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSAmJiBkb3duY2FzdDxX
ZWJDb3JlOjpWaWRlb0ZyYW1lPihtZWRpYVNhbXBsZSkuaXNSZW1vdGVQcm94eSgpOyB9CisgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZpZGVvRnJhbWUp
IHsgcmV0dXJuIHZpZGVvRnJhbWUuaXNSZW1vdGVQcm94eSgpOyB9CiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggZmQxMjJkYmU1NzNjYWFh
OWI5NDRjODY1N2E0NTQ1YTBkYTVjNWI2Ni4uNmQzYWUwZTA1YjQ4YmM2ZThmZWVhNDFiMmVmNzFk
MWIwMzIyZDJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0xMDIsMjAgKzEwMiwyMCBAQCBzdGF0aWMg
aW50MzJfdCBpbml0aWFsaXplVmlkZW9FbmNvZGVyKHdlYnJ0Yzo6V2ViS2l0VmlkZW9FbmNvZGVy
IGVuY29kZXIsIGNvbnN0CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldl
YlJUQ0NvZGVjcygpLmluaXRpYWxpemVFbmNvZGVyKCpzdGF0aWNfY2FzdDxMaWJXZWJSVENDb2Rl
Y3M6OkVuY29kZXIqPihlbmNvZGVyKSwgY29kZWMud2lkdGgsIGNvZGVjLmhlaWdodCwgY29kZWMu
c3RhcnRCaXRyYXRlLCBjb2RlYy5tYXhCaXRyYXRlLCBjb2RlYy5taW5CaXRyYXRlLCBjb2RlYy5t
YXhGcmFtZXJhdGUpOwogfQogCi1zdGF0aWMgaW5saW5lIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uIHRvTWVkaWFTYW1wbGVWaWRlb1JvdGF0aW9uKHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3Rh
dGlvbikKK3N0YXRpYyBpbmxpbmUgVmlkZW9GcmFtZTo6Um90YXRpb24gdG9WaWRlb1JvdGF0aW9u
KHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKIHsKICAgICBzd2l0Y2ggKHJvdGF0aW9u
KSB7CiAgICAgY2FzZSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA6Ci0gICAgICAgIHJldHVybiBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAgICAgcmV0dXJuIFZpZGVvRnJh
bWU6OlJvdGF0aW9uOjpOb25lOwogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8xODA6
Ci0gICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjsK
KyAgICAgICAgcmV0dXJuIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOwogICAgIGNh
c2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl85MDoKLSAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uOjpSaWdodDsKKyAgICAgICAgcmV0dXJuIFZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpSaWdodDsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcwOgotICAgICAg
ICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQ7CisgICAgICAgIHJldHVy
biBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6TGVmdDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAg
IHJldHVybiBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKIH0KIAogc3RhdGljIGlubGluZSBT
dHJpbmcgZm9ybWF0TmFtZUZyb21XZWJSVENDb2RlY1R5cGUod2VicnRjOjpWaWRlb0NvZGVjVHlw
ZSB0eXBlKQpAQCAtNDk0LDcgKzQ5NCw3IEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNv
ZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmCiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfRVJST1I7CiAK
LSAgICBTaGFyZWRWaWRlb0ZyYW1lIHNoYXJlZFZpZGVvRnJhbWUgeyBNZWRpYVRpbWUoZnJhbWUu
dGltZXN0YW1wX3VzKCkgKiAxMDAwLCAxMDAwMDAwKSwgZmFsc2UsIHRvTWVkaWFTYW1wbGVWaWRl
b1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpLCBXVEZNb3ZlKCpidWZmZXIpIH07CisgICAgU2hh
cmVkVmlkZW9GcmFtZSBzaGFyZWRWaWRlb0ZyYW1lIHsgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFt
cF91cygpICogMTAwMCwgMTAwMDAwMCksIGZhbHNlLCB0b1ZpZGVvUm90YXRpb24oZnJhbWUucm90
YXRpb24oKSksIFdURk1vdmUoKmJ1ZmZlcikgfTsKICAgICBlbmNvZGVyLmNvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpFbmNvZGVGcmFtZSB7IGVuY29kZXIu
aWRlbnRpZmllciwgc2hhcmVkVmlkZW9GcmFtZSwgZnJhbWUudGltZXN0YW1wKCksIHNob3VsZEVu
Y29kZUFzS2V5RnJhbWUgfSwgMCk7CiAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19PSzsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCAwNDg1MDY1NGRhMTkzNTZhNGUxMWY2NTg4
NTkzNWQzMjE5N2Y2ZDk3Li44NTg1MjY0NWQyNTdiYWJjNTYwYmQ0NTdhZDE2MDA0MGY4M2NmMTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC05MiwyNSArOTIsMjUgQEAgTWVkaWFSZWNv
cmRlclByaXZhdGU6On5NZWRpYVJlY29yZGVyUHJpdmF0ZSgpCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5yZW1vdmVDbGllbnQoKnRoaXMp
OwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZTo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1l
LCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQogewogICAgIGlmIChzaG91bGRNdXRlVmlkZW8oKSkg
ewogICAgICAgICBpZiAoIW1fYmxhY2tGcmFtZVNpemUpIHsKLSAgICAgICAgICAgIGF1dG8gc2l6
ZSA9IHNhbXBsZS5wcmVzZW50YXRpb25TaXplKCk7CisgICAgICAgICAgICBhdXRvIHNpemUgPSB2
aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKICAgICAgICAgICAgIG1fYmxhY2tGcmFtZVNp
emUgPSBXZWJDb3JlOjpJbnRTaXplIHsgc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKCkpLCBz
dGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KCkpIH07CiAgICAgICAgIH0KLSAgICAgICAgU2hh
cmVkVmlkZW9GcmFtZSBzaGFyZWRWaWRlb0ZyYW1lIHsgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUo
KSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgKm1fYmxh
Y2tGcmFtZVNpemUgfTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVJlY29yZGVyOjpWaWRlb1NhbXBsZUF2YWlsYWJsZSB7IHNoYXJlZFZpZGVvRnJhbWUg
fSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgU2hhcmVkVmlkZW9GcmFtZSBzaGFyZWRWaWRlb0Zy
YW1lIHsgdmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIHZpZGVvRnJhbWUuaXNNaXJyb3Jl
ZCgpLCB2aWRlb0ZyYW1lLnJvdGF0aW9uKCksICptX2JsYWNrRnJhbWVTaXplIH07CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6VmlkZW9G
cmFtZUF2YWlsYWJsZSB7IHNoYXJlZFZpZGVvRnJhbWUgfSwgbV9pZGVudGlmaWVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fYmxhY2tGcmFtZVNpemUgPSB7IH07Ci0gICAgYXV0
byBzaGFyZWRWaWRlb0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHNhbXBs
ZSwKKyAgICBhdXRvIHNoYXJlZFZpZGVvRnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVXcml0ZXIu
d3JpdGUodmlkZW9GcmFtZSwKICAgICAgICAgW3RoaXNdKGF1dG8mIHNlbWFwaG9yZSkgeyBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlNldFNoYXJlZFZp
ZGVvRnJhbWVTZW1hcGhvcmUgeyBzZW1hcGhvcmUgfSwgbV9pZGVudGlmaWVyKTsgfSwKICAgICAg
ICAgW3RoaXNdKGF1dG8mIGhhbmRsZSkgeyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVjb3JkZXI6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBoYW5kbGUgfSwg
bV9pZGVudGlmaWVyKTsgfQogICAgICk7CiAgICAgaWYgKHNoYXJlZFZpZGVvRnJhbWUpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6Vmlk
ZW9TYW1wbGVBdmFpbGFibGUgeyBXVEZNb3ZlKCpzaGFyZWRWaWRlb0ZyYW1lKSB9LCBtX2lkZW50
aWZpZXIpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UmVjb3JkZXI6OlZpZGVvRnJhbWVBdmFpbGFibGUgeyBXVEZNb3ZlKCpzaGFyZWRWaWRlb0ZyYW1l
KSB9LCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYgYXVkaW9EYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IG51bWJlck9mRnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggNzIx
MGMwY2ViMTA3Y2I3ZDdlNDE2ZmI2ODMyZjM4ZjIyNjhiOWM0OC4uZTI0ZWFiZTBlYmIyNWI5Yjgy
ZTNkNWI3OTFlZTJmYzg0NjI0ODdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZQotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6TWVkaWFTYW1w
bGUmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAgICB2b2lkIHZp
ZGVvRnJhbWVBdmFpbGFibGUoV2ViQ29yZTo6VmlkZW9GcmFtZSYsIFdlYkNvcmU6OlZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcFJlY29y
ZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRS
ZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuY3BwCmluZGV4IDcxOTkyZjA0ZjI5YjRiMGVkNTY1YjMzYjk5NjRhZjgzNjc4
MDEyZDguLjc0NWNmZjZjNzMyMDI4YmVlMTEyOWZjNTg1NjQ4Y2Y5YjRlYmE4Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zv
cm0gdHJhbnNmb3JtCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlVwZGF0ZUFmZmluZVRyYW5zZm9ybSB7IHRyYW5zZm9ybSB9
LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBk
YXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24pCit2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQm91
bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgVmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRp
b24pCiB7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OlVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uIHsgYm91bmRzLCByb3RhdGlv
biB9LCBtX2lkZW50aWZpZXIpOwogfQpAQCAtMTI3LDI0ICsxMjcsMjQgQEAgdm9pZCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OnBhdXNlKCkKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UGF1c2UgeyB9LCBtX2lkZW50aWZp
ZXIpOwogfQogCi12b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlKQordm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVl
dWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUpCiB7CiAgICAgaWYgKG1fcGF1c2Vk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNoYXJlZFZpZGVvRnJhbWUgPSBtX3NoYXJl
ZFZpZGVvRnJhbWVXcml0ZXIud3JpdGUoc2FtcGxlLAorICAgIGF1dG8gc2hhcmVkVmlkZW9GcmFt
ZSA9IG1fc2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZSh2aWRlb0ZyYW1lLAogICAgICAgICBb
dGhpc10oYXV0byYgc2VtYXBob3JlKSB7IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3Jl
IHsgc2VtYXBob3JlIH0sIG1faWRlbnRpZmllcik7IH0sCiAgICAgICAgIFt0aGlzXShhdXRvJiBo
YW5kbGUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OlNldFNoYXJlZFZpZGVvRnJhbWVNZW1vcnkgeyBoYW5kbGUgfSwgbV9pZGVu
dGlmaWVyKTsgfQogICAgICk7CiAgICAgaWYgKCFzaGFyZWRWaWRlb0ZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6RW5xdWV1ZSB7ICpzaGFyZWRWaWRlb0ZyYW1lIH0sIG1faWRlbnRp
Zmllcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OkVucXVldWVWaWRlb0ZyYW1lIHsgKnNoYXJlZFZpZGVvRnJhbWUgfSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFy
RW5xdWV1ZWRTYW1wbGVzKCkKK3ZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhclZp
ZGVvRnJhbWVzKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xlYXJFbnF1ZXVlZFNhbXBsZXMgeyB9LCBtX2lkZW50
aWZpZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpDbGVhclZpZGVvRnJhbWVzIHsgfSwgbV9pZGVudGlmaWVyKTsKIH0K
IAogUGxhdGZvcm1MYXllciogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAppbmRleCA1ZTg0MzRhOWY0MjQ0ODBkMTAyMmU0NWFl
OGI4Njk5MzM0NjcxM2NjLi4wNzQwMWY2NDcxNzk1ZjVmZGMxZWQyZjU5ZGNiZmQ1OGMxMzVjZTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtNjIsMTMgKzYyLDEzIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBkaWRGYWlsKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEaXNw
bGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0pIGZpbmFs
OwotICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBXZWJDb3JlOjpNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCb3VuZHNBbmRQ
b3NpdGlvbihDR1JlY3QsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uKSBmaW5hbDsKICAg
ICB2b2lkIGZsdXNoKCkgZmluYWw7CiAgICAgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCkgZmlu
YWw7CiAgICAgdm9pZCBwbGF5KCkgZmluYWw7CiAgICAgdm9pZCBwYXVzZSgpIGZpbmFsOwotICAg
IHZvaWQgZW5xdWV1ZVNhbXBsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYpIGZpbmFsOwotICAgIHZv
aWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKSBmaW5hbDsKKyAgICB2b2lkIGVucXVldWVWaWRlb0Zy
YW1lKFdlYkNvcmU6OlZpZGVvRnJhbWUmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyVmlkZW9GcmFt
ZXMoKSBmaW5hbDsKICAgICBQbGF0Zm9ybUxheWVyKiByb290TGF5ZXIoKSBmaW5hbDsKIAogICAg
IC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKaW5kZXggY2U4
ZWM1ZmNkYzcyZDI1N2YwZDk0Y2ViMjg4YmZiYjNiYmFiM2VjZS4uMzliNzRiZjQ2ZGViZGE1ZGI2
OWY2N2ZiMmJjNmE4ZGU4ZmQ0ZTljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5jcHAKQEAgLTkzLDE1ICs5Mywx
NSBAQCBib29sIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OnByZXBhcmVXcml0aW5nKGNvbnN0IFNo
YXJlZFZpZGVvRnJhbWVJbmZvJiBpbmZvLCBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6
Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRl
KE1lZGlhU2FtcGxlJiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYp
PiYgbmV3U2VtYXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQorc3RkOjpvcHRpb25hbDxT
aGFyZWRWaWRlb0ZyYW1lPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShWaWRlb0ZyYW1l
JiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2VtYXBo
b3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQogewogICAgIGF1dG8gYnVmZmVyID0gd3JpdGVC
dWZmZXIoZnJhbWUsIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBuZXdNZW1vcnlDYWxsYmFjayk7CiAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIFNoYXJlZFZp
ZGVvRnJhbWUgeyBmcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIGZyYW1lLnZpZGVvTWlycm9yZWQo
KSwgZnJhbWUudmlkZW9Sb3RhdGlvbigpLCBXVEZNb3ZlKCpidWZmZXIpIH07CisgICAgcmV0dXJu
IFNoYXJlZFZpZGVvRnJhbWUgeyBmcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIGZyYW1lLmlzTWly
cm9yZWQoKSwgZnJhbWUucm90YXRpb24oKSwgV1RGTW92ZSgqYnVmZmVyKSB9OwogfQogCi1zdGQ6
Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gU2hhcmVkVmlkZW9GcmFtZVdyaXRl
cjo6d3JpdGVCdWZmZXIoTWVkaWFTYW1wbGUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiBuZXdTZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9p
ZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCitz
dGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gU2hhcmVkVmlkZW9GcmFtZVdy
aXRlcjo6d3JpdGVCdWZmZXIoVmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
SVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxsYmFjaykK
IHsKICAgICBpZiAoaXM8UmVtb3RlVmlkZW9GcmFtZVByb3h5PihmcmFtZSkpCiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxSZW1vdGVWaWRlb0ZyYW1lUHJveHk+KGZyYW1lKS5uZXdSZWFkUmVmZXJl
bmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
aGFyZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9T
aGFyZWRWaWRlb0ZyYW1lLmgKaW5kZXggZmEzZDgzYzVkOTRiOGFmZDBlNWQ3OWMwMGRkY2QzOWRm
ZTNhMzMzNy4uYTE1MDFlNzVhNjRmMjEzN2ZhNWMxNjkxNjUyYzQxMDJjYjhmZjk1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVv
RnJhbWUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVh
cDsKIHN0cnVjdCBTaGFyZWRWaWRlb0ZyYW1lIHsKICAgICBNZWRpYVRpbWUgdGltZTsKICAgICBi
b29sIG1pcnJvcmVkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9S
b3RhdGlvbiByb3RhdGlvbiB7IFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lIH07CisgICAgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24geyBXZWJD
b3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSB9OwogICAgIHVzaW5nIEJ1ZmZlciA9IHN0
ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVtb3RlVmlkZW9GcmFtZVJlYWRSZWZlcmVuY2Us
IE1hY2hTZW5kUmlnaHQsIFdlYkNvcmU6OkludFNpemU+OwogICAgIEJ1ZmZlciBidWZmZXI7CiAK
QEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgU2hhcmVkVmlkZW9GcmFtZVdyaXRlciB7CiBwdWJsaWM6
CiAgICAgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcigpOwogCi0gICAgc3RkOjpvcHRpb25hbDxTaGFy
ZWRWaWRlb0ZyYW1lPiB3cml0ZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0Zy
YW1lPiB3cml0ZShXZWJDb3JlOjpWaWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mKTsKICAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZl
cj4gd3JpdGVCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mLCBib29sIGNhblNlbmRJT1N1cmZhY2UgPSB0cnVlKTsKICNpZiBVU0UoTElC
V0VCUlRDKQogICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3cml0
ZUJ1ZmZlcihjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQ
Qzo6U2VtYXBob3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYpOwpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWxs
b2NhdGVTdG9yYWdlKHNpemVfdCwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYpPiYpOwogICAgIGJvb2wgcHJlcGFyZVdyaXRpbmcoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkVmlkZW9GcmFtZUluZm8mLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBo
b3JlJik+JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYpPiYpOwogCi0gICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IHdy
aXRlQnVmZmVyKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6
OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZl
cj4gd3JpdGVCdWZmZXIoV2ViQ29yZTo6VmlkZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
SVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJik+Jik7CiAjaWYgVVNFKExJQldFQlJUQykKICAgICBzdGQ6Om9wdGlvbmFs
PFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gd3JpdGVCdWZmZXIod2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVD
YXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKaW5kZXggNzY0ZWMwZDVmNzdiZDNlZTA1MjQ1MDM4N2U0
ZjgxZGVmNmQ2YWFlOS4uZmZiZmEzMWZlYTBkMjE4YzhjYjU1MDc0NTk0MTI0NzVkMjY4ZjcxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVT
YW1wbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3BwCkBAIC0xNTksMTEgKzE1OSwxMCBAQCB2b2lkIFJl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFJlYWx0aW1lTWVk
aWFTb3VyY2VJZGVudGlmaQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFi
bGUgdG8gZmluZCBzb3VyY2UgJWxsdSBmb3IgdmlkZW9GcmFtZUF2YWlsYWJsZSIsIGlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byB2aWRlb0Zy
YW1lU2l6ZSA9IHZpZGVvRnJhbWUtPnNpemUoKTsKLSAgICBpdGVyYXRvci0+dmFsdWUtPnZpZGVv
RnJhbWVBdmFpbGFibGUoV1RGTW92ZSh2aWRlb0ZyYW1lKSwgdmlkZW9GcmFtZVNpemUsIG1ldGFk
YXRhKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnJlbW90ZVZpZGVvRnJhbWVBdmFpbGFibGUoV1RG
TW92ZSh2aWRlb0ZyYW1lKSwgbWV0YWRhdGEpOwogfQogCi12b2lkIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZm
ZXIsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1p
cnJvcmVkLCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRp
bWVNZXRhZGF0YSBtZXRhZGF0YSkKK3ZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZp
ZGVvRnJhbWVBdmFpbGFibGVDVihSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlm
aWVyLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6
VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRh
KQogewogICAgIEFTU0VSVCghV1RGOjppc01haW5SdW5Mb29wKCkpOwogICAgIGF1dG8gaXRlcmF0
b3IgPSBtX3ZpZGVvU291cmNlcy5maW5kKGlkZW50aWZpZXIpOwpAQCAtMTczLDggKzE3Miw3IEBA
IHZvaWQgUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OnZpZGVvRnJhbWVBdmFpbGFibGVDVihS
ZWFsdGltZU1lZGlhU291cmNlSWRlbnRpCiAgICAgfQogCiAgICAgYXV0byB2aWRlb0ZyYW1lID0g
VmlkZW9GcmFtZUNWOjpjcmVhdGUocHJlc2VudGF0aW9uVGltZSwgbWlycm9yZWQsIHJvdGF0aW9u
LCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSk7Ci0gICAgYXV0byBzaXplID0gdmlkZW9GcmFtZS0+cHJl
c2VudGF0aW9uU2l6ZSgpOwotICAgIGl0ZXJhdG9yLT52YWx1ZS0+dmlkZW9GcmFtZUF2YWlsYWJs
ZSh2aWRlb0ZyYW1lLmdldCgpLCB7IHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCgpKSwgc3Rh
dGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCgpKSB9LCBtZXRhZGF0YSk7CisgICAgaXRlcmF0b3It
PnZhbHVlLT5yZW1vdGVWaWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUuZ2V0KCksIG1ldGFk
YXRhKTsKIH0KIAogUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlJlbW90ZUF1ZGlvOjpSZW1v
dGVBdWRpbyhSZWY8UmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZT4mJiBzb3VyY2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5oCmluZGV4IDNlYzkyYjVkZTA4ODVkMjczNWIxMmMxODY0Njg3MWVlMGY4ZmFi
M2EuLjVlM2Y4MzQwNzY4YmJlOGE5Y2I4OWM0ODI3YTMyYTkxN2U5Mzg3ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2Ft
cGxlTWFuYWdlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdWRpb1Nh
bXBsZXNBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIE1l
ZGlhVGltZSwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwogICAgIHZvaWQgdmlkZW9GcmFtZUF2
YWlsYWJsZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciwgUmVtb3RlVmlk
ZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzJiYsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRh
dGEpOwogICAgIC8vIEZJWE1FOiBXaWxsIGJlIHJlbW92ZWQgb25jZSBSZW1vdGVWaWRlb0ZyYW1l
UHJveHkgcHJvdmlkZXJzIGFyZSB0aGUgb25seSBvbmVzIHNlbmRpbmcgZGF0YS4KLSAgICB2b2lk
IHZpZGVvRnJhbWVBdmFpbGFibGVDVihXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRp
ZmllciwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYsIFdlYkNvcmU6Ok1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRpYVRpbWUsIFdlYkNvcmU6OlZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZUNWKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4mJiwgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1l
ZGlhVGltZSwgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSk7CiAKICAgICB2b2lkIHNl
dENvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFu
YWdlci5tZXNzYWdlcy5pbgppbmRleCA3MWIzNDcwODUzMjYzMGFjN2ZhMzFmYWE3ZGJmMWQyM2Iz
NTEwOGZiLi5lNWNkZmMyNTNmNDEzMWFhMGRmNTcxYTJmNDZiZTQzZmJmMjUxYWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1h
bmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Jl
bW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiBt
ZXNzYWdlcyAtPiBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAg
ICBBdWRpb1N0b3JhZ2VDaGFuZ2VkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlm
aWVyIGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVt
YmVyT2ZGcmFtZXMsIElQQzo6U2VtYXBob3JlIGNhcHR1cmVTZW1hcGhvcmUsIE1lZGlhVGltZSBt
ZWRpYVRpbWUsIHNpemVfdCBmcmFtZUNodW5rU2l6ZSk7CiAgICAgVmlkZW9GcmFtZUF2YWlsYWJs
ZShXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpSZW1v
dGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgc2FtcGxlLCBzdHJ1Y3QgV2ViQ29yZTo6Vmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKLSAgICBWaWRlb0ZyYW1lQXZhaWxhYmxlQ1Yo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWQsIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1l
LCBzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKKyAgICBW
aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIgaWQsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlciwgV2ViQ29yZTo6
VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQsIE1lZGlhVGltZSBw
cmVzZW50YXRpb25UaW1lLCBzdHJ1Y3QgV2ViQ29yZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBt
ZXRhZGF0YSkKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUmVtb3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBlNmViMzJiOWYzOTgwY2E4
YTQ0ODQyYTViZWY1MTZhZGI0M2RhM2Q1Li5kMWI4NTk5NWYzOWQ2YTg0Y2Q0MWI3NDA3ZTg0NjIz
MzlmMDU4NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjYXB0dXJlU3RvcHBlZChib29sIGRpZEZhaWwpOwogCi0gICAgdm9pZCB2
aWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNvcmU6OlZpZGVvRnJhbWUmIGZyYW1lLCBXZWJDb3JlOjpJ
bnRTaXplLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKSB7IHZpZGVv
U2FtcGxlQXZhaWxhYmxlKGZyYW1lLCBtZXRhZGF0YSk7IH0KKyAgICB2b2lkIHJlbW90ZVZpZGVv
RnJhbWVBdmFpbGFibGUoV2ViQ29yZTo6VmlkZW9GcmFtZSYgZnJhbWUsIFdlYkNvcmU6OlZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpIHsgdmlkZW9GcmFtZUF2YWlsYWJsZShmcmFtZSwg
bWV0YWRhdGEpOyB9CiAgICAgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoYm9vbCB2YWx1ZSwgYm9v
bCBpbnRlcnJ1cHRlZCk7CiAKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455355</attachid>
            <date>2022-03-22 02:35:37 -0700</date>
            <delta_ts>2022-03-22 03:38:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237884-20220322103532.patch</filename>
            <type>text/plain</type>
            <size>181617</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVlYjE1OGVkODRkZGNk
YThjYjRhMWVmYTJlMzcwY2NiODk5MzBiYS4uY2JlNTgxNzYzNzY0YTViMmRmYmMwZWNlNjJjMWEx
MTFkMDIyN2Q4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlIHRvIFZp
ZGVvRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzg4NAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBS
ZWZhY3RvcmluZyB0byBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAtIFJlbmFtaW5nIG9mIFZp
ZGVvU2FtcGxlT2JzZXJ2ZXIgdG8gVmlkZW9GcmFtZU9ic2VydmVyLCB2aWRlb1NhbXBsZUF2YWls
YWJsZSB0byB2aWRlb0ZyYW1lQXZhaWxhYmxlLi4uCisgICAgICAgIC0gdmlkZW9GcmFtZUF2YWls
YWJsZSB0YWtlcyBhIFZpZGVvRnJhbWUgaW5zdGVhZCBvZiBhIE1lZGlhU2FtcGxlCisgICAgICAg
IC0gVXNlIFZpZGVvRnJhbWU6OnJvdGF0aW9uIGFuZCBWaWRlb0ZyYW1lOjppc01pcnJvcmVkLgor
ICAgICAgICAtIFVzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBpbnN0ZWFkIG9mIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uCisgICAgICAgIFVwZGF0ZSBjb2RlIGFjY29yZGluZyB0aGlzIHJlbmFt
aW5nLgorICAgICAgICBNb3ZlIGZyb20gdXNpbmcgTWVkaWFTYW1wbGUgdG8gVmlkZW9GcmFtZSB3
aGVyZSBpdCBtYWtlcyBzZW5zZS4KKworICAgICAgICBQcmVwYXJlIGZvciByZW1vdmFsIG9mIE1l
ZGlhU2FtcGxlIGFzIHBhcmVudCBjbGFzcyBvZiBWaWRlb0ZyYW1lLgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1l
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9WaWRlb0ZyYW1lLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW06CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0lt
YWdlUm90YXRpb25TZXNzaW9uVlQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
di9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2N2L1ZpZGVvRnJhbWVDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVv
RnJhbWVDVi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9G
cmFtZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291
cmNlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxh
eUtpdENhcHR1cmVTb3VyY2UubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VMaWJXZWJSVEMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKwogMjAyMi0wMy0yMiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlu
b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBub24tdW5pZmllZCBidWls
ZCBhZnRlciByMjkxNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmOTdkMDFmMTk0NWQwNDg4ZTIxOTBkZTk5NGM2
OWQwZTUwOTBkMjEuLjM4MzAxZDA3MDkzYmQzMDFkNmE5NTQ5ODlmMGY2ZGM4OWUyZjViMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjItMDMtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9T
YW1wbGVPYnNlcnZlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUgdG8gVmlkZW9GcmFtZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3ODg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIE1vdmUgZnJvbSB1c2luZyBN
ZWRpYVNhbXBsZSB0byBWaWRlb0ZyYW1lIGRpcmVjdGx5LgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNzUHJveHkubW06CisgICAgICAgICog
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZVZpZGVvRnJhbWVQcm94eS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9SZW1v
dGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9S
ZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2Ev
UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZpZGVvU291cmNlLmg6CisKIDIwMjItMDMtMjIgIERp
ZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCBmaXggbm9uLXVuaWZpZWQgYnVpbGQgYWZ0ZXIgcjI5MTU4OQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA4YTBkNGU0NDA5MTNmNWM4YmZiMjFiMTIxNmEwNDcx
OTU4YjNlNWQxLi45MTVhZThjZGY4ODY2Mzg3MzQ5MDYxYjczNTI5ZjU3NjBkYmQ0ZTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBA
IHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FwdHVyZUNhbnZh
cygpCiAKICAgICBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgIG1ldGFkYXRh
LmNhcHR1cmVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsK
LSAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZSgqdmlkZW9GcmFtZSwgbWV0YWRhdGEpOworICAgIHZp
ZGVvRnJhbWVBdmFpbGFibGUoKnZpZGVvRnJhbWUsIG1ldGFkYXRhKTsKIH0KIAogUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpjbG9uZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCmluZGV4IDI2ZDkyZWQ4YjdhOTcyN2Q4OTE0OWZmNDY2M2QzNGMzMjk0YTEw
MzAuLjc3OGI3ZGExZWRmYzExMDI5OTFkM2NjNzRmNzBmZjk2MzQyNmI5MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCkBAIC0xMzcsMTAgKzEzNyw2IEBACiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgi
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiTWVkaWFTYW1w
bGUuaCIKLSNlbmRpZgotCiAjaWYgIVVTRShBTkdMRSkKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIgogI2lmIFVTRShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVk
aWFTYW1wbGUuaAppbmRleCA2NzQ2MTlmYTYyMmVhYzk5NThmNWY0MDk1OTVjN2VlODA3MTQyNjBh
Li45NDA3MjU4YWExOTk0YzVkZjUyNzQwYTU0OTFjNDliMmRlMDBhMGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKQEAgLTExNyw5ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIFJpZ2h0ID0gOTAsCiAgICAgICAgIExlZnQgPSAyNzAsCiAgICAgfTsKLSAgICB2aXJ0dWFs
IFZpZGVvUm90YXRpb24gdmlkZW9Sb3RhdGlvbigpIGNvbnN0IHsgcmV0dXJuIFZpZGVvUm90YXRp
b246Ok5vbmU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB1aW50MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29u
c3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIFZpZGVvUm90YXRpb246Ok5vbmU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNN
aXJyb3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB1aW50MzJfdCBw
aXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2aXJ0dWFsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9W
aWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCmlu
ZGV4IGQ1YmM3MzM2YWZiYzIwZWUxNzQ4YWZmYWFkYTEyMTQ5ZmViZTNjZjUuLmVlNzllNTgyZTJh
MGFmYTlkMjgxYWY5ODIwYzljNjA2MDBhNzJlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ZpZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
ZGVvRnJhbWUuY3BwCkBAIC00OCwxMiArNDgsMTIgQEAgTWVkaWFUaW1lIFZpZGVvRnJhbWU6OnBy
ZXNlbnRhdGlvblRpbWUoKSBjb25zdAogICAgIHJldHVybiBtX3ByZXNlbnRhdGlvblRpbWU7CiB9
CiAKLU1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIFZpZGVvRnJhbWU6OnZpZGVvUm90YXRpb24o
KSBjb25zdAorVmlkZW9GcmFtZTo6Um90YXRpb24gVmlkZW9GcmFtZTo6cm90YXRpb24oKSBjb25z
dAogewogICAgIHJldHVybiBtX3JvdGF0aW9uOwogfQogCi1ib29sIFZpZGVvRnJhbWU6OnZpZGVv
TWlycm9yZWQoKSBjb25zdAorYm9vbCBWaWRlb0ZyYW1lOjppc01pcnJvcmVkKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9pc01pcnJvcmVkOwogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxW
aWRlb0ZyYW1lQ1Y+IFZpZGVvRnJhbWU6OmFzVmlkZW9GcmFtZUNWKCkKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpj
cmVhdGUocHJlc2VudGF0aW9uVGltZSgpLCB2aWRlb01pcnJvcmVkKCksIHZpZGVvUm90YXRpb24o
KSwgYnVmZmVyKTsKKyAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUocHJlc2VudGF0aW9u
VGltZSgpLCBpc01pcnJvcmVkKCksIHJvdGF0aW9uKCksIGJ1ZmZlcik7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVmlkZW9GcmFtZS5oCmluZGV4IGFiYTRiNmNjYjkyYTI3YjI0Mzcy
ODc0ZDE5MTEyODk1MWI2NDE5OTcuLjhhYTQyZWVmZmFhZjZhYjRkMzdlOWE4NTZhMjQ1OTdjY2Jh
NTcwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZpZGVvRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaWRlb0ZyYW1lLmgKQEAgLTQyLDEwICs0Miwx
MiBAQCBjbGFzcyBWaWRlb0ZyYW1lIDogcHVibGljIE1lZGlhU2FtcGxlIHsKIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB+VmlkZW9GcmFtZSgpOwogCisgICAgdXNpbmcgUm90YXRpb24gPSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjsKKwogICAgIC8vIFdlYkNvcmU6Ok1lZGlhU2FtcGxl
IG92ZXJyaWRlcy4KICAgICBXRUJDT1JFX0VYUE9SVCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGlt
ZSgpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIFZpZGVvUm90YXRpb24gdmlkZW9S
b3RhdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdmlkZW9NaXJy
b3JlZCgpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJvdGF0aW9uIHJvdGF0aW9u
KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01pcnJvcmVkKCkgY29u
c3QgZmluYWw7CiAgICAgLy8gRklYTUU6IFdoZW4gVmlkZW9GcmFtZSBpcyBub3QgTWVkaWFTYW1w
bGUsIHRoZXNlIHdpbGwgbm90IGJlIG5lZWRlZC4KICAgICBXRUJDT1JFX0VYUE9SVCBXZWJDb3Jl
OjpQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGNvbnN0IGZpbmFsOwogICAgIFdFQkNP
UkVfRVhQT1JUIFBsYXRmb3JtU2FtcGxlOjpUeXBlIHBsYXRmb3JtU2FtcGxlVHlwZSgpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCmlu
ZGV4IDg4ZmYyNzVhNDgyYzgzNDA2OTIzYzk0ODljZWM4YTc0YzY1Y2E5MDUuLjc5Nzk4ODc2OTk5
YTVmM2ZjMjAxM2EyN2MzYThmNDhhZGNjMmI4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
KyNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBN
ZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBN
ZWRpYVNhbXBsZTsKK2NsYXNzIFZpZGVvRnJhbWU7CiAKIGNsYXNzIFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciB7CiBwdWJsaWM6CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9vbCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhpZGVS
b290TGF5ZXIpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBZmZpbmVUcmFuc2Zvcm0o
Q0dBZmZpbmVUcmFuc2Zvcm0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm91bmRzQW5k
UG9zaXRpb24oQ0dSZWN0LCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFZpZGVvRnJhbWU6OlJv
dGF0aW9uKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSA9IDA7CkBAIC02OSw4ICs2OSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2Uo
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGVucXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNsZWFyVmlkZW9GcmFtZXMoKSA9IDA7CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIHJvb3RMYXllcigpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKaW5kZXggYTY2YjI3MzViY2VhZWRlYzM1
NmVjN2YwODM3NDIzNTY1NGVkYjIzZC4uNDk0NjUwM2M5MmUyMDI2N2M2Yzc5NzM0OGY5YTVkOTU0
ZWEyZGRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI+JiYsIENsaWVudCYpOwogICAgIH5Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigp
OwogCisgICAgdm9pZCBlbnF1ZXVlQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIE1lZGlhVGltZSk7
CisKICAgICAvLyBBUEkgdXNlZCBieSBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3Rl
bmVyCiAgICAgdm9pZCBsYXllclN0YXR1c0RpZENoYW5nZSgpOwogICAgIHZvaWQgbGF5ZXJFcnJv
ckRpZENoYW5nZSgpOwpAQCAtNTYsMTIgKzU4LDEyIEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3Jt
TGF5ZXIqIGRpc3BsYXlMYXllcigpOwogCi0gICAgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkg
ZmluYWw7Ci0KICAgICBlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZVJvb3RMYXllciB7IE5vLCBZZXMg
fTsKLSAgICB2b2lkIHVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllcik7CisgICAgdm9p
ZCB1cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFZpZGVvRnJhbWU6OlJv
dGF0aW9uLCBTaG91bGRVcGRhdGVSb290TGF5ZXIpOwogICAgIHZvaWQgdXBkYXRlUm9vdExheWVy
QWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKTsKIAorICAgIC8vIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci4KKyAgICBQbGF0Zm9ybUxheWVyKiByb290TGF5ZXIoKSBmaW5hbDsKICAg
ICB2b2lkIGluaXRpYWxpemUoYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgZGlkU3VjY2VlZCk+JiYpIGZpbmFsOwogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nSWRlbnRpZmllcihTdHJpbmcmJiBsb2dJZGVudGlm
aWVyKSBmaW5hbCB7IG1fbG9nSWRlbnRpZmllciA9IFdURk1vdmUobG9nSWRlbnRpZmllcik7IH0K
QEAgLTcxLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9v
bCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpIGZpbmFsOwogCiAgICAgdm9p
ZCB1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0pICBmaW5hbDsKLSAgICB2
b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24pIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBW
aWRlb0ZyYW1lOjpSb3RhdGlvbikgZmluYWw7CiAKICAgICB2b2lkIGZsdXNoKCkgZmluYWw7CiAg
ICAgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCkgZmluYWw7CkBAIC03OSwxNyArODEsMTYgQEAg
cHVibGljOgogICAgIHZvaWQgcGxheSgpIGZpbmFsOwogICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsK
IAotICAgIHZvaWQgZW5xdWV1ZShDVlBpeGVsQnVmZmVyUmVmLCBNZWRpYVRpbWUpOwotICAgIHZv
aWQgZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJFbnF1
ZXVlZFNhbXBsZXMoKSBmaW5hbDsKKyAgICB2b2lkIGVucXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJh
bWUmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyVmlkZW9GcmFtZXMoKSBmaW5hbDsKICAgICB2b2lk
IHNldFJlbmRlclBvbGljeShSZW5kZXJQb2xpY3kpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIHZv
aWQgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKTsKLSAgICB2b2lkIGFkZFNhbXBs
ZVRvUGVuZGluZ1F1ZXVlKE1lZGlhU2FtcGxlJik7CisKKyAgICB2b2lkIHJlbW92ZU9sZFZpZGVv
RnJhbWVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIHZvaWQgYWRkVmlkZW9GcmFtZVRvUGVuZGlu
Z1F1ZXVlKFJlZjxWaWRlb0ZyYW1lPiYmKTsKICAgICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25X
aGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKLSAgICB2b2lkIGVucXVldWVTYW1wbGVCdWZmZXIoTWVk
aWFTYW1wbGUmKTsKLSAgICB2b2lkIHNldFJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9ucyhDR1Jl
Y3QsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uKTsKKyAgICB2b2lkIHNldFJvb3RMYXllckJv
dW5kc0FuZFBvc2l0aW9ucyhDR1JlY3QsIFZpZGVvRnJhbWU6OlJvdGF0aW9uKTsKIAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgb25JcnJlZ3VsYXJGcmFtZVJhdGVOb3RpZmlj
YXRpb24oTW9ub3RvbmljVGltZSBmcmFtZVRpbWUsIE1vbm90b25pY1RpbWUgbGFzdEZyYW1lVGlt
ZSk7CkBAIC0xMDQsOCArMTA1LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBt
X3Byb2Nlc3NpbmdRdWV1ZTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgdGhyb3VnaCBtX3Byb2Nl
c3NpbmdRdWV1ZSBvciBpZiBtX3Byb2Nlc3NpbmdRdWV1ZSBpcyBudWxsLgotICAgIHVzaW5nIFBl
bmRpbmdTYW1wbGVRdWV1ZSA9IERlcXVlPFJlZjxNZWRpYVNhbXBsZT4+OwotICAgIFBlbmRpbmdT
YW1wbGVRdWV1ZSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlOworICAgIHVzaW5nIFBlbmRpbmdT
YW1wbGVRdWV1ZSA9IERlcXVlPFJlZjxWaWRlb0ZyYW1lPj47CisgICAgUGVuZGluZ1NhbXBsZVF1
ZXVlIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZTsKICAgICAKICAgICBib29sIG1fcGF1c2VkIHsg
ZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tbQppbmRleCAxY2NkZGZhODgxNWE0Zjc2NGUyNDkxYzcwNDc1
YjhkMjBiZGM0OTA0Li40NThjNWEzOWFmMDVkOGEwYTBlMGJkNTVjMGJmYjEwMWExM2RkOTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tbQpAQCAtMzEsNyArMzEsNiBAQAogI2ltcG9ydCAiQ29sb3IuaCIKICNpbXBv
cnQgIkludFNpemUuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIk1lZGlhU2FtcGxl
QVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFVdGlsaXRpZXMuaCIKIAogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg+CkBAIC00Miw4ICs0MSw5IEBACiAj
aW1wb3J0IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CiAKKyNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgotCisjaW1wb3J0IDxw
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTE5OCw3ICsxOTgs
NyBAQCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6fkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKCkKIAogICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BdOwogCi0gICAg
bV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOworICAgIG1fcGVuZGluZ1ZpZGVvRnJh
bWVRdWV1ZS5jbGVhcigpOwogCiAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BS
ZXF1ZXN0aW5nTWVkaWFEYXRhXTsKICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1
c2hdOwpAQCAtMjY1LDI4ICsyNjUsMjggQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6dXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHRyYW4KICAgICB9
KTsKIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQm91bmRz
QW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24pCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNB
bmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3RhdGlvbikK
IHsKICAgICB1cGRhdGVSb290TGF5ZXJCb3VuZHNBbmRQb3NpdGlvbihib3VuZHMsIHJvdGF0aW9u
LCBTaG91bGRVcGRhdGVSb290TGF5ZXI6Ok5vKTsKIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6c2V0Um9vdExheWVyQm91bmRzQW5kUG9zaXRpb25zKENHUmVjdCBib3Vu
ZHMsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQordm9pZCBMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6c2V0Um9vdExheWVyQm91bmRzQW5kUG9zaXRpb25zKENHUmVj
dCBib3VuZHMsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIENHUG9pbnQg
cG9zaXRpb24gPSB7IGJvdW5kcy5zaXplLndpZHRoIC8gMiwgYm91bmRzLnNpemUuaGVpZ2h0IC8g
Mn07Ci0gICAgaWYgKHJvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdo
dCB8fCByb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCkKKyAgICBp
ZiAocm90YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0IHx8IHJvdGF0aW9uID09
IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0KQogICAgICAgICBzdGQ6OnN3YXAoYm91bmRzLnNp
emUud2lkdGgsIGJvdW5kcy5zaXplLmhlaWdodCk7CiAKICAgICBtX3Jvb3RMYXllci5nZXQoKS5w
b3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIG1fcm9vdExheWVyLmdldCgpLmJvdW5kcyA9IGJvdW5k
czsKIH0KIAotdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlUm9vdExh
eWVyQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24sIFNob3VsZFVwZGF0ZVJvb3RMYXllciBzaG91bGRVcGRhdGVSb290TGF5
ZXIpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVSb290TGF5ZXJC
b3VuZHNBbmRQb3NpdGlvbihDR1JlY3QgYm91bmRzLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbiByb3Rh
dGlvbiwgU2hvdWxkVXBkYXRlUm9vdExheWVyIHNob3VsZFVwZGF0ZVJvb3RMYXllcikKIHsKICAg
ICBydW5XaXRob3V0QW5pbWF0aW9ucyhbJl0gewogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlUm9v
dExheWVyID09IFNob3VsZFVwZGF0ZVJvb3RMYXllcjo6WWVzKQogICAgICAgICAgICAgc2V0Um9v
dExheWVyQm91bmRzQW5kUG9zaXRpb25zKGJvdW5kcywgcm90YXRpb24pOwogCi0gICAgICAgIGlm
IChyb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQgfHwgcm90YXRp
b24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQpCisgICAgICAgIGlmIChyb3Rh
dGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQgfHwgcm90YXRpb24gPT0gVmlkZW9G
cmFtZTo6Um90YXRpb246OkxlZnQpCiAgICAgICAgICAgICBzdGQ6OnN3YXAoYm91bmRzLnNpemUu
d2lkdGgsIGJvdW5kcy5zaXplLmhlaWdodCk7CiAKICAgICAgICAgQ0dQb2ludCBwb3NpdGlvbiA9
IHsgYm91bmRzLnNpemUud2lkdGggLyAyLCBib3VuZHMuc2l6ZS5oZWlnaHQgLyAyfTsKQEAgLTMx
Miw3ICszMTIsNyBAQCB2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaEFu
ZFJlbW92ZUltYWdlKCkKIAogc3RhdGljIGNvbnN0IGRvdWJsZSByZW5kZXJlckxhdGVuY3kgPSAw
LjAyOwogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxl
KE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjplbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKQogewogICAgIGlmICht
X3BhdXNlZCkgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMzIxLDIyICszMjEsMTcg
QEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBsZShNZWRp
YVNhbXBsZSYgc2FtcGxlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNz
aW5nUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBzYW1wbGUgPSBSZWYgeyBzYW1wbGUgfV0geworICAg
IG1fcHJvY2Vzc2luZ1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgdmlkZW9GcmFtZSA9IFJlZiB7IHZp
ZGVvRnJhbWUgfV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CiAgICAgICAgICAgICBSRUxFQVNF
X0xPRyhXZWJSVEMsICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVNhbXBs
ZSAoJXtwdWJsaWN9cykgbm90IHJlYWR5IGZvciBtb3JlIG1lZGlhIGRhdGEiLCBtX2xvZ0lkZW50
aWZpZXIudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1
ZShzYW1wbGUpOworICAgICAgICAgICAgYWRkVmlkZW9GcmFtZVRvUGVuZGluZ1F1ZXVlKFdURk1v
dmUodmlkZW9GcmFtZSkpOwogICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFk
eUZvclZpZGVvRGF0YSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGVucXVldWVTYW1wbGVCdWZmZXIoc2FtcGxlKTsKKyAgICAgICAgZW5xdWV1ZUJ1ZmZlcih2aWRl
b0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25UaW1lKCkpOwog
ICAgIH0pOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVl
U2FtcGxlQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCi17Ci0gICAgZW5xdWV1ZShzYW1wbGUu
cGl4ZWxCdWZmZXIoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSk7Ci19Ci0KIHN0YXRpYyB2
b2lkIHNldFNhbXBsZUJ1ZmZlckFzRGlzcGxheUltbWVkaWF0ZWx5KENNU2FtcGxlQnVmZmVyUmVm
IHNhbXBsZUJ1ZmZlcikKIHsKICAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBQQUw6
OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZmZXIsIHRy
dWUpOwpAQCAtMzQ2LDcgKzM0MSw3IEBAIHN0YXRpYyB2b2lkIHNldFNhbXBsZUJ1ZmZlckFzRGlz
cGxheUltbWVkaWF0ZWx5KENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcikKICAgICB9CiB9
CiAKLXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWUoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciwgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUpCit2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlQnVmZmVyKENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXIsIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogCkBAIC0zNjEsNyArMzU2LDcgQEAgdm9pZCBMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
LCBNZWRpYVQKICAgICBjb25zdGV4cHIgc2l6ZV90IGZyYW1lQ291bnRQZXJMb2cgPSAxODAwOyAv
LyBsb2cgZXZlcnkgbWludXRlIGF0IDMwIGZwcwogICAgIGlmICghKG1fZnJhbWVSYXRlTW9uaXRv
ci5mcmFtZUNvdW50KCkgJSBmcmFtZUNvdW50UGVyTG9nKSkgewogICAgICAgICBpZiAoYXV0byog
bWV0cmljcyA9IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB2aWRlb1BlcmZvcm1hbmNlTWV0
cmljc10pCi0gICAgICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciAoJXtwdWJsaWN9cykgbWV0cmljcywgdG90YWw9JWx1LCBkcm9wcGVkPSVs
dSwgY29ycnVwdGVkPSVsdSwgZGlzcGxheS1jb21wb3NpdGVkPSVsdSwgbm9uLWRpc3BsYXktY29t
cG9zaXRlZD0lbHUgKHBlbmRpbmc9JWx1KSIsIG1fbG9nSWRlbnRpZmllci51dGY4KCkuZGF0YSgp
LCBtZXRyaWNzLnRvdGFsTnVtYmVyT2ZWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJPZkRyb3Bw
ZWRWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJPZkNvcnJ1cHRlZFZpZGVvRnJhbWVzLCBtZXRy
aWNzLm51bWJlck9mRGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcywgbWV0cmljcy5udW1iZXJP
Zk5vbkRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMsIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVl
dWUuc2l6ZSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyICgle3B1YmxpY31zKSBtZXRyaWNzLCB0b3RhbD0lbHUsIGRyb3Bw
ZWQ9JWx1LCBjb3JydXB0ZWQ9JWx1LCBkaXNwbGF5LWNvbXBvc2l0ZWQ9JWx1LCBub24tZGlzcGxh
eS1jb21wb3NpdGVkPSVsdSAocGVuZGluZz0lbHUpIiwgbV9sb2dJZGVudGlmaWVyLnV0ZjgoKS5k
YXRhKCksIG1ldHJpY3MudG90YWxOdW1iZXJPZlZpZGVvRnJhbWVzLCBtZXRyaWNzLm51bWJlck9m
RHJvcHBlZFZpZGVvRnJhbWVzLCBtZXRyaWNzLm51bWJlck9mQ29ycnVwdGVkVmlkZW9GcmFtZXMs
IG1ldHJpY3MubnVtYmVyT2ZEaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJhbWVzLCBtZXRyaWNzLm51
bWJlck9mTm9uRGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcywgbV9wZW5kaW5nVmlkZW9GcmFt
ZVF1ZXVlLnNpemUoKSk7CiAgICAgfQogICAgIG1fZnJhbWVSYXRlTW9uaXRvci51cGRhdGUoKTsK
ICNlbmRpZgpAQCAtMzczLDQ0ICszNjgsNDQgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6b25JcnJlZ3VsYXJGcmFtZVJhdGVOb3RpZmljYXRpb24oTW9ub3RvbmljVGkKICAg
ICBjYWxsT25NYWluVGhyZWFkKFtmcmFtZVRpbWUgPSBmcmFtZVRpbWUuc2Vjb25kc1NpbmNlRXBv
Y2goKS52YWx1ZSgpLCBsYXN0RnJhbWVUaW1lID0gbGFzdEZyYW1lVGltZS5zZWNvbmRzU2luY2VF
cG9jaCgpLnZhbHVlKCksIG9ic2VydmVkRnJhbWVSYXRlID0gbV9mcmFtZVJhdGVNb25pdG9yLm9i
c2VydmVkRnJhbWVSYXRlKCksIGZyYW1lQ291bnQgPSBtX2ZyYW1lUmF0ZU1vbml0b3IuZnJhbWVD
b3VudCgpLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywg
IkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlQnVmZmVyICgle3B1
YmxpY31zKSBhdCAlZiwgcHJldmlvdXMgZnJhbWUgd2FzIGF0ICVmLCBvYnNlcnZlZCBmcmFtZSBy
YXRlIGlzICVmLCBkZWxheSBzaW5jZSBsYXN0IGZyYW1lIGlzICVmIG1zLCBmcmFtZSBjb3VudCBp
cyAlbHUiLCB3ZWFrVGhpcy0+bV9sb2dJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIGZyYW1lVGlt
ZSwgbGFzdEZyYW1lVGltZSwgb2JzZXJ2ZWRGcmFtZVJhdGUsIChmcmFtZVRpbWUgLSBsYXN0RnJh
bWVUaW1lKSAqIDEwMDAsIGZyYW1lQ291bnQpOworICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMs
ICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZVZpZGVvRnJhbWUgKCV7cHVi
bGljfXMpIGF0ICVmLCBwcmV2aW91cyBmcmFtZSB3YXMgYXQgJWYsIG9ic2VydmVkIGZyYW1lIHJh
dGUgaXMgJWYsIGRlbGF5IHNpbmNlIGxhc3QgZnJhbWUgaXMgJWYgbXMsIGZyYW1lIGNvdW50IGlz
ICVsdSIsIHdlYWtUaGlzLT5tX2xvZ0lkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgZnJhbWVUaW1l
LCBsYXN0RnJhbWVUaW1lLCBvYnNlcnZlZEZyYW1lUmF0ZSwgKGZyYW1lVGltZSAtIGxhc3RGcmFt
ZVRpbWUpICogMTAwMCwgZnJhbWVDb3VudCk7CiAgICAgfSk7CiB9CiAjZW5kaWYKIAotdm9pZCBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5n
UXVldWUoKQordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cmVtb3ZlT2xkVmlk
ZW9GcmFtZXNGcm9tUGVuZGluZ1F1ZXVlKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKIAotICAgIGlmIChtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkKKyAgICBp
ZiAobV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1fcmVuZGVyUG9saWN5ID09IFJlbmRlclBvbGljeTo6SW1tZWRpYXRlbHkpIHsK
LSAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOworICAgICAgICBtX3Bl
bmRpbmdWaWRlb0ZyYW1lUXVldWUuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGF1dG8gbm93ID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKE1vbm90b25pY1RpbWU6
Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7Ci0gICAgd2hpbGUgKCFtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHByZXNlbnRhdGlv
blRpbWUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmZpcnN0KCktPnByZXNlbnRhdGlvblRp
bWUoKTsKKyAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVl
LmZpcnN0KCktPnByZXNlbnRhdGlvblRpbWUoKTsKICAgICAgICAgaWYgKHByZXNlbnRhdGlvblRp
bWUuaXNWYWxpZCgpICYmIHByZXNlbnRhdGlvblRpbWUgPiBub3cpCiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5yZW1vdmVGaXJzdCgpOworICAg
ICAgICBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUucmVtb3ZlRmlyc3QoKTsKICAgICB9CiB9CiAK
LXZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1
ZXVlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjphZGRWaWRlb0ZyYW1lVG9QZW5kaW5nUXVldWUoUmVmPFZpZGVvRnJhbWU+JiYgdmlkZW9G
cmFtZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIHJlbW92ZU9sZFNh
bXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCk7Ci0gICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5h
cHBlbmQoc2FtcGxlKTsKKyAgICByZW1vdmVPbGRWaWRlb0ZyYW1lc0Zyb21QZW5kaW5nUXVldWUo
KTsKKyAgICBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuYXBwZW5kKFdURk1vdmUodmlkZW9GcmFt
ZSkpOwogfQogCi12b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVl
dWVkU2FtcGxlcygpCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhclZp
ZGVvRnJhbWVzKCkKIHsKICAgICBtX3Byb2Nlc3NpbmdRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsK
LSAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOworICAgICAgICBtX3Bl
bmRpbmdWaWRlb0ZyYW1lUXVldWUuY2xlYXIoKTsKICAgICB9KTsKIH0KIApAQCAtNDI0LDEzICs0
MTksMTMgQEAgdm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpCiAgICAgICAgIG1fcHJvY2Vzc2luZ1F1ZXVl
LT5kaXNwYXRjaChbdGhpc10gewogICAgICAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKIAotICAgICAgICAgICAgd2hpbGUgKCFtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgd2hpbGUgKCFt
X3BlbmRpbmdWaWRlb0ZyYW1lUXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRl
b0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBhdXRvIHNhbXBsZSA9IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
dGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgZW5xdWV1ZVNhbXBsZUJ1ZmZlcihzYW1wbGUp
OworICAgICAgICAgICAgICAgIGF1dG8gdmlkZW9GcmFtZSA9IG1fcGVuZGluZ1ZpZGVvRnJhbWVR
dWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgICAgICBlbnF1ZXVlQnVmZmVyKHZpZGVvRnJh
bWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnByZXNlbnRhdGlvblRpbWUoKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5k
ZXggMmNjMTdhZGY4ZDdjYjRhMWYzZTNjNjU1NTI2NDRkYjc2Y2Y2ZTUxYi4uMWQ5MzFjNmY5ZDQ1
ZWYzMDgxMGVhM2YxM2Q4MDAyMmVmMTE1MzA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC0yNzU0LDcgKzI3NTQsNyBAQCBSZWZQdHI8VmlkZW9GcmFtZT4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9GcmFtZUZvckN1cnJlbnRUaW1lKAogICAgIHVwZGF0ZUxh
c3RQaXhlbEJ1ZmZlcigpOwogICAgIGlmICghbV9sYXN0UGl4ZWxCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShjdXJyZW50TWVk
aWFUaW1lKCksIGZhbHNlLCBWaWRlb0ZyYW1lQ1Y6OlZpZGVvUm90YXRpb246Ok5vbmUsIFJldGFp
blB0ciB7IG1fbGFzdFBpeGVsQnVmZmVyIH0pOworICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNy
ZWF0ZShjdXJyZW50TWVkaWFUaW1lKCksIGZhbHNlLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9u
ZSwgUmV0YWluUHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CiB9CiAKIFJlZlB0cjxOYXRpdmVJ
bWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNWJlNzA4M2Y1NGYw
ODgzM2E0YWZhZjRkZTY4YjE4NTc2YTdjYjg0Yi4uOWM5MTNlNGY0M2Y3MzAzOGU4YzNiMGQ0YzI2
YzViYTU0OTQyYTQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNzQ3LDcgKzc0
Nyw3IEBAIFJlZlB0cjxWaWRlb0ZyYW1lPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnZpZGVvRnJhbWVGb3JDdXJyZW50VGltCiAgICAgICAgIHVwZGF0ZUxhc3RQaXhlbEJ1
ZmZlcigpOwogICAgIGlmICghbV9sYXN0UGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShjdXJyZW50TWVkaWFUaW1lKCks
IGZhbHNlLCBWaWRlb0ZyYW1lQ1Y6OlZpZGVvUm90YXRpb246Ok5vbmUsIFJldGFpblB0ciB7IG1f
bGFzdFBpeGVsQnVmZmVyIH0pOworICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShjdXJy
ZW50TWVkaWFUaW1lKCksIGZhbHNlLCBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwgUmV0YWlu
UHRyIHsgbV9sYXN0UGl4ZWxCdWZmZXIgfSk7CiB9CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvbG9yU3BhY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMuaAppbmRleCA5MmRhZDMwOWZiY2FmOTQxNjNjNzM5MGU5Y2ZkYjRjMDc2
NDAyNWZhLi4wZTc0MTg3YzEzMGQ1ZGM2ZmVjZWRmN2Y2N2U4YjE5MTBiZjJjMzRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMjgsOSArMjgsOSBAQAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZh
dGUuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgorI2luY2x1ZGUg
IlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5hbAogICAgIDogcHVibGljIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQogICAgICwgcHJpdmF0ZSBNZWRpYVN0cmVhbVByaXZh
dGU6Ok9ic2VydmVyCiAgICAgLCBwdWJsaWMgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2Vy
dmVyCi0gICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZl
cgorICAgICwgcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlcgog
ICAgICwgcHVibGljIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50CiAgICAgLCBwcml2
YXRlIExvZ2dlckhlbHBlcgogewpAQCAtMTM2LDkgKzEzNiw5IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGZsdXNoUmVuZGVyZXJzKCk7CiAKLSAgICB2b2lkIHByb2Nlc3NOZXdWaWRlb1NhbXBsZShN
ZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEsIFNlY29uZHMpOwotICAgIHZvaWQg
ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJik7Ci0gICAgdm9pZCByZWVucXVldWVDdXJy
ZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpOworICAgIHZvaWQgcHJvY2Vzc05ld1ZpZGVvRnJhbWUo
VmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEsIFNlY29uZHMpOworICAgIHZvaWQg
ZW5xdWV1ZVZpZGVvRnJhbWUoVmlkZW9GcmFtZSYpOworICAgIHZvaWQgcmVlbnF1ZXVlQ3VycmVu
dFZpZGVvRnJhbWVJZk5lZWRlZCgpOwogICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5S
ZWFkeUZvclZpZGVvRGF0YSgpOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKQEAgLTIxMSw4ICsyMTEsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92
ZXJyaWRlIHsgfTsKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgb3ZlcnJpZGU7CiAKLSAgICAvLyBSZWFsdGltZU1lZGlhU291Y2U6OlZpZGVvU2Ft
cGxlT2JzZXJ2ZXIKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgLy8gUmVhbHRpbWVNZWRpYVNvdWNl
OjpWaWRlb0ZyYW1lT2JzZXJ2ZXIKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9G
cmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogCiAgICAgUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+IGNyZWF0ZVZpZGVvRnVsbHNjcmVlbkxheWVyKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBw
cml2YXRlOgogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjZ0ltYWdlOwotICAgICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IG1lZGlhU2FtcGxlOwor
ICAgICAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdmlkZW9GcmFtZTsKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IHBpeGVsQnVmZmVyQ29uZm9ybWVyOwogICAg
IH07CiAgICAgQ3VycmVudEZyYW1lUGFpbnRlciBtX2ltYWdlUGFpbnRlcjsKQEAgLTI2MCw3ICsy
NjAsNyBAQCBwcml2YXRlOgogICAgIC8vIFdyaXR0ZW4gb24gbWFpbiB0aHJlYWQsIHJlYWQgb24g
c2FtcGxlIHRocmVhZC4KICAgICBib29sIG1fY2FuRW5xdWV1ZURpc3BsYXlMYXllciB7IGZhbHNl
IH07CiAgICAgLy8gVXNlZCBvbiBzYW1wbGUgdGhyZWFkLgotICAgIE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uIG1fdmlkZW9Sb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lIH07CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgVmlkZW9G
cmFtZTo6Um90YXRpb246Ok5vbmUgfTsKICAgICBib29sIG1fdmlkZW9NaXJyb3JlZCB7IGZhbHNl
IH07CiAKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKQEAgLTI3Miw4ICsyNzIsOCBA
QCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPFdlYlJvb3RTYW1wbGVCdWZmZXJCb3VuZHNDaGFu
Z2VMaXN0ZW5lcj4gbV9ib3VuZHNDaGFuZ2VMaXN0ZW5lcjsKIAotICAgIExvY2sgbV9jdXJyZW50
VmlkZW9TYW1wbGVMb2NrOwotICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbV9jdXJyZW50VmlkZW9T
YW1wbGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2spOworICAg
IExvY2sgbV9jdXJyZW50VmlkZW9GcmFtZUxvY2s7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+IG1f
Y3VycmVudFZpZGVvRnJhbWUgV1RGX0dVQVJERURfQllfTE9DSyhtX2N1cnJlbnRWaWRlb0ZyYW1l
TG9jayk7CiAKICAgICBib29sIG1fcGxheWluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX211dGVk
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA0ZGQ4MWJhYWY5NTg5
MDVlNmFiOTY5MjFmYmZkY2Q1N2RkMGQyMDQzLi5lNDY0NmQ2YjNkYzU4Njc5MWI1YmZiMWQzZGFj
YTE0NWMxZGQyYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0zMyw3ICszMyw2
IEBACiAjaW1wb3J0ICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKLSNpbXBvcnQgIk1lZGlhU2FtcGxl
QVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLmgiCiAjaW1wb3J0
ICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNpbXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yu
aCIKQEAgLTE2MCw3ICsxNTksNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogICAgICAgICB0cmFj
ay0+c3RyZWFtVHJhY2soKS5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAKICAgICBpZiAobV9hY3Rp
dmVWaWRlb1RyYWNrKQotICAgICAgICBtX2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRyYWNrKCku
c291cmNlKCkucmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1fYWN0
aXZlVmlkZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2Jz
ZXJ2ZXIoKnRoaXMpOwogCiAgICAgW21fYm91bmRzQ2hhbmdlTGlzdGVuZXIgaW52YWxpZGF0ZV07
CiAKQEAgLTIyOSwyOSArMjI4LDI5IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAjcHJhZ21h
IG1hcmsgLQogI3ByYWdtYSBtYXJrIEFWU2FtcGxlQnVmZmVyIE1ldGhvZHMKIAotc3RhdGljIGlu
bGluZSBDR0FmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2Ft
cGxlJiBzYW1wbGUpCitzdGF0aWMgaW5saW5lIENHQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNm
b3JtYXRpb25NYXRyaXgoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkKIHsKLSAgICBhdXRvIHNpemUg
PSBzYW1wbGUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgIGF1dG8gc2l6ZSA9IHZpZGVvRnJhbWUu
cHJlc2VudGF0aW9uU2l6ZSgpOwogICAgIHNpemVfdCB3aWR0aCA9IHN0YXRpY19jYXN0PHNpemVf
dD4oc2l6ZS53aWR0aCgpKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzaXplLmhlaWdodCgpKTsKICAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpCiAgICAgICAgIHJl
dHVybiBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwogCi0gICAgYXV0byB2aWRlb1RyYW5zZm9y
bSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVJvdGF0aW9uKHN0YXRpY19jYXN0PGludD4oc2FtcGxl
LnZpZGVvUm90YXRpb24oKSkgKiBNX1BJIC8gMTgwKTsKLSAgICBpZiAoc2FtcGxlLnZpZGVvTWly
cm9yZWQoKSkKKyAgICBhdXRvIHZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtl
Um90YXRpb24oc3RhdGljX2Nhc3Q8aW50Pih2aWRlb0ZyYW1lLnJvdGF0aW9uKCkpICogTV9QSSAv
IDE4MCk7CisgICAgaWYgKHZpZGVvRnJhbWUuaXNNaXJyb3JlZCgpKQogICAgICAgICB2aWRlb1Ry
YW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtU2NhbGUodmlkZW9UcmFuc2Zvcm0sIC0xLCAxKTsK
IAogICAgIHJldHVybiB2aWRlb1RyYW5zZm9ybTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBz
YW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1l
JiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQogewogICAgIGF1
dG8gcHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVw
b2NoKCk7Ci0gICAgcHJvY2Vzc05ld1ZpZGVvU2FtcGxlKHNhbXBsZSwgbWV0YWRhdGEsIHByZXNl
bnRhdGlvblRpbWUpOwotICAgIGVucXVldWVWaWRlb1NhbXBsZShzYW1wbGUpOworICAgIHByb2Nl
c3NOZXdWaWRlb0ZyYW1lKHZpZGVvRnJhbWUsIG1ldGFkYXRhLCBwcmVzZW50YXRpb25UaW1lKTsK
KyAgICBlbnF1ZXVlVmlkZW9GcmFtZSh2aWRlb0ZyYW1lKTsKIH0KIAotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZShNZWRpYVNhbXBs
ZSYgc2FtcGxlKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVu
cXVldWVWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUpCiB7CiAgICAgaWYgKCFtX2lz
UGFnZVZpc2libGUgfHwgIW1faXNWaXNpYmxlSW5WaWV3UG9ydCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjYzLDUyICsyNjIsNTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmVucXVldWVWaWRlb1NhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGwKICAgICBpZiAoIW1f
Y2FuRW5xdWV1ZURpc3BsYXlMYXllciB8fCAhbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwg
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmRpZEZhaWwoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0gbV92aWRlb1JvdGF0aW9uIHx8IHNh
bXBsZS52aWRlb01pcnJvcmVkKCkgIT0gbV92aWRlb01pcnJvcmVkKSB7Ci0gICAgICAgIG1fdmlk
ZW9Sb3RhdGlvbiA9IHNhbXBsZS52aWRlb1JvdGF0aW9uKCk7Ci0gICAgICAgIG1fdmlkZW9NaXJy
b3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVkKCk7CisgICAgaWYgKHZpZGVvRnJhbWUucm90YXRp
b24oKSAhPSBtX3ZpZGVvUm90YXRpb24gfHwgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCkgIT0gbV92
aWRlb01pcnJvcmVkKSB7CisgICAgICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHZpZGVvRnJhbWUucm90
YXRpb24oKTsKKyAgICAgICAgbV92aWRlb01pcnJvcmVkID0gdmlkZW9GcmFtZS5pc01pcnJvcmVk
KCk7CiAgICAgICAgIG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyID0gdHJ1ZTsKICAgICB9CiAg
ICAgaWYgKG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyKSB7Ci0gICAgICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLT51cGRhdGVBZmZpbmVUcmFuc2Zvcm0odmlkZW9UcmFuc2Zvcm1hdGlv
bk1hdHJpeChzYW1wbGUpKTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVw
ZGF0ZUFmZmluZVRyYW5zZm9ybSh2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHZpZGVvRnJhbWUp
KTsKICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUJvdW5kc0FuZFBv
c2l0aW9uKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5ZXIoKS5ib3VuZHMsIG1f
dmlkZW9Sb3RhdGlvbik7CiAgICAgICAgIG1fc2hvdWxkVXBkYXRlRGlzcGxheUxheWVyID0gZmFs
c2U7CiAgICAgfQogCi0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1w
bGUoc2FtcGxlKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5xdWV1ZVZpZGVv
RnJhbWUodmlkZW9GcmFtZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpyZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVlbnF1ZXVlQ3VycmVudFZpZGVv
RnJhbWVJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKCFtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sudHJ5
TG9jaygpKQorICAgIGlmICghbV9jdXJyZW50VmlkZW9GcmFtZUxvY2sudHJ5TG9jaygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgTG9ja2VyIGxvY2tlciB7IEFkb3B0TG9jaywgbV9jdXJyZW50Vmlk
ZW9TYW1wbGVMb2NrIH07CisgICAgTG9ja2VyIGxvY2tlciB7IEFkb3B0TG9jaywgbV9jdXJyZW50
VmlkZW9GcmFtZUxvY2sgfTsKIAotICAgIGlmICghbV9jdXJyZW50VmlkZW9TYW1wbGUgJiYgIW1f
aW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKQorICAgIGlmICghbV9jdXJyZW50VmlkZW9GcmFtZSAm
JiAhbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW5x
dWV1ZVZpZGVvU2FtcGxlKG1fY3VycmVudFZpZGVvU2FtcGxlID8gKm1fY3VycmVudFZpZGVvU2Ft
cGxlIDogKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICBlbnF1ZXVlVmlkZW9GcmFt
ZShtX2N1cnJlbnRWaWRlb0ZyYW1lID8gKm1fY3VycmVudFZpZGVvRnJhbWUgOiAqbV9pbWFnZVBh
aW50ZXIudmlkZW9GcmFtZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSwgU2Vjb25kcyBwcmVzZW50YXRpb25UaW1lKQor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByb2Nlc3NOZXdWaWRl
b0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0
YWRhdGEsIFNlY29uZHMgcHJlc2VudGF0aW9uVGltZSkKIHsKICAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKSB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2N1cnJlbnRW
aWRlb1NhbXBsZUxvY2sgfTsKLSAgICAgICAgICAgIG1fY3VycmVudFZpZGVvU2FtcGxlID0gJnNh
bXBsZTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2N1cnJlbnRWaWRlb0ZyYW1lTG9j
ayB9OworICAgICAgICAgICAgbV9jdXJyZW50VmlkZW9GcmFtZSA9ICZ2aWRlb0ZyYW1lOwogICAg
ICAgICB9CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIG1ldGFkYXRhLCBwcmVzZW50YXRpb25UaW1lXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxlOworICAgICAgICAgICAgUmVmUHRyPFZpZGVvRnJh
bWU+IHZpZGVvRnJhbWU7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IHdlYWtUaGlzLT5tX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sgfTsKLSAgICAgICAgICAg
ICAgICBzYW1wbGUgPSBXVEZNb3ZlKHdlYWtUaGlzLT5tX2N1cnJlbnRWaWRlb1NhbXBsZSk7Cisg
ICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHdlYWtUaGlzLT5tX2N1cnJlbnRWaWRlb0Zy
YW1lTG9jayB9OworICAgICAgICAgICAgICAgIHZpZGVvRnJhbWUgPSBXVEZNb3ZlKHdlYWtUaGlz
LT5tX2N1cnJlbnRWaWRlb0ZyYW1lKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgh
c2FtcGxlKQorICAgICAgICAgICAgaWYgKCF2aWRlb0ZyYW1lKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgd2Vha1RoaXMtPnByb2Nlc3NOZXdWaWRlb1NhbXBsZSgqc2Ft
cGxlLCBtZXRhZGF0YSwgcHJlc2VudGF0aW9uVGltZSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+
cHJvY2Vzc05ld1ZpZGVvRnJhbWUoKnZpZGVvRnJhbWUsIG1ldGFkYXRhLCBwcmVzZW50YXRpb25U
aW1lKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMTYsMTYgKzMx
NSwxNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJvY2Vz
c05ld1ZpZGVvU2FtcGxlKE1lZGlhU2FtcGxlJiBzYQogICAgIGlmICghbV9hY3RpdmVWaWRlb1Ry
YWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1faW1hZ2VQYWludGVyLm1lZGlhU2Ft
cGxlIHx8IG1fZGlzcGxheU1vZGUgIT0gUGF1c2VkSW1hZ2UpIHsKLSAgICAgICAgbV9pbWFnZVBh
aW50ZXIubWVkaWFTYW1wbGUgPSAmc2FtcGxlOworICAgIGlmICghbV9pbWFnZVBhaW50ZXIudmlk
ZW9GcmFtZSB8fCBtX2Rpc3BsYXlNb2RlICE9IFBhdXNlZEltYWdlKSB7CisgICAgICAgIG1faW1h
Z2VQYWludGVyLnZpZGVvRnJhbWUgPSAmdmlkZW9GcmFtZTsKICAgICAgICAgbV9pbWFnZVBhaW50
ZXIuY2dJbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChtX3JlYWR5U3RhdGUgPCBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUVub3VnaERhdGEpCiAgICAgICAgICAgICB1cGRhdGVSZWFk
eVN0YXRlKCk7CiAgICAgfQogCiAgICAgbV9wcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9u
VGltZTsKLSAgICBtX3ZpZGVvRnJhbWVTaXplID0gc2FtcGxlLnByZXNlbnRhdGlvblNpemUoKTsK
LSAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6TGVmdCB8fCBzYW1wbGUudmlkZW9Sb3RhdGlvbigpID09IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpSaWdodCkKKyAgICBtX3ZpZGVvRnJhbWVTaXplID0gdmlkZW9GcmFtZS5wcmVz
ZW50YXRpb25TaXplKCk7CisgICAgaWYgKHZpZGVvRnJhbWUucm90YXRpb24oKSA9PSBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6TGVmdCB8fCB2aWRlb0ZyYW1lLnJvdGF0aW9uKCkgPT0gVmlkZW9GcmFt
ZTo6Um90YXRpb246OlJpZ2h0KQogICAgICAgICBtX3ZpZGVvRnJhbWVTaXplID0geyBtX3ZpZGVv
RnJhbWVTaXplLmhlaWdodCgpLCBtX3ZpZGVvRnJhbWVTaXplLndpZHRoKCkgfTsKICAgICBtX3Nh
bXBsZU1ldGFkYXRhID0gbWV0YWRhdGE7CiAgICAgKyttX3NhbXBsZUNvdW50OwpAQCAtMzYwLDgg
KzM1OSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7CiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5kaWRGYWlsKCkpIHsKICAgICAg
ICAgZmx1c2hSZW5kZXJlcnMoKTsKLSAgICAgICAgaWYgKG1faW1hZ2VQYWludGVyLm1lZGlhU2Ft
cGxlKQotICAgICAgICAgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKCptX2ltYWdlUGFpbnRlci5tZWRp
YVNhbXBsZSk7CisgICAgICAgIGlmIChtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQorICAgICAg
ICAgICAgZW5xdWV1ZVZpZGVvRnJhbWUoKm1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpOwogICAg
ICAgICB1cGRhdGVEaXNwbGF5TW9kZSgpOwogICAgIH0KIH0KQEAgLTU2OSw3ICs1NjgsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxheSgpCiAgICAgaWYg
KG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci0+cGxheSgpOwogICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7Ci0gICAgcmVlbnF1ZXVl
Q3VycmVudFZpZGVvU2FtcGxlSWZOZWVkZWQoKTsKKyAgICByZWVucXVldWVDdXJyZW50VmlkZW9G
cmFtZUlmTmVlZGVkKCk7CiAKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpc10gewogICAg
ICAgICB1cGRhdGVSZWFkeVN0YXRlKCk7CkBAIC02NDEsNyArNjQwLDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFBhZ2VJc1Zpc2libGUoYm9vbCBpc1Zp
c2libGUpCiAKICAgICBtX2lzUGFnZVZpc2libGUgPSBpc1Zpc2libGU7CiAgICAgZmx1c2hSZW5k
ZXJlcnMoKTsKLSAgICByZWVucXVldWVDdXJyZW50VmlkZW9TYW1wbGVJZk5lZWRlZCgpOworICAg
IHJlZW5xdWV1ZUN1cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpc2libGVGb3JDYW52YXMoYm9vbCkK
QEAgLTY4MSw3ICs2ODAsNyBAQCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnRSZWFkeVN0YXRlKAogICAgIGlmICghbV9t
ZWRpYVN0cmVhbVByaXZhdGUgfHwgIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5hY3RpdmUoKSB8fCAh
bV9tZWRpYVN0cmVhbVByaXZhdGUtPmhhc1RyYWNrcygpKQogICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogCi0gICAgYm9vbCB3YWl0aW5nRm9ySW1h
Z2UgPSBhY3RpdmVWaWRlb1RyYWNrKCkgJiYgIW1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlOwor
ICAgIGJvb2wgd2FpdGluZ0ZvckltYWdlID0gYWN0aXZlVmlkZW9UcmFjaygpICYmICFtX2ltYWdl
UGFpbnRlci52aWRlb0ZyYW1lOwogICAgIGlmICh3YWl0aW5nRm9ySW1hZ2UgJiYgKCFtX2hhdmVT
ZWVuTWV0YWRhdGEgfHwgbV93YWl0aW5nRm9yRmlyc3RJbWFnZSkpCiAgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiAKQEAgLTc0MCw3ICs3MzksNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVSZW5k
ZXJpbmdNb2RlQ2hhbmdlZCgpCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRhc2soW3RoaXNdIHsKICAg
ICAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPnJlbmRlcmluZ01vZGVD
aGFuZ2VkKCk7Ci0gICAgICAgIHJlZW5xdWV1ZUN1cnJlbnRWaWRlb1NhbXBsZUlmTmVlZGVkKCk7
CisgICAgICAgIHJlZW5xdWV1ZUN1cnJlbnRWaWRlb0ZyYW1lSWZOZWVkZWQoKTsKICAgICB9KTsK
IH0KIApAQCAtODk0LDcgKzg5Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpjaGVja1NlbGVjdGVkVmlkZW9UcmFjaygpCiAKICAgICBpZiAobV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpIHsKICAgICAgICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCi0g
ICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Y2xlYXJFbnF1ZXVlZFNhbXBs
ZXMoKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5jbGVhclZpZGVv
RnJhbWVzKCk7CiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVEaXNw
bGF5TW9kZShoaWRlVmlkZW9MYXllciB8fCBtX2Rpc3BsYXlNb2RlIDwgUGF1c2VkSW1hZ2UsIGhp
ZGVSb290TGF5ZXIoKSk7CiAgICAgfQogCkBAIC05MDIsMTEgKzkwMSwxMSBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2hlY2tTZWxlY3RlZFZpZGVvVHJhY2so
KQogCiAgICAgaWYgKG9sZFZpZGVvVHJhY2sgIT0gbV9hY3RpdmVWaWRlb1RyYWNrKSB7CiAgICAg
ICAgIGlmIChvbGRWaWRlb1RyYWNrKQotICAgICAgICAgICAgb2xkVmlkZW9UcmFjay0+c3RyZWFt
VHJhY2soKS5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICAg
ICAgICAgIG9sZFZpZGVvVHJhY2stPnN0cmVhbVRyYWNrKCkuc291cmNlKCkucmVtb3ZlVmlkZW9G
cmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgaWYgKG1fYWN0aXZlVmlkZW9UcmFjaykgewog
ICAgICAgICAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICYmIG1fYWN0aXZlVmlk
ZW9UcmFjay0+c3RyZWFtVHJhY2soKS5zb3VyY2UoKS5pc0NhcHR1cmVTb3VyY2UoKSkKICAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+c2V0UmVuZGVyUG9saWN5KFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6UmVuZGVyUG9saWN5OjpJbW1lZGlhdGVseSk7Ci0gICAg
ICAgICAgICBtX2FjdGl2ZVZpZGVvVHJhY2stPnN0cmVhbVRyYWNrKCkuc291cmNlKCkuYWRkVmlk
ZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX2FjdGl2ZVZpZGVvVHJhY2st
PnN0cmVhbVRyYWNrKCkuc291cmNlKCkuYWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlzKTsKICAg
ICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIm9ic2VydmluZyB2aWRlbyBzb3Vy
Y2UgIiwgbV9hY3RpdmVWaWRlb1RyYWNrLT5zdHJlYW1UcmFjaygpLmxvZ0lkZW50aWZpZXIoKSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC05ODcsNyArOTg2LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZUN1cnJlbnRGcmFtZUltYWdlKCkKIHsKLSAgICBpZiAobV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8
fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgaWYgKG1faW1hZ2VQYWludGVyLmNn
SW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCkBAIC05OTcsNyAr
OTk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byBwaXhlbEJ1ZmZlciA9
IG1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlLT5waXhlbEJ1ZmZlcigpKQorICAgIGlmIChhdXRv
IHBpeGVsQnVmZmVyID0gbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSkK
ICAgICAgICAgbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVm
ZmVyKHBpeGVsQnVmZmVyKSk7CiB9CiAKQEAgLTEwMDYsNyArMTAwNSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChHcmFwaGljc0NvCiAgICAgaWYgKG1fZGlzcGxheU1vZGUgPT0gTm9uZSB8fCAhbWV0YURhdGFB
dmFpbGFibGUoKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKG1fZGlzcGxheU1vZGUgIT0gUGFpbnRJdEJsYWNrICYmIG1faW1hZ2VQYWlu
dGVyLm1lZGlhU2FtcGxlKQorICAgIGlmIChtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjayAm
JiBtX2ltYWdlUGFpbnRlci52aWRlb0ZyYW1lKQogICAgICAgICB1cGRhdGVDdXJyZW50RnJhbWVJ
bWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQpOwpAQCAtMTAxNSwxMiArMTAxNCwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX2ltYWdlUGFpbnRlci5jZ0ltYWdlIHx8
ICFtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAgICBpZiAoIW1faW1hZ2VQYWludGVyLmNn
SW1hZ2UgfHwgIW1faW1hZ2VQYWludGVyLnZpZGVvRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8mIGltYWdlID0gbV9pbWFnZVBhaW50ZXIuY2dJbWFnZTsKICAgICBGbG9hdFJlY3Qg
aW1hZ2VSZWN0IHsgRmxvYXRQb2ludDo6emVybygpLCBpbWFnZS0+c2l6ZSgpIH07Ci0gICAgQWZm
aW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgq
bV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOworICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1Ry
YW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQYWludGVyLnZpZGVv
RnJhbWUpOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmFsdWVPckRlZmF1
bHQodmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsKICAgICBjb250
ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJl
Y3QpOwpAQCAtMTAzMiwxMiArMTAzMSw3IEBAIFJlZlB0cjxWaWRlb0ZyYW1lPiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvRnJhbWVGb3JDdXJyZW50VGltCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChtX2Rpc3BsYXlNb2RlID09IFBhaW50SXRCbGFj
aykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFtX2ltYWdlUGFpbnRlci5tZWRp
YVNhbXBsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKGlzPFZpZGVvRnJhbWU+
KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkpCi0gICAgICAgIHJldHVybiAmZG93bmNhc3Q8
VmlkZW9GcmFtZT4oKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKLSAgICBBU1NFUlQoaXM8
TWVkaWFTYW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpKTsKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8TWVkaWFTYW1wbGVBVkZPYmpDPigqbV9pbWFnZVBhaW50ZXIubWVkaWFT
YW1wbGUpLnZpZGVvRnJhbWUoKTsKKyAgICByZXR1cm4gbV9pbWFnZVBhaW50ZXIudmlkZW9GcmFt
ZTsKIH0KIAogRGVzdGluYXRpb25Db2xvclNwYWNlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6Y29sb3JTcGFjZSgpCkBAIC0xMTExLDcgKzExMDUsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2soRnVu
Y3Rpb248dm9pZCAoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OkN1cnJlbnRGcmFtZVBhaW50ZXI6OnJlc2V0KCkKIHsKICAgICBjZ0ltYWdlID0gbnVsbHB0cjsK
LSAgICBtZWRpYVNhbXBsZSA9IG51bGxwdHI7CisgICAgdmlkZW9GcmFtZSA9IG51bGxwdHI7CiAg
ICAgcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDVkY2ZjMDJkYTFiOGIzZmMxNjQ2Y2Iy
MjFmOTEyZjEyYmQxZWQ5ZjIuLjZjNWFlNTMzYjg3ZjAwNTM0YTdlZWU0ZWRhZTg1YWNhZjA2ZTIz
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC02
NSw5ICs2NSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8UmVmUHRy
PE1lZGlhU2FtcGxlPiwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGlt
ZSYgcHJlc2VudGF0aW9uVGltZSwgVXNlRW5kVGltZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgVmlkZW9Sb3RhdGlvbiB2aWRlb1JvdGF0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yb3RhdGlvbjsgfQotICAgIGJvb2wgdmlkZW9NaXJyb3JlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWlycm9yZWQ7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB1aW50
MzJfdCB2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CisgICAgVmlkZW9Sb3RhdGlvbiBy
b3RhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcm90YXRpb247IH0KKyAgICBib29s
IGlzTWlycm9yZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21pcnJvcmVkOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgdWludDMyX3QgcGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyKCkgY29uc3QgZmluYWw7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9j
ZXNzSWRlbnRpdHkmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1w
bGVBVkZPYmpDLm1tCmluZGV4IGEwNDU4NzBlZDdlNjg3ZDIxZjMzNzkxNDBiMjgwNDY2ZWEzMWY5
MjguLjEzMTFiMzM3MThhODRlMzNkMTM5MzExMzAyZDA0NzVmZDk2M2M4ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTExMCw3ICsxMTAsNyBA
QCBQbGF0Zm9ybVNhbXBsZSBNZWRpYVNhbXBsZUFWRk9iakM6OnBsYXRmb3JtU2FtcGxlKCkgY29u
c3QKICAgICByZXR1cm4gc2FtcGxlOwogfQogCi11aW50MzJfdCBNZWRpYVNhbXBsZUFWRk9iakM6
OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAordWludDMyX3QgTWVkaWFTYW1wbGVBVkZPYmpDOjpw
aXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0
PENWUGl4ZWxCdWZmZXJSZWY+KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3Nh
bXBsZS5nZXQoKSkpOwogICAgIHJldHVybiBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBl
KHBpeGVsQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDgyY2Vj
YmE5NGIxNDdhMDhjOWJlY2EwMTM4ZDViY2RlOTU0ODhlOTEuLjE1NzNlMTY2MDQzMTk2NmZhZGU0
MzJkOWI5MDRiOWRjMTAzMTM3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpA
QCAtODAxLDcgKzgwMSw3IEBAIFJlZlB0cjxWaWRlb0ZyYW1lPiBHcmFwaGljc0NvbnRleHRHTENv
Y29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9WaWRlb0ZyYW1lKCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKG1fcmVzb3VyY2VPd25lcikKICAgICAgICAgc2V0T3duZXJzaGlw
SWRlbnRpdHlGb3JDVlBpeGVsQnVmZmVyKG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIuZ2V0KCksIG1f
cmVzb3VyY2VPd25lcik7Ci0gICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHsgfSwgZmFs
c2UsIFZpZGVvRnJhbWU6OlZpZGVvUm90YXRpb246Ok5vbmUsIFdURk1vdmUobWVkaWFTYW1wbGVQ
aXhlbEJ1ZmZlcikpOworICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh7IH0sIGZhbHNl
LCBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZSwgV1RGTW92ZShtZWRpYVNhbXBsZVBpeGVsQnVm
ZmVyKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCmluZGV4IGQzODkxOTgx
ZTg1ZTgwM2RmODRlNTA1NzBiMmQ0MGFkNDJlYzE1ODcuLjczOTI0NDZhMTA1MjAyMWQ4OWQwNGVj
ZmJiNGZlY2JmYWQ0YjY3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKQEAgLTM0LDcgKzM0
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBv
b2xSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFTYW1wbGU7CitjbGFz
cyBWaWRlb0ZyYW1lOwogCiBjbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZpbmFsIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
IGNvbnN0IEZsb2F0U2l6ZSYgcm90YXRlZFNpemUoKSB7IHJldHVybiBtX3JvdGF0ZWRTaXplOyB9
CiAKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRlKENWUGl4ZWxCdWZmZXJS
ZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3Rh
dGUoTWVkaWFTYW1wbGUmLCBjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBJc0NHSW1hZ2VDb21w
YXRpYmxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
cm90YXRlKFZpZGVvRnJhbWUmLCBjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBJc0NHSW1hZ2VD
b21wYXRpYmxlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgUm90YXRp
b25Qcm9wZXJ0aWVzJiwgRmxvYXRTaXplLCBJc0NHSW1hZ2VDb21wYXRpYmxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNz
aW9uVlQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0
aW9uU2Vzc2lvblZULm1tCmluZGV4IDNlYWIwNjg5ZTkwNDUxYWQ0NThjZWYzODk2OTRmZjllNjli
MDZmNzYuLmEyNmFmODFkNjE5NDI2YWFlZTk3Mzc5MWYzZjA1MjhhOTM3N2YzNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNz
aW9uVlQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VS
b3RhdGlvblNlc3Npb25WVC5tbQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCAiQWZmaW5lVHJh
bnNmb3JtLmgiCiAjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgot
I2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKKyNpbXBvcnQgIlZpZGVvRnJhbWUuaCIKIAogI2ltcG9y
dCAiQ29yZVZpZGVvU29mdExpbmsuaCIKICNpbXBvcnQgIlZpZGVvVG9vbGJveFNvZnRMaW5rLmgi
CkBAIC0xMjcsNyArMTI3LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlUm90
YXRpb25TZXNzaW9uVlQ6OnJvdGF0ZShDVlBpeGVsQnVmZmVyUmVmIHBpeGUKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1SZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6cm90YXRlKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lLCBjb25zdCBSb3RhdGlvblBy
b3BlcnRpZXMmIHJvdGF0aW9uLCBJc0NHSW1hZ2VDb21wYXRpYmxlIGNnSW1hZ2VDb21wYXRpYmxl
KQorUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJv
dGF0ZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmIHJv
dGF0aW9uLCBJc0NHSW1hZ2VDb21wYXRpYmxlIGNnSW1hZ2VDb21wYXRpYmxlKQogewogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSB2aWRlb0ZyYW1lLnBpeGVsQnVmZmVyKCk7CiAgICAgQVNTRVJUKHBp
eGVsQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQuaAppbmRleCBiYTgxMDRkNjk4MTRiNGQ4
MWEyYzU5NDA5ZTVlMmRmZjdhMzU0OWM3Li5kMjA1MTM0MGE4YTE1NDk3MzQzNGJmZmJkMjhiZjRm
Njc1ZWU5MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5oCkBAIC00NSwxMiArNDUsMTIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ+KG5ldyBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUKHBpeGVsRm9ybWF0LCBzaG91bGRVc2VJ
T1N1cmZhY2UpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGNvbnZlcnRWaWRl
b0ZyYW1lKE1lZGlhU2FtcGxlJiwgY29uc3QgSW50U2l6ZSYpOwotICAgIFJlZlB0cjxNZWRpYVNh
bXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29u
c3QgSW50U2l6ZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7Ci0gICAgUmVmUHRyPE1l
ZGlhU2FtcGxlPiBjcmVhdGVNZWRpYVNhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgSW50U2l6ZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uID0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSk7Cisg
ICAgUmVmUHRyPFZpZGVvRnJhbWU+IGNvbnZlcnRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmLCBjb25z
dCBJbnRTaXplJik7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+IGNyZWF0ZVZpZGVvRnJhbWUoQ0dJ
bWFnZVJlZiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgSW50U2l6ZSYsIFZpZGVvRnJhbWU6OlJv
dGF0aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxz
ZSk7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+IGNyZWF0ZVZpZGVvRnJhbWUoQ01TYW1wbGVCdWZm
ZXJSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBWaWRlb0ZyYW1lOjpSb3Rh
dGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFsc2Up
OwogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxNZWRpYVNhbXBsZT4gY3JlYXRlTWVkaWFTYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBJbnRTaXplJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gPSBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8VmlkZW9GcmFtZT4gY3JlYXRlVmlkZW9GcmFtZShJT1N1
cmZhY2VSZWYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IEludFNpemUmLCBWaWRlb0ZyYW1lOjpS
b3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFs
c2UpOwogI2VuZGlmCiAKICAgICB1aW50MzJfdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGl4ZWxGb3JtYXQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCmluZGV4IDhiNmQ3OTQ1
NWFiNzMzMmMzNDM5OTI4MTQ5MzNjNjA1Zjk3OWNjNmQuLmE3MzU4NmQ5ZDY5Y2M1ZjE2ZTk5MzE1
NmExN2MwZGRkMmZiZTJiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQpAQCAtMjU1LDcg
KzI1NSw3IEBAIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVDo6Y3JlYXRlQ01TYW1wbGVCdWZmZXIoSU9TdXJmCiB9CiAjZW5kaWYKIAotUmVmUHRyPE1l
ZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0VmlkZW9GcmFtZShNZWRp
YVNhbXBsZSYgdmlkZW9GcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1JlZlB0cjxWaWRlb0Zy
YW1lPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjb252ZXJ0VmlkZW9GcmFtZShWaWRlb0ZyYW1l
JiB2aWRlb0ZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGlmIChzaXplID09IGV4
cGFuZGVkSW50U2l6ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKSkpCiAgICAgICAgIHJl
dHVybiAmdmlkZW9GcmFtZTsKQEAgLTI2NCwxMSArMjY0LDExIEBAIFJlZlB0cjxNZWRpYVNhbXBs
ZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y29udmVydFZpZGVvRnJhbWUoTWVkaWFTYW1wbGUm
IHZpZGVvCiAgICAgaWYgKCFyZXNpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZSh2aWRlb0ZyYW1lLnByZXNlbnRhdGlv
blRpbWUoKSwgdmlkZW9GcmFtZS52aWRlb01pcnJvcmVkKCksIHZpZGVvRnJhbWUudmlkZW9Sb3Rh
dGlvbigpLCBXVEZNb3ZlKHJlc2l6ZWRCdWZmZXIpKTsKKyAgICByZXR1cm4gVmlkZW9GcmFtZUNW
OjpjcmVhdGUodmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIHZpZGVvRnJhbWUuaXNNaXJy
b3JlZCgpLCB2aWRlb0ZyYW1lLnJvdGF0aW9uKCksIFdURk1vdmUocmVzaXplZEJ1ZmZlcikpOwog
fQogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFn
ZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVNZWRpYVNhbXBsZShJT1N1cmZhY2VSZWYgc3VyZmFj
ZSwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKK1JlZlB0cjxW
aWRlb0ZyYW1lPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVWaWRlb0ZyYW1lKElPU3Vy
ZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IEludFNp
emUmIHNpemUsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQog
ewogICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQ01TYW1wbGVCdWZmZXIoc3VyZmFjZSwg
c2FtcGxlVGltZSwgc2l6ZSk7CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCkBAIC0yNzgsNyArMjc4
LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVN
ZWRpYVNhbXBsZShJT1N1cmZhY2VSZWYgc3VyZmEKIH0KICNlbmRpZgogCi1SZWZQdHI8TWVkaWFT
YW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxlKENHSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitS
ZWZQdHI8VmlkZW9GcmFtZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRlVmlkZW9GcmFt
ZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUsIGNvbnN0IElu
dFNpemUmIHNpemUsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVk
KQogewogICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQ01TYW1wbGVCdWZmZXIoaW1hZ2Us
IHNhbXBsZVRpbWUsIHNpemUpOwogICAgIGlmICghc2FtcGxlQnVmZmVyKQpAQCAtMjg3LDcgKzI4
Nyw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3JlYXRl
TWVkaWFTYW1wbGUoQ0dJbWFnZVJlZiBpbWFnZSwKICAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpj
cmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpLCBtaXJyb3JlZCwgcm90YXRpb24pOwogfQogCi1SZWZQ
dHI8TWVkaWFTYW1wbGU+IEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ6OmNyZWF0ZU1lZGlhU2FtcGxl
KENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciwgY29uc3QgTWVkaWFUaW1lJiBzYW1wbGVUaW1lLCBj
b25zdCBJbnRTaXplJiBzaXplLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwg
Ym9vbCBtaXJyb3JlZCkKK1JlZlB0cjxWaWRlb0ZyYW1lPiBJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpjcmVhdGVWaWRlb0ZyYW1lKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlciwgY29uc3QgTWVkaWFU
aW1lJiBzYW1wbGVUaW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBWaWRlb0ZyYW1lOjpSb3RhdGlv
biByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKIHsKICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNv
bnZlcnRDTVNhbXBsZUJ1ZmZlcihidWZmZXIsIHNpemUsICZzYW1wbGVUaW1lKTsKICAgICBpZiAo
IXNhbXBsZUJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1ZpZGVvRnJhbWVDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVmlkZW9GcmFtZUNWLmgKaW5kZXggOTNhM2U3MTU3ZTYxZjUwOTEwNTJiZjNmNWY0MDRjZjA5
MjY4MWM4NC4uMGNkMmUxMDliYzc4NjAzNWE1YWRmMTk2NGMxY2UzOWRmMWU2OWI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9GcmFtZUNWLmgK
QEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCi11c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZm
ZXIqOwordXNpbmcgQ01TYW1wbGVCdWZmZXJSZWYgPSBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZm
ZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDggKzM5LDggQEAgY2xhc3MgUGl4
ZWxCdWZmZXI7CiAKIGNsYXNzIFZpZGVvRnJhbWVDViA6IHB1YmxpYyBWaWRlb0ZyYW1lIHsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFZpZGVvRnJhbWVDVj4gY3JlYXRl
KE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRp
b24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFZpZGVvRnJhbWVDVj4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmLCBib29sIGlz
TWlycm9yZWQsIFZpZGVvUm90YXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
VmlkZW9GcmFtZUNWPiBjcmVhdGUoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNN
aXJyb3JlZCwgUm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFZpZGVvRnJhbWVDVj4gY3JlYXRlKENNU2FtcGxlQnVm
ZmVyUmVmLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uKTsKICAgICBzdGF0aWMgUmVmUHRyPFZp
ZGVvRnJhbWVDVj4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5WaWRlb0ZyYW1lQ1YoKTsKIApAQCAtNTIsMjcgKzUyLDI2IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFZpZGVvRnJhbWUgb3ZlcnJpZGVzLgogICAgIFdFQkNPUkVfRVhQT1JUIFdl
YkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWw7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRl
bnRpdHkmKSBmaW5hbDsKICAgICBib29sIGlzQ1YoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWVDVj4gYXNW
aWRlb0ZyYW1lQ1YoKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBWaWRl
b0ZyYW1lQ1YoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgVmlk
ZW9Sb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIFZpZGVvRnJhbWVDVihNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgYm9vbCBpc01p
cnJvcmVkLCBSb3RhdGlvbiwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYpOwogCiAgICAg
Y29uc3QgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fcGl4ZWxCdWZmZXI7CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIFZpZGVvRnJhbWVDVjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBtX3ByZXNlbnRhdGlvblRpbWUg
PDwgbV9pc01pcnJvcmVkIDw8IG1fcm90YXRpb24gPDwgbV9waXhlbEJ1ZmZlcjsKKyAgICBlbmNv
ZGVyIDw8IHByZXNlbnRhdGlvblRpbWUoKSA8PCBpc01pcnJvcmVkKCkgPDwgcm90YXRpb24oKSA8
PCBtX3BpeGVsQnVmZmVyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9w
dGlvbmFsPFJlZlB0cjxWaWRlb0ZyYW1lQ1Y+PiBWaWRlb0ZyYW1lQ1Y6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IGRlY29kZXIudGVtcGxh
dGUgZGVjb2RlPE1lZGlhVGltZT4oKTsKICAgICBhdXRvIGlzTWlycm9yZWQgPSBkZWNvZGVyLnRl
bXBsYXRlIGRlY29kZTxib29sPigpOwotICAgIGF1dG8gcm90YXRpb24gPSBkZWNvZGVyLnRlbXBs
YXRlIGRlY29kZTxWaWRlb1JvdGF0aW9uPigpOworICAgIGF1dG8gcm90YXRpb24gPSBkZWNvZGVy
LnRlbXBsYXRlIGRlY29kZTxSb3RhdGlvbj4oKTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZGVj
b2Rlci50ZW1wbGF0ZSBkZWNvZGU8UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PigpOwogICAg
IGlmICghZGVjb2Rlci5pc1ZhbGlkKCkgfHwgISpwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKQEAgLTgzLDcgKzgyLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gc3RkOjpvcHRpb25hbDxSZWZQdHI8VmlkZW9GcmFtZUNWPj4gVmlkZW9GcmFtZUNWOjpkZWMK
IAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb0ZyYW1lQ1YpCiAg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlZpZGVvRnJhbWUmIHZpZGVvRnJh
bWUpIHsgcmV0dXJuIHZpZGVvRnJhbWUuaXNDVigpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBl
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkgeyByZXR1cm4gaXM8V2Vi
Q29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpICYmIGlzPFdlYkNvcmU6OlZpZGVvRnJhbWVD
Vj4oZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUpKTsgfQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvRnJhbWVDVi5tbQppbmRleCBhYmQ3ZTJmYzg5N2Iw
NzFiYjBiNWZmMzk3NmQ5OWYwYzE5ZTE0NDZjLi5iZmZlMmI0YmQ2YjU1N2EyODc5OGNiMmRlYzEy
YmI5ZDQ4NjNjOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9WaWRlb0ZyYW1lQ1YubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9GcmFtZUNWLm1tCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoQ01TYW1wbGVC
dWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90
YXRpb24pCitSZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShDTVNhbXBsZUJ1
ZmZlclJlZiBzYW1wbGVCdWZmZXIsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24p
CiB7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+
KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGVCdWZmZXIpKTsKICAgICBh
dXRvIHRpbWVTdGFtcCA9IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRPdXRwdXRQcmVzZW50YXRpb25U
aW1lU3RhbXAoc2FtcGxlQnVmZmVyKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVmPFZpZGVvRnJhbWVD
Vj4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBi
b29sIGlzTWkKICAgICByZXR1cm4gVmlkZW9GcmFtZUNWOjpjcmVhdGUoUEFMOjp0b01lZGlhVGlt
ZSh0aW1lU3RhbXApLCBpc01pcnJvcmVkLCByb3RhdGlvbiwgcGl4ZWxCdWZmZXIpOwogfQogCi1S
ZWY8VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShNZWRpYVRpbWUgcHJlc2VudGF0
aW9uVGltZSwgYm9vbCBpc01pcnJvcmVkLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBwaXhlbEJ1ZmZlcikKK1JlZjxWaWRlb0ZyYW1lQ1Y+IFZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWly
cm9yZWQsIFJvdGF0aW9uIHJvdGF0aW9uLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiBw
aXhlbEJ1ZmZlcikKIHsKICAgICBBU1NFUlQocGl4ZWxCdWZmZXIpOwogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFZpZGVvRnJhbWVDVihwcmVzZW50YXRpb25UaW1lLCBpc01pcnJvcmVkLCByb3Rh
dGlvbiwgV1RGTW92ZShwaXhlbEJ1ZmZlcikpKTsKQEAgLTczLDEwICs3MywxMCBAQCBSZWZQdHI8
VmlkZW9GcmFtZUNWPiBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihQaXhlbEJ1
ZmZlciYmIHBpeGVsQnVmZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgQVNT
RVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOwotICAgIHJldHVybiBjcmVhdGUoeyB9LCBmYWxz
ZSwgVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgV1RGTW92ZShjdlBpeGVsQnVmZmVyKSk7CisgICAgcmV0
dXJuIGNyZWF0ZSh7IH0sIGZhbHNlLCBSb3RhdGlvbjo6Tm9uZSwgV1RGTW92ZShjdlBpeGVsQnVm
ZmVyKSk7CiB9CiAKLVZpZGVvRnJhbWVDVjo6VmlkZW9GcmFtZUNWKE1lZGlhVGltZSBwcmVzZW50
YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24sIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyKQorVmlkZW9GcmFtZUNWOjpWaWRl
b0ZyYW1lQ1YoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90
YXRpb24gcm90YXRpb24sIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVy
KQogICAgIDogVmlkZW9GcmFtZShwcmVzZW50YXRpb25UaW1lLCBpc01pcnJvcmVkLCByb3RhdGlv
bikKICAgICAsIG1fcGl4ZWxCdWZmZXIoV1RGTW92ZShwaXhlbEJ1ZmZlcikpCiB7CkBAIC04OSw3
ICs4OSw3IEBAIFdlYkNvcmU6OkZsb2F0U2l6ZSBWaWRlb0ZyYW1lQ1Y6OnByZXNlbnRhdGlvblNp
emUoKSBjb25zdAogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGZsb2F0PihDVlBpeGVsQnVmZmVy
R2V0V2lkdGgobV9waXhlbEJ1ZmZlci5nZXQoKSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oQ1ZQaXhl
bEJ1ZmZlckdldEhlaWdodChtX3BpeGVsQnVmZmVyLmdldCgpKSkgfTsKIH0KIAotdWludDMyX3Qg
VmlkZW9GcmFtZUNWOjp2aWRlb1BpeGVsRm9ybWF0KCkgY29uc3QKK3VpbnQzMl90IFZpZGVvRnJh
bWVDVjo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewogICAgIHJldHVybiBDVlBpeGVsQnVmZmVyR2V0
UGl4ZWxGb3JtYXRUeXBlKG1fcGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQpAQCAtMTAyLDIzICsxMDIs
MTggQEAgdm9pZCBWaWRlb0ZyYW1lQ1Y6OnNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nl
c3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikKICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNW
UGl4ZWxCdWZmZXIoYnVmZmVyLCByZXNvdXJjZU93bmVyKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlZpZGVvRnJhbWVDVj4gVmlkZW9GcmFtZUNWOjphc1ZpZGVvRnJhbWVDVigpCi17Ci0gICAgcmV0
dXJuIHRoaXM7Ci19Ci0KIEltYWdlT3JpZW50YXRpb24gVmlkZW9GcmFtZUNWOjpvcmllbnRhdGlv
bigpIGNvbnN0CiB7CiAgICAgLy8gU2FtcGxlIHRyYW5zZm9ybSBmaXJzdCBmbGlwcyB4LWNvb3Jk
aW5hdGVzLCB0aGVuIHJvdGF0ZXMuCi0gICAgc3dpdGNoIChtX3JvdGF0aW9uKSB7Ci0gICAgY2Fz
ZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKLSAgICAgICAgcmV0dXJuIG1faXNN
aXJyb3JlZCA/IEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcFJpZ2h0IDogSW1hZ2VPcmllbnRh
dGlvbjo6T3JpZ2luVG9wTGVmdDsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
OjpSaWdodDoKLSAgICAgICAgcmV0dXJuIG1faXNNaXJyb3JlZCA/IEltYWdlT3JpZW50YXRpb246
Ok9yaWdpblJpZ2h0Qm90dG9tIDogSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3A7Ci0g
ICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93bjoKLSAgICAgICAg
cmV0dXJuIG1faXNNaXJyb3JlZCA/IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbUxlZnQg
OiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5Cb3R0b21SaWdodDsKLSAgICBjYXNlIE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OgotICAgICAgICByZXR1cm4gbV9pc01pcnJvcmVkID8g
SW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdFRvcCA6IEltYWdlT3JpZW50YXRpb246Ok9yaWdp
bkxlZnRCb3R0b207CisgICAgc3dpdGNoIChyb3RhdGlvbigpKSB7CisgICAgY2FzZSBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6Tm9uZToKKyAgICAgICAgcmV0dXJuIGlzTWlycm9yZWQoKSA/IEltYWdl
T3JpZW50YXRpb246Ok9yaWdpblRvcFJpZ2h0IDogSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luVG9w
TGVmdDsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDoKKyAgICAgICAgcmV0
dXJuIGlzTWlycm9yZWQoKSA/IEltYWdlT3JpZW50YXRpb246Ok9yaWdpblJpZ2h0Qm90dG9tIDog
SW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luUmlnaHRUb3A7CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6VXBzaWRlRG93bjoKKyAgICAgICAgcmV0dXJuIGlzTWlycm9yZWQoKSA/IEltYWdl
T3JpZW50YXRpb246Ok9yaWdpbkJvdHRvbUxlZnQgOiBJbWFnZU9yaWVudGF0aW9uOjpPcmlnaW5C
b3R0b21SaWdodDsKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OgorICAgICAg
ICByZXR1cm4gaXNNaXJyb3JlZCgpID8gSW1hZ2VPcmllbnRhdGlvbjo6T3JpZ2luTGVmdFRvcCA6
IEltYWdlT3JpZW50YXRpb246Ok9yaWdpbkxlZnRCb3R0b207CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFt
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5jcHAKaW5kZXggZTk1NWUwNDJmODVmOWMzYzE2ZmIyZGE4
M2I5MzViNzdkOTM5NDU0Zi4uYjlkMzhmMDQ3NDhkZDEzYjNkNGZkMmUzMjY3MDg2MzU4NTdmMjVi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmNwcApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBWaWRl
b0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJiBwaXhl
bEJ1ZmZlciwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25zdCBJbnRTaXpl
JiBkZXN0aW5hdGlvblNpemUsIGRvdWJsZSBmcmFtZVJhdGUsIFZpZGVvUm90YXRpb24gdmlkZW9S
b3RhdGlvbiwgYm9vbCB2aWRlb01pcnJvcmVkLCBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1l
TWV0YWRhdGE+JiYgbWV0YWRhdGEpCitSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4gVmlkZW9GcmFt
ZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZm
ZXIsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgY29uc3QgSW50U2l6ZSYgZGVz
dGluYXRpb25TaXplLCBkb3VibGUgZnJhbWVSYXRlLCBSb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBi
b29sIHZpZGVvTWlycm9yZWQsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4m
JiBtZXRhZGF0YSkKIHsKICAgICBlbnN1cmVHU3RyZWFtZXJJbml0aWFsaXplZCgpOwogCkBAIC04
NSw3ICs4NSw3IEBAIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBWaWRlb0ZyYW1lR1N0cmVhbWVy
OjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVmlkZW9GcmFtZUdTdHJlYW1lcihXVEZNb3ZlKHNhbXBsZSksIEZsb2F0U2l6ZSh3aWR0
aCwgaGVpZ2h0KSwgcHJlc2VudGF0aW9uVGltZSwgdmlkZW9Sb3RhdGlvbiwgdmlkZW9NaXJyb3Jl
ZCwgV1RGTW92ZShtZXRhZGF0YSkpKTsKIH0KIAotVmlkZW9GcmFtZUdTdHJlYW1lcjo6VmlkZW9G
cmFtZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZsb2F0U2l6
ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBW
aWRlb1JvdGF0aW9uIHZpZGVvUm90YXRpb24sIGJvb2wgdmlkZW9NaXJyb3JlZCwgc3RkOjpvcHRp
b25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhKQorVmlkZW9GcmFtZUdTdHJl
YW1lcjo6VmlkZW9GcmFtZUdTdHJlYW1lcihHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNv
bnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50
YXRpb25UaW1lLCBSb3RhdGlvbiB2aWRlb1JvdGF0aW9uLCBib29sIHZpZGVvTWlycm9yZWQsIHN0
ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0YSkKICAgICA6IFZp
ZGVvRnJhbWUocHJlc2VudGF0aW9uVGltZSwgdmlkZW9NaXJyb3JlZCwgdmlkZW9Sb3RhdGlvbikK
ICAgICAsIG1fc2FtcGxlKFdURk1vdmUoc2FtcGxlKSkKICAgICAsIG1fcHJlc2VudGF0aW9uU2l6
ZShwcmVzZW50YXRpb25TaXplKQpAQCAtOTgsNyArOTgsNyBAQCBWaWRlb0ZyYW1lR1N0cmVhbWVy
OjpWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3Qg
RmxvYQogICAgICAgICBidWZmZXIgPSB3ZWJraXRHc3RCdWZmZXJTZXRWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhKGJ1ZmZlciwgV1RGTW92ZShtZXRhZGF0YSkpOwogfQogCi1WaWRlb0ZyYW1lR1N0cmVh
bWVyOjpWaWRlb0ZyYW1lR1N0cmVhbWVyKGNvbnN0IEdSZWZQdHI8R3N0U2FtcGxlPiYgc2FtcGxl
LCBjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFZpZGVvUm90YXRpb24gdmlkZW9S
b3RhdGlvbikKK1ZpZGVvRnJhbWVHU3RyZWFtZXI6OlZpZGVvRnJhbWVHU3RyZWFtZXIoY29uc3Qg
R1JlZlB0cjxHc3RTYW1wbGU+JiBzYW1wbGUsIGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9u
VGltZSwgUm90YXRpb24gdmlkZW9Sb3RhdGlvbikKICAgICA6IFZpZGVvRnJhbWUocHJlc2VudGF0
aW9uVGltZSwgZmFsc2UsIHZpZGVvUm90YXRpb24pCiAgICAgLCBtX3NhbXBsZShzYW1wbGUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9GcmFtZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvRnJhbWVHU3RyZWFtZXIuaAppbmRleCAxMWJmOTAyYzAwYzFhOTMyMTNh
NTkwNWI3OGYyODliNzNmODE0NjEzLi4xYzgwYzIyZTAyNjY1OTY2ZDE3Yjk4YTg2YzEyNTI2ZTE2
ZmI5MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9GcmFtZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lR1N0cmVhbWVyLmgKQEAgLTMwLDI2ICszMCwy
NyBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAogY2xhc3MgVmlkZW9GcmFtZUdTdHJlYW1lciBmaW5h
bCA6IHB1YmxpYyBWaWRlb0ZyYW1lIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvRnJh
bWVHU3RyZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZs
b2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25U
aW1lID0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90YXRp
b24gPSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIHZpZGVvTWlycm9yZWQgPSBmYWxzZSwgc3Rk
OjpvcHRpb25hbDxWaWRlb0ZyYW1lVGltZU1ldGFkYXRhPiYmIG1ldGFkYXRhID0gc3RkOjpudWxs
b3B0KQorICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4gY3JlYXRlKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBj
b25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUgPSBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCksIFJvdGF0aW9uIHZpZGVvUm90YXRpb24gPSBSb3RhdGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01p
cnJvcmVkID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBt
ZXRhZGF0YSA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFZpZGVvRnJhbWVHU3RyZWFtZXIoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXpl
LCBwcmVzZW50YXRpb25UaW1lLCB2aWRlb1JvdGF0aW9uLCB2aWRlb01pcnJvcmVkLCBXVEZNb3Zl
KG1ldGFkYXRhKSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdTdHJlYW1l
cj4gY3JlYXRlV3JhcHBlZFNhbXBsZShjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNhbXBsZSwg
Y29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBWaWRlb1JvdGF0aW9uIHZpZGVvUm90
YXRpb24gPSBWaWRlb1JvdGF0aW9uOjpOb25lKQorICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdT
dHJlYW1lcj4gY3JlYXRlV3JhcHBlZFNhbXBsZShjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mIHNh
bXBsZSwgY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBSb3RhdGlvbiB2aWRlb1Jv
dGF0aW9uID0gUm90YXRpb246Ok5vbmUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBWaWRlb0ZyYW1lR1N0cmVhbWVyKHNhbXBsZSwgcHJlc2VudGF0aW9uVGltZSwgdmlkZW9S
b3RhdGlvbikpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8VmlkZW9GcmFtZUdTdHJlYW1lcj4g
Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYsIGNvbnN0IE1lZGlhVGltZSYgcHJl
c2VudGF0aW9uVGltZSA9IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgY29uc3QgSW50U2l6ZSYg
ZGVzdGluYXRpb25TaXplID0geyB9LCBkb3VibGUgZnJhbWVSYXRlID0gMSwgVmlkZW9Sb3RhdGlv
biB2aWRlb1JvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01pcnJvcmVk
ID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiBtZXRhZGF0
YSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lR1N0cmVhbWVyPiBj
cmVhdGVGcm9tUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJiwgY29uc3QgTWVkaWFUaW1lJiBwcmVz
ZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBjb25zdCBJbnRTaXplJiBk
ZXN0aW5hdGlvblNpemUgPSB7IH0sIGRvdWJsZSBmcmFtZVJhdGUgPSAxLCBSb3RhdGlvbiB2aWRl
b1JvdGF0aW9uID0gUm90YXRpb246Ok5vbmUsIGJvb2wgdmlkZW9NaXJyb3JlZCA9IGZhbHNlLCBz
dGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVUaW1lTWV0YWRhdGE+JiYgbWV0YWRhdGEgPSBzdGQ6Om51
bGxvcHQpOwogCiAgICAgR3N0U2FtcGxlKiBzYW1wbGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFZpZGVvRnJhbWVHU3RyZWFtZXIoR1JlZlB0cjxH
c3RTYW1wbGU+JiYsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgTWVk
aWFUaW1lJiBwcmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpLCBWaWRl
b1JvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01pcnJvcmVkID0gZmFs
c2UsIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiA9IHN0ZDo6bnVsbG9w
dCk7Ci0gICAgVmlkZW9GcmFtZUdTdHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mLCBj
b25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIFZpZGVvUm90YXRpb24gPSBWaWRlb1Jv
dGF0aW9uOjpOb25lKTsKKyAgICBWaWRlb0ZyYW1lR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxl
PiYmLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IE1lZGlhVGltZSYg
cHJlc2VudGF0aW9uVGltZSA9IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSwgUm90YXRpb24gPSBS
b3RhdGlvbjo6Tm9uZSwgYm9vbCB2aWRlb01pcnJvcmVkID0gZmFsc2UsIHN0ZDo6b3B0aW9uYWw8
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgVmlkZW9GcmFt
ZUdTdHJlYW1lcihjb25zdCBHUmVmUHRyPEdzdFNhbXBsZT4mLCBjb25zdCBNZWRpYVRpbWUmIHBy
ZXNlbnRhdGlvblRpbWUsIFJvdGF0aW9uID0gUm90YXRpb246Ok5vbmUpOwogCiAgICAgRmxvYXRT
aXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ByZXNlbnRhdGlv
blNpemU7IH0KICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdl
RGF0YSgpIGNvbnN0IGZpbmFsOworICAgIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQogCiAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IG1fc2FtcGxlOwogICAg
IEZsb2F0U2l6ZSBtX3ByZXNlbnRhdGlvblNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5k
ZXggMDM4MTg5Zjc0N2RmYmIyOGY4NzVmN2U2N2Y1YmMxZmEzMTU4NmNmYy4uOGU3OWY0YmVhODM0
MGRiZDY3MTFkZGMyOGUyYTcwOGViOWE4NjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApA
QCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCiBj
bGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZQogICAgIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIKLSAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNl
OjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogcHVibGljOgogICAgIH5NZWRpYVJlY29yZGVyUHJpdmF0
ZSgpOwogCkBAIC0xMTYsMTIgKzExNiwxMiBAQCBpbmxpbmUgdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZTo6c2V0QXVkaW9Tb3VyY2UoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgYQogaW5s
aW5lIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnNldFZpZGVvU291cmNlKFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPiYmIHZpZGVvU291cmNlKQogewogICAgIGlmIChtX3ZpZGVvU291cmNl
KQotICAgICAgICBtX3ZpZGVvU291cmNlLT5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlz
KTsKKyAgICAgICAgbV92aWRlb1NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlz
KTsKIAogICAgIG1fdmlkZW9Tb3VyY2UgPSBXVEZNb3ZlKHZpZGVvU291cmNlKTsKIAogICAgIGlm
IChtX3ZpZGVvU291cmNlKQotICAgICAgICBtX3ZpZGVvU291cmNlLT5hZGRWaWRlb1NhbXBsZU9i
c2VydmVyKCp0aGlzKTsKKyAgICAgICAgbV92aWRlb1NvdXJjZS0+YWRkVmlkZW9GcmFtZU9ic2Vy
dmVyKCp0aGlzKTsKIH0KIAogaW5saW5lIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp+TWVkaWFSZWNv
cmRlclByaXZhdGUoKQpAQCAtMTMyLDcgKzEzMiw3IEBAIGlubGluZSBNZWRpYVJlY29yZGVyUHJp
dmF0ZTo6fk1lZGlhUmVjb3JkZXJQcml2YXRlKCkKICAgICBpZiAobV9hdWRpb1NvdXJjZSkKICAg
ICAgICAgbV9hdWRpb1NvdXJjZS0+cmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CiAg
ICAgaWYgKG1fdmlkZW9Tb3VyY2UpCi0gICAgICAgIG1fdmlkZW9Tb3VyY2UtPnJlbW92ZVZpZGVv
U2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3ZpZGVvU291cmNlLT5yZW1vdmVWaWRl
b0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggMWMwZDNlNTNjNjFjMmYx
NjhmYTVkY2ZlZmUzZGEyYzM2M2QyOTJiZC4uYTc0ZWJkZDkzNmE0NTUyMzE0MTY0ODE1ZDFkOTg3
ODE2ZGVkNDZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApA
QCAtODMsMTkgKzgzLDE5IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpzdGFy
dFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYgY2FsbGJhCiAgICAgY2FsbGJhY2so
U3RyaW5nKG1fd3JpdGVyLT5taW1lVHlwZSgpKSwgbV93cml0ZXItPmF1ZGlvQml0UmF0ZSgpLCBt
X3dyaXRlci0+dmlkZW9CaXRSYXRlKCkpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbDo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9G
cmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjp2aWRl
b0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpCiB7CiAgICAgaWYgKHNob3VsZE11dGVWaWRlbygpKSB7CiAgICAgICAgIGlmICghbV9i
bGFja0ZyYW1lKSB7Ci0gICAgICAgICAgICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9u
U2l6ZSgpOwotICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0gVmlkZW9GcmFtZUNWOjpjcmVhdGUo
c2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSwgc2FtcGxl
LnZpZGVvUm90YXRpb24oKSwgY3JlYXRlQmxhY2tQaXhlbEJ1ZmZlcihzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGF1dG8gc2l6ZSA9IHZpZGVvRnJhbWUucHJlc2Vu
dGF0aW9uU2l6ZSgpOworICAgICAgICAgICAgbV9ibGFja0ZyYW1lID0gVmlkZW9GcmFtZUNWOjpj
cmVhdGUodmlkZW9GcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIHZpZGVvRnJhbWUuaXNNaXJyb3Jl
ZCgpLCB2aWRlb0ZyYW1lLnJvdGF0aW9uKCksIGNyZWF0ZUJsYWNrUGl4ZWxCdWZmZXIoc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgbV93cml0ZXItPmFw
cGVuZFZpZGVvRnJhbWUoKm1fYmxhY2tGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBtX2JsYWNrRnJhbWUgPSBudWxscHRyOwotICAgIG1fd3JpdGVyLT5hcHBlbmRWaWRlb0Zy
YW1lKFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBs
ZS52aWRlb01pcnJvcmVkKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS5waXhlbEJ1
ZmZlcigpKSk7CisgICAgbV93cml0ZXItPmFwcGVuZFZpZGVvRnJhbWUodmlkZW9GcmFtZSk7CiB9
CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjphdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBk
YXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNh
bXBsZUNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggOTU3
ZjVkMDg3NzlmYTljMzkyNzdlOTE1OTNjNTYzOTY4Y2Q3ODgyNi4uMTI4OTczNTljZGJkNzA4MWU1
OWM5MWQ4ZWRiZjBiNWMwNWQ1ODE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsKFJlZjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4mJik7CiAK
ICAgICAvLyBNZWRpYVJlY29yZGVyUHJpdmF0ZQotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkaWFTYW1wbGUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsKKyAgICB2b2lk
IHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEp
IGZpbmFsOwogICAgIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkg
ZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDc0
ZjFlNzIzNjc0ZThkMDE5ODI1Yzc0MGJjODY3MmZjNjdkYWY5MjIuLmIxNWM3YmU0MTNjMWJjMTA5
MWZjOTJlMTlhMGRhZTUwZGUyNGQ2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgcHJlcGFy
ZVBpcGVsaW5lKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShN
ZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsIHsgfTsKKyAgICB2b2lk
IHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEp
IGZpbmFsIHsgfTsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1l
ZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHNpemVfdCkgZmluYWwgeyB9OwogCiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAK
aW5kZXggMDYxNzZjNzQwMDFlZmRmNmY0NTkxZjY4ZDJlMDBlMTBhN2NjMGY4YS4uN2Y2ZGIzYzdi
MDczN2ZhZjBjZWI5YWE2OWU4ZDBkZTM4ZGQwYjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
TW9jazo6cmVzdW1lUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0
YWRhdGEpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlkZW9GcmFtZUF2YWlsYWJs
ZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAgbV9idWZmZXIuYXBwZW5kKCJWaWRlbyBUcmFjayBJ
RDogIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suaAppbmRleCA3Mjk2NDYyNTUzNmM2
ZjEyMDkyMDMwODJmZjNlMGI2YTdhMzc3MjdhLi5mOTM1OTBhODA4Njc1ZmQ4MzNkZDI0NGEyOGYz
N2I1NWYwNTg4MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIE1lZGlhUmVjb3JkZXJQcml2YXRl
Ci0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVU
aW1lTWV0YWRhdGEpIGZpbmFsOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0Zy
YW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAgICAgdm9pZCBmZXRjaERhdGEo
RmV0Y2hEYXRhQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggYWRjZTQ4MzAyZjVk
YTlmNzMwNWY5ZGYyZjRiYmIwOGMwY2QxZWRmMC4uZmFhYzZjOTg4Y2U2YTM3MWVmMjUzZWE4ZmI5
Zjk1ZWU2MWQ5M2I0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9oYXNFbmNvZGVkVmlkZW9TYW1wbGVzIHsgZmFsc2UgfTsKIAogICAgIFJldGFpblB0cjxXZWJB
VkFzc2V0V3JpdGVyRGVsZWdhdGU+IG1fd3JpdGVyRGVsZWdhdGU7Ci0gICAgRGVxdWU8UmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZTsKKyAgICBE
ZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBtX3BlbmRpbmdWaWRlb0ZyYW1lUXVl
dWU7CiAgICAgRGVxdWU8UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPj4gbV9wZW5kaW5nQXVk
aW9TYW1wbGVRdWV1ZTsKIAogICAgIGJvb2wgbV9pc0ZsdXNoaW5nU2FtcGxlcyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29h
L01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0KaW5kZXggMzE2NmU4MTQ2MjllOTA0OGUxMGQ0Yzg5MGI4OWEyYTdlNjIwYzI1My4uMDI0ZjA5
ZGZlN2NlOWY5ZmYxOWMyZTgwYTAwNWEwMDhmN2E1OWI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3
IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cihib29sIGhhc0F1ZGlvLCBib29sIGhhc1ZpCiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKIHsKICAgICBtX3BlbmRpbmdBdWRpb1NhbXBs
ZVF1ZXVlLmNsZWFyKCk7Ci0gICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwor
ICAgIG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5jbGVhcigpOwogICAgIGlmIChtX3dyaXRlcikg
ewogICAgICAgICBbbV93cml0ZXIgY2FuY2VsV3JpdGluZ107CiAgICAgICAgIG1fd3JpdGVyLmNs
ZWFyKCk7CkBAIC0yODMsMTUgKzI4MywxNSBAQCBib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJJZlBvc3NpYmxlKCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1faXNGbHVzaGluZ1NhbXBsZXMpIHsKLSAgICAg
ICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUuaXNFbXB0eSgpICYmIFttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5
Rm9yTW9yZU1lZGlhRGF0YV0pCi0gICAgICAgIGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1
ZmZlcihtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpLmdldCgpKTsKKyAgICB3
aGlsZSAoIW1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS5pc0VtcHR5KCkgJiYgW21fdmlkZW9Bc3Nl
dFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkKKyAgICAgICAgYXBwZW5kQ29t
cHJlc3NlZFZpZGVvU2FtcGxlQnVmZmVyKG1fcGVuZGluZ1ZpZGVvRnJhbWVRdWV1ZS50YWtlRmly
c3QoKS5nZXQoKSk7CiAKICAgICBpZiAoIVttX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dCBpc1JlYWR5
Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9GcmFtZVF1ZXVl
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kRW5kc1ByZXZpb3Vz
U2FtcGxlRHVyYXRpb25NYXJrZXIoQVZBc3NldFdyaXRlcklucHV0ICphcwogdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgYm9vbCBoYXNQZW5kaW5nQXVkaW9TYW1wbGVz
ID0gIW1fcGVuZGluZ0F1ZGlvU2FtcGxlUXVldWUuaXNFbXB0eSgpOwotICAgIGJvb2wgaGFzUGVu
ZGluZ1ZpZGVvU2FtcGxlcyA9ICFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKTsK
KyAgICBib29sIGhhc1BlbmRpbmdWaWRlb1NhbXBsZXMgPSAhbV9wZW5kaW5nVmlkZW9GcmFtZVF1
ZXVlLmlzRW1wdHkoKTsKIAogICAgIGlmIChtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMpIHsKICAg
ICAgICAgaGFzUGVuZGluZ1ZpZGVvU2FtcGxlcyB8PSAhW21fdmlkZW9Bc3NldFdyaXRlcklucHV0
IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXTsKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKEZ1bmN0
aW9uPHZvaWQoKT4mJgogCiAgICAgQVNTRVJUKCFtX2lzRmx1c2hpbmdTYW1wbGVzKTsKICAgICBt
X2lzRmx1c2hpbmdTYW1wbGVzID0gdHJ1ZTsKLSAgICBhdXRvIGJsb2NrID0gbWFrZUJsb2NrUHRy
KFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBoYXNQZW5kaW5nQXVkaW9TYW1w
bGVzLCBoYXNQZW5kaW5nVmlkZW9TYW1wbGVzLCBhdWRpb1NhbXBsZVF1ZXVlID0gV1RGTW92ZSht
X3BlbmRpbmdBdWRpb1NhbXBsZVF1ZXVlKSwgdmlkZW9TYW1wbGVRdWV1ZSA9IFdURk1vdmUobV9w
ZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CisgICAgYXV0byBibG9jayA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgaGFzUGVuZGluZ0F1ZGlvU2FtcGxlcywgaGFzUGVuZGluZ1Zp
ZGVvU2FtcGxlcywgYXVkaW9TYW1wbGVRdWV1ZSA9IFdURk1vdmUobV9wZW5kaW5nQXVkaW9TYW1w
bGVRdWV1ZSksIHZpZGVvU2FtcGxlUXVldWUgPSBXVEZNb3ZlKG1fcGVuZGluZ1ZpZGVvRnJhbWVR
dWV1ZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zODYsOSArMzg2LDkgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6YXBwZW5kVmlkZW9GcmFtZShWaWRlb0ZyYW1lJiBmcmFtZSkKICAgICBpZiAoIW1fZmlyc3RW
aWRlb0ZyYW1lKSB7CiAgICAgICAgIG1fZmlyc3RWaWRlb0ZyYW1lID0gdHJ1ZTsKICAgICAgICAg
bV9yZXN1bWVkVmlkZW9UaW1lID0gUEFMOjpDTUNsb2NrR2V0VGltZShQQUw6OkNNQ2xvY2tHZXRI
b3N0VGltZUNsb2NrKCkpOwotICAgICAgICBpZiAoZnJhbWUudmlkZW9Sb3RhdGlvbigpICE9IE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIHx8IGZyYW1lLnZpZGVvTWlycm9yZWQoKSkg
ewotICAgICAgICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVJv
dGF0aW9uKHN0YXRpY19jYXN0PGludD4oZnJhbWUudmlkZW9Sb3RhdGlvbigpKSAqIE1fUEkgLyAx
ODApOwotICAgICAgICAgICAgaWYgKGZyYW1lLnZpZGVvTWlycm9yZWQoKSkKKyAgICAgICAgaWYg
KGZyYW1lLnJvdGF0aW9uKCkgIT0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUgfHwgZnJhbWUu
aXNNaXJyb3JlZCgpKSB7CisgICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVU
cmFuc2Zvcm1NYWtlUm90YXRpb24oc3RhdGljX2Nhc3Q8aW50PihmcmFtZS5yb3RhdGlvbigpKSAq
IE1fUEkgLyAxODApOworICAgICAgICAgICAgaWYgKGZyYW1lLmlzTWlycm9yZWQoKSkKICAgICAg
ICAgICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSgqbV92
aWRlb1RyYW5zZm9ybSwgLTEsIDEpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmNwcAppbmRleCA0YTk1Nzk4NzJhNzcxNWU1NDA0Mzk1ZDA1NzRkYzRkZDcxZWZiMjM5Li42ZmEz
YjFlMDFkNDg4OTRjNWE1NDc1N2Y1ZDEwNjdkZmVlNGE1MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmNwcApAQCAtNzUsMTggKzc1LDE4IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3Zl
QXVkaW9TYW1wbGVPYnNlcnZlcihBdWRpb1NhbXBsZU9ic2VydmVyJiBvYnNlcnZlCiAgICAgbV9h
dWRpb1NhbXBsZU9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKIH0KIAotdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjphZGRWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2FtcGxlT2JzZXJ2ZXIm
IG9ic2VydmVyKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRWaWRlb0ZyYW1lT2JzZXJ2
ZXIoVmlkZW9GcmFtZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayB9
OwotICAgIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMuYWRkKCZvYnNlcnZlcik7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fVmlkZW9GcmFtZU9ic2VydmVyc0xvY2sgfTsKKyAgICBtX1ZpZGVvRnJhbWVP
YnNlcnZlcnMuYWRkKCZvYnNlcnZlcik7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcihWaWRlb1NhbXBsZU9ic2VydmVyJiBvYnNlcnZlcikK
K3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKFZpZGVv
RnJhbWVPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2sgfTsKLSAgICBt
X3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX1ZpZGVvRnJhbWVPYnNlcnZlcnNMb2NrIH07CisgICAgbV9WaWRlb0ZyYW1lT2JzZXJ2
ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFk
ZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OnVwZGF0ZUhhc1N0YXJ0ZWRQcm9kdWNpbmdEYXRhKCkKICAgICB9
KTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShN
ZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEp
Cit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFt
ZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKIHsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICArK21fZnJhbWVDb3VudDsKQEAgLTIxMCw5ICsyMTAs
OSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiBtZWRpYVNhbXBsZSwgVmlkZW9GcgogCiAgICAgdXBkYXRlSGFzU3RhcnRlZFByb2R1
Y2luZ0RhdGEoKTsKIAotICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJz
TG9jayB9OwotICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJz
KQotICAgICAgICBvYnNlcnZlci0+dmlkZW9TYW1wbGVBdmFpbGFibGUobWVkaWFTYW1wbGUsIG1l
dGFkYXRhKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9WaWRlb0ZyYW1lT2JzZXJ2ZXJzTG9jayB9
OworICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX1ZpZGVvRnJhbWVPYnNlcnZlcnMpCisgICAg
ICAgIG9ic2VydmVyLT52aWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUsIG1ldGFkYXRhKTsK
IH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRhLCBj
b25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IG51bWJlck9m
RnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDczNDgzNTJiZTI1MTkzNThiNTQ2ZGU2OGQw
YzNiODkyYTlmNDRlNGUuLjFhODk5OGRlM2I3OWVjNDA2Yzk2YWQwYTNmNDkzNjMyZTc3ODM4YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTM4LDEwICszOCwxMCBAQAogI2luY2x1ZGUgIkNhcHR1
cmVEZXZpY2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWlu
dHMuaCIKLSNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUZhY3RvcnkuaCIKKyNpbmNsdWRlICJWaWRlb0ZyYW1lLmgi
CiAjaW5jbHVkZSAiVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC05OCwxMiArOTgsMTIg
QEAgcHVibGljOgogICAgICAgICAvLyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJl
YWQuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgc2l6ZV90IC8qbnVtYmVyT2ZGcmFtZXMqLykgPSAwOwogICAgIH07Ci0gICAgY2xh
c3MgVmlkZW9TYW1wbGVPYnNlcnZlciB7CisgICAgY2xhc3MgVmlkZW9GcmFtZU9ic2VydmVyIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgflZpZGVvU2FtcGxlT2JzZXJ2ZXIoKSA9IGRl
ZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgflZpZGVvRnJhbWVPYnNlcnZlcigpID0gZGVmYXVsdDsK
IAogICAgICAgICAvLyBNYXkgYmUgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpZGVvRnJhbWVB
dmFpbGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpID0gMDsKICAgICB9
OwogCiAgICAgdmlydHVhbCB+UmVhbHRpbWVNZWRpYVNvdXJjZSgpID0gZGVmYXVsdDsKQEAgLTE0
Nyw4ICsxNDcsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBdWRpb1Nh
bXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2JzZXJ2ZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbW92ZUF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZlciYpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2FtcGxl
T2JzZXJ2ZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVZpZGVvU2FtcGxlT2Jz
ZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
VmlkZW9GcmFtZU9ic2VydmVyKFZpZGVvRnJhbWVPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVtb3ZlVmlkZW9GcmFtZU9ic2VydmVyKFZpZGVvRnJhbWVPYnNlcnZlciYpOwog
CiAgICAgY29uc3QgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0
IEludFNpemUmKTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0
aWFsaXplU2FtcGxlUmF0ZShpbnQgc2FtcGxlUmF0ZSkgeyBtX3NhbXBsZVJhdGUgPSBzYW1wbGVS
YXRlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplRWNob0NhbmNlbGxhdGlvbihib29sIGVjaG9DYW5j
ZWxsYXRpb24pIHsgbV9lY2hvQ2FuY2VsbGF0aW9uID0gZWNob0NhbmNlbGxhdGlvbjsgfQogCi0g
ICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1l
TWV0YWRhdGEpOworICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSk7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KTsKIAogICAgIHZvaWQgZm9yRWFjaE9ic2VydmVyKGNvbnN0
IEZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4mKTsKQEAgLTI4OSw4ICsyODksOCBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgTG9jayBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jazsKICAgICBIYXNo
U2V0PEF1ZGlvU2FtcGxlT2JzZXJ2ZXIqPiBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9hdWRpb1NhbXBsZU9ic2VydmVyc0xvY2spOwogCi0gICAgbXV0YWJsZSBM
b2NrIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrOwotICAgIEhhc2hTZXQ8VmlkZW9TYW1wbGVP
YnNlcnZlcio+IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3Zp
ZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgbXV0YWJsZSBMb2NrIG1fVmlkZW9GcmFtZU9i
c2VydmVyc0xvY2s7CisgICAgSGFzaFNldDxWaWRlb0ZyYW1lT2JzZXJ2ZXIqPiBtX1ZpZGVvRnJh
bWVPYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX1ZpZGVvRnJhbWVPYnNlcnZlcnNMb2Nr
KTsKIAogICAgIC8vIFNldCBvbiB0aGUgbWFpbiB0aHJlYWQgZnJvbSBjb25zdHJhaW50cy4KICAg
ICBJbnRTaXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IDlhNzEwNTVkODZiM2UxMDlmZjI5MTc4NzJjZmJiMGIyNDg0Y2RiZmEuLjI3MzZhNDNlNzZl
OTk1ZGVkODYwMGI3NDFkODU3ZDA4ZWU5OWExYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZTo6b2JzZXJ2ZVNvdXJjZSgpCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZTo6dW5vYnNlcnZlU291cmNlKCkKIHsKICAgICBtX3ZpZGVvU291cmNlLT5yZW1vdmVPYnNlcnZl
cigqdGhpcyk7Ci0gICAgbV92aWRlb1NvdXJjZS0+c291cmNlKCkucmVtb3ZlVmlkZW9TYW1wbGVP
YnNlcnZlcigqdGhpcyk7CisgICAgbV92aWRlb1NvdXJjZS0+c291cmNlKCkucmVtb3ZlVmlkZW9G
cmFtZU9ic2VydmVyKCp0aGlzKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OnNldFNvdXJjZShSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+JiYgbmV3U291cmNlKQpA
QCAtMTE0LDEzICsxMTQsMTMgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnN0
b3AoKQogdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnVwZGF0ZUJsYWNrRnJhbWVz
U2VuZGluZygpCiB7CiAgICAgaWYgKCFtX211dGVkICYmIG1fZW5hYmxlZCkgewotICAgICAgICBt
X3ZpZGVvU291cmNlLT5zb3VyY2UoKS5hZGRWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAg
ICAgICAgbV92aWRlb1NvdXJjZS0+c291cmNlKCkuYWRkVmlkZW9GcmFtZU9ic2VydmVyKCp0aGlz
KTsKICAgICAgICAgaWYgKG1fYmxhY2tGcmFtZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAg
ICBtX2JsYWNrRnJhbWVUaW1lci5zdG9wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5yZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlz
KTsKKyAgICBtX3ZpZGVvU291cmNlLT5zb3VyY2UoKS5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIo
KnRoaXMpOwogICAgIHNlbmRCbGFja0ZyYW1lc0lmTmVlZGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmgKaW5kZXggYjJhYzE2OTAwYTNiNTZiZjc2YTBhNWMxMjBmOGRk
MjFmYjdjOTZlOC4uMzBlMmY5MzdiMjRhNTRjNTQ2N2I0ODI5NWJkYzBiZjlhNGIwMDgwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3Mg
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFk
OjpNYWluPgogICAgICwgcHVibGljIHdlYnJ0Yzo6VmlkZW9UcmFja1NvdXJjZUludGVyZmFjZQog
ICAgICwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKLSAgICAsIHBy
aXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlcgorICAgICwgcHJp
dmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKQEAgLTEz
NCw4ICsxMzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tTZXR0aW5nc0NoYW5nZWQoTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IGluaXRpYWxpemVGcm9tU291cmNlKCk7IH0K
ICAgICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBmaW5hbCB7IH0K
IAotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2FtcGxlT2JzZXJ2ZXIgQVBJCi0g
ICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJhbWVUaW1l
TWV0YWRhdGEpIG92ZXJyaWRlIHsgfQorICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
RnJhbWVPYnNlcnZlciBBUEkKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFt
ZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIG92ZXJyaWRlIHsgfQogCiAgICAgUmVmPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiBtX3ZpZGVvU291cmNlOwogICAgIFRpbWVyIG1fYmxhY2tGcmFt
ZVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDU3OTlkMDAz
ODkxMjVlNGNmYmI5YmU5Y2EzYWEwNWRjYTFmNWZjMzcuLmVkN2Q1NjRhOTk4MWFhMDZiMTZkZGZi
Y2ExMTQ4NzExY2Q3OTdlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAK
QEAgLTM2NSw5ICszNjUsOSBAQCB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpzZXRT
aXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgcwogICAgIHNldEZyYW1l
UmF0ZShtYXRjaC0+cmVxdWVzdGVkRnJhbWVSYXRlKTsKIH0KIAotdm9pZCBSZWFsdGltZVZpZGVv
Q2FwdHVyZVNvdXJjZTo6ZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxl
JiBzYW1wbGUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCit2b2lk
IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwYXRjaFZpZGVvRnJhbWVUb09ic2VydmVy
cyhWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
IG1ldGFkYXRhKQogewotICAgIE1lZGlhVGltZSBzYW1wbGVUaW1lID0gc2FtcGxlLnByZXNlbnRh
dGlvblRpbWUoKTsKKyAgICBNZWRpYVRpbWUgc2FtcGxlVGltZSA9IHZpZGVvRnJhbWUucHJlc2Vu
dGF0aW9uVGltZSgpOwogCiAgICAgYXV0byBmcmFtZVRpbWUgPSBzYW1wbGVUaW1lLnRvRG91Ymxl
KCk7CiAgICAgbV9vYnNlcnZlZEZyYW1lVGltZVN0YW1wcy5hcHBlbmQoZnJhbWVUaW1lKTsKQEAg
LTM3OSw3ICszNzksNyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwYXRj
aE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmIHNhbQogICAgIGlmIChpbnRlcnZh
bCA+IDEpCiAgICAgICAgIG1fb2JzZXJ2ZWRGcmFtZVJhdGUgPSAobV9vYnNlcnZlZEZyYW1lVGlt
ZVN0YW1wcy5zaXplKCkgLyBpbnRlcnZhbCk7CiAKLSAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZShz
YW1wbGUsIG1ldGFkYXRhKTsKKyAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKHZpZGVvRnJhbWUsIG1l
dGFkYXRhKTsKIH0KIAogdm9pZCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2xpZW50VXBk
YXRlZFNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlv
bmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0Nh
cHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggNGUwOWFlMjFmNDU4M2FiZjQ3MzI2Nzg5Y2Zi
ZjJiMjdlYzM5ZDk2Mi4uMGJkYzBkNTY0NDE3MDNmZmM4Mzg3MDc5NGI3NTYyMzAyOGI1N2U5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVk
ZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5j
bHVkZSAiVmlkZW9QcmVzZXQuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNDYsNyArNDUs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9w
dGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlUHJlc2V0cygp
ID0gMDsKLSAgICB2aXJ0dWFsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHNhbXBsZVJvdGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7IH0K
KyAgICB2aXJ0dWFsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHZpZGVvRnJhbWVSb3RhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOyB9CiAKICAgICBkb3VibGUg
b2JzZXJ2ZWRGcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVkRnJhbWVSYXRlOyB9
CiAgICAgVmVjdG9yPFZpZGVvUHJlc2V0RGF0YT4gcHJlc2V0c0RhdGEoKTsKQEAgLTczLDcgKzcy
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCB1cGRhdGVDYXBhYmlsaXRpZXMoUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpOwogCi0gICAgdm9pZCBkaXNwYXRjaE1lZGlhU2FtcGxl
VG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRh
KTsKKyAgICB2b2lkIGRpc3BhdGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFZpZGVvRnJhbWUmLCBW
aWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKIAogICAgIHN0YXRpYyBTcGFuPGNvbnN0IEludFNpemU+
IHN0YW5kYXJkVmlkZW9TaXplcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGEyMzVk
NDIzZjI5MTA0YzU5NDkyODU0ZjBmNzU3YWYwN2Y5MjRhMjguLmY5ZTg0ZjdiNTc0MDg4ZjBjZGY2
OWE1Zjk1NDg0ODYwN2Q3YmE0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OlJlYWx0aW1lVmlkZW9Tb3VyY2UoUmVmPFJlYWx0
aW1lVmlkZW9DYXB0dXJlU291cmNlPiYmIHNvdXJjCiAKIFJlYWx0aW1lVmlkZW9Tb3VyY2U6On5S
ZWFsdGltZVZpZGVvU291cmNlKCkKIHsKLSAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9TYW1wbGVP
YnNlcnZlcigqdGhpcyk7CisgICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigq
dGhpcyk7CiAgICAgbV9zb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIH0KIApAQCAtNjks
MTggKzY5LDE4IEBAIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6d2hlblJlYWR5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjYWxsYmFjaykKIHZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKICAgICBtX3NvdXJjZS0+c3RhcnQoKTsKLSAg
ICBtX3NvdXJjZS0+YWRkVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9zb3VyY2Ut
PmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb1Nh
bXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9ic2Vy
dmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+c3RvcCgpOwogfQogCiB2b2lkIFJlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmVuZFByb2R1Y2luZ0RhdGEoKQogewotICAgIG1fc291cmNlLT5yZW1vdmVWaWRl
b1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9GcmFtZU9i
c2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+cmVxdWVzdFRvRW5kKCp0aGlzKTsKIH0KIApA
QCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpzb3VyY2VNdXRl
ZENoYW5nZWQoKQogCiB2b2lkIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNvdXJjZVNldHRpbmdzQ2hh
bmdlZCgpCiB7Ci0gICAgYXV0byByb3RhdGlvbiA9IG1fc291cmNlLT5zYW1wbGVSb3RhdGlvbigp
OworICAgIGF1dG8gcm90YXRpb24gPSBtX3NvdXJjZS0+dmlkZW9GcmFtZVJvdGF0aW9uKCk7CiAg
ICAgYXV0byBzaXplID0gdGhpcy0+c2l6ZSgpOwogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAg
ICAgICAgc2l6ZSA9IG1fc291cmNlLT5zaXplKCk7CiAKLSAgICBpZiAocm90YXRpb24gPT0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQgfHwgcm90YXRpb24gPT0gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246OlJpZ2h0KQorICAgIGlmIChyb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6TGVmdCB8fCByb3RhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQp
CiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKICAgICBtX2N1cnJlbnRT
ZXR0aW5ncy5zZXRXaWR0aChzaXplLndpZHRoKCkpOwpAQCAtMTcyLDEwICsxNzIsMTAgQEAgdm9p
ZCBSZWFsdGltZVZpZGVvU291cmNlOjpzb3VyY2VTdG9wcGVkKCkKIH0KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotUmVmUHRyPE1lZGlhU2FtcGxlPiBSZWFsdGltZVZpZGVvU291cmNlOjphZGFwdFZp
ZGVvRnJhbWUoTWVkaWFTYW1wbGUmIHZpZGVvRnJhbWUpCitSZWZQdHI8VmlkZW9GcmFtZT4gUmVh
bHRpbWVWaWRlb1NvdXJjZTo6YWRhcHRWaWRlb0ZyYW1lKFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUp
CiB7Ci0gICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJTZXNzaW9uIHx8IG1faW1hZ2VUcmFuc2ZlclNl
c3Npb24tPnBpeGVsRm9ybWF0KCkgIT0gdmlkZW9GcmFtZS52aWRlb1BpeGVsRm9ybWF0KCkpCi0g
ICAgICAgIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpj
cmVhdGUodmlkZW9GcmFtZS52aWRlb1BpeGVsRm9ybWF0KCksIG1fc2hvdWxkVXNlSU9TdXJmYWNl
KTsKKyAgICBpZiAoIW1faW1hZ2VUcmFuc2ZlclNlc3Npb24gfHwgbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbi0+cGl4ZWxGb3JtYXQoKSAhPSB2aWRlb0ZyYW1lLnBpeGVsRm9ybWF0KCkpCisgICAgICAg
IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24gPSBJbWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGUo
dmlkZW9GcmFtZS5waXhlbEZvcm1hdCgpLCBtX3Nob3VsZFVzZUlPU3VyZmFjZSk7CiAKICAgICBB
U1NFUlQobV9pbWFnZVRyYW5zZmVyU2Vzc2lvbik7CiAgICAgaWYgKCFtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uKQpAQCAtMTg4LDcgKzE4OCw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gUmVhbHRpbWVW
aWRlb1NvdXJjZTo6YWRhcHRWaWRlb0ZyYW1lKE1lZGlhU2FtcGxlJiB2aWRlb0ZyYW1lCiB9CiAj
ZW5kaWYKIAotdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShN
ZWRpYVNhbXBsZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkK
K3ZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6dmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1l
JiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFkYXRhKQogewogICAgIGlm
IChtX2ZyYW1lRGVjaW1hdGlvbiA+IDEgJiYgKyttX2ZyYW1lRGVjaW1hdGlvbkNvdW50ZXIgJSBt
X2ZyYW1lRGVjaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyLDEzICsyMDIsMTMgQEAg
dm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBs
ZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmEKICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAg
ICAgaWYgKCFzaXplLmlzRW1wdHkoKSAmJiBzaXplICE9IGV4cGFuZGVkSW50U2l6ZSh2aWRlb0Zy
YW1lLnByZXNlbnRhdGlvblNpemUoKSkpIHsKICAgICAgICAgaWYgKGF1dG8gbmV3VmlkZW9GcmFt
ZSA9IGFkYXB0VmlkZW9GcmFtZSh2aWRlb0ZyYW1lKSkgewotICAgICAgICAgICAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoKm5ld1ZpZGVvRnJhbWUsIG1ldGFkYXRh
KTsKKyAgICAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvRnJhbWVBdmFpbGFibGUo
Km5ld1ZpZGVvRnJhbWUsIG1ldGFkYXRhKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KICNlbmRpZgogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9TYW1wbGVB
dmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiBSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y2xvbmUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1Nv
dXJjZS5oCmluZGV4IGE3MTk0OTc4OWU0ZTA1YTkwYTg5ZmMxNDAzYmI4MDg4Y2ZmYmY4YTguLjY0
NmQ1OGEyMjM3Y2FjNjVjOTBlZDI2NDI4MDMxMmU3OTJmYmVmOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNl
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDsKIGNsYXNz
IFJlYWx0aW1lVmlkZW9Tb3VyY2UgZmluYWwKICAgICA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlCiAgICAgLCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKLSAgICAsIHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2VydmVyIHsKKyAgICAsIHB1
YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0ZyYW1lT2JzZXJ2ZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8UmVhbHRpbWVWaWRlb1NvdXJjZT4gY3JlYXRlKFJlZjxSZWFsdGltZVZp
ZGVvQ2FwdHVyZVNvdXJjZT4mJiBzb3VyY2UsIGJvb2wgc2hvdWxkVXNlSU9TdXJmYWNlID0gdHJ1
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFsdGltZVZpZGVvU291cmNlKFdURk1vdmUoc291
cmNlKSwgc2hvdWxkVXNlSU9TdXJmYWNlKSk7IH0KIApAQCAtNzEsMTEgKzcxLDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzb3VyY2VTdG9wcGVkKCkgZmluYWw7CiAgICAgYm9vbCBwcmV2ZW50U291
cmNlRnJvbVN0b3BwaW5nKCkgZmluYWw7CiAKLSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpW
aWRlb1NhbXBsZU9ic2VydmVyCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIC8vIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJs
ZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IGFkYXB0VmlkZW9GcmFtZShNZWRp
YVNhbXBsZSYpOworICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiBhZGFwdFZpZGVvRnJhbWUoVmlkZW9G
cmFtZSYpOwogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCmluZGV4IGY4MGNj
ZWVkZGE3NjBmZWZiN2U3ZmYzOWEwYzljZDc3YThiMGE4ZmMuLjZjZDI5MDczYmYwMWNlMmY0NWNj
MjE5NTFiYmE1NjZkNTU3NzFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaApAQCAtMjgsNyArMjgsNiBAQAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIk1lZGlh
U2FtcGxlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0
Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKaW5kZXggNmVlOTRhMGZhNGJmN2QwZGQ1ZGM0ODhiODAw
ZDFlYTBhNTNhZGQxMi4uNDAzMDRhYmU2OTA2Y2IxZjM0YzcwYWQyYzYwZDQwOGY2YmI3Yjk4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTI5Mywz
NSArMjkzLDM1IEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkK
ICAgICAgICAgdXBkYXRlRnJhbWVTaXplKCk7CiAgICAgfQogCi0gICAgYXV0byBzYW1wbGUgPSBX
VEY6OnN3aXRjaE9uKGZyYW1lLAotICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmV0YWluUHRy
PElPU3VyZmFjZVJlZj4mIHN1cmZhY2UpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgIGF1
dG8gdmlkZW9GcmFtZSA9IFdURjo6c3dpdGNoT24oZnJhbWUsCisgICAgICAgIFt0aGlzLCBzYW1w
bGVUaW1lXShSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiYgc3VyZmFjZSkgLT4gUmVmUHRyPFZpZGVv
RnJhbWU+IHsKICAgICAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VUcmFuc2ZlclNlc3Npb24t
PmNyZWF0ZU1lZGlhU2FtcGxlKHN1cmZhY2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlVmlkZW9GcmFt
ZShzdXJmYWNlLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkpOwogICAgICAgICB9LAotICAgICAg
ICBbdGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2ZUltYWdlPiYgaW1hZ2UpIC0+IFJlZlB0
cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0oUmVmUHRyPE5hdGl2
ZUltYWdlPiYgaW1hZ2UpIC0+IFJlZlB0cjxWaWRlb0ZyYW1lPiB7CiAgICAgICAgICAgICBpZiAo
IWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICBy
ZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoaW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKGltYWdlLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAgIH0sCi0gICAg
ICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+JiBzYW1w
bGUpIC0+IFJlZlB0cjxNZWRpYVNhbXBsZT4geworICAgICAgICBbdGhpcywgc2FtcGxlVGltZV0o
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiYgc2FtcGxlKSAtPiBSZWZQdHI8VmlkZW9GcmFt
ZT4gewogICAgICAgICAgICAgaWYgKCFzYW1wbGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVh
dGVNZWRpYVNhbXBsZShzYW1wbGUuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CisgICAgICAg
ICAgICByZXR1cm4gbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlVmlkZW9GcmFtZShzYW1w
bGUuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSk7CiAgICAgICAgIH0KICAgICApOwogCi0gICAg
aWYgKCFzYW1wbGUpIHsKKyAgICBpZiAoIXZpZGVvRnJhbWUpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBWaWRlb0ZyYW1lVGlt
ZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgIG1ldGFkYXRhLmNhcHR1cmVUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICB2aWRlb1NhbXBsZUF2YWlsYWJs
ZSgqc2FtcGxlLmdldCgpLCBtZXRhZGF0YSk7CisgICAgdmlkZW9GcmFtZUF2YWlsYWJsZSgqdmlk
ZW9GcmFtZS5nZXQoKSwgbWV0YWRhdGEpOwogfQogCiB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OmNhcHR1cmVyQ29uZmlndXJhdGlvbkNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IGI5ZWIwODVkNDc0OTM0YzVlMDUxYTc1YWIxZGQw
M2NjNTRlN2Y4NTIuLjQ0ODYyZDVjOTY0ZmNlZDk2MzJlNjRiNjEzNTc5ZDNlNzA0OThjYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jb2NvYS9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlh
U291cmNlLmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCiAjaW5j
bHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zNiwxMCArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLQotdHlwZWRlZiBz
dHJ1Y3QgQ0dJbWFnZSAqQ0dJbWFnZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNW
UGl4ZWxCdWZmZXJSZWY7Ci10eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVm
OwordXNpbmcgQ0dJbWFnZVJlZiA9IENHSW1hZ2UqOwordXNpbmcgQ1ZQaXhlbEJ1ZmZlclJlZiA9
IHN0cnVjdCBfX0NWQnVmZmVyKjsKK3VzaW5nIElPU3VyZmFjZVJlZiA9IHN0cnVjdCBfX0lPU3Vy
ZmFjZSo7Cit1c2luZyBDTVNhbXBsZUJ1ZmZlclJlZiA9IHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1
ZmZlcio7CiAKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWVkaWFUaW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1l
ZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggMjQzY2FhYTVj
NGNmNzFmZWE4NWQ5MjkyODhjNjkwNzU0YmFmOTQwNC4uODQ3MzcwNDFlMjdiY2E5NGVlYmQ4NDlj
YjI2MWY4NWY2ZmQ2ZTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVk
aWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
TWVkaWFTdHJlYW1TcmNFbnN1cmVTdHJlYW1Db2xsZWN0aW9uUG9zdGVkKFdlYktpdE1lZGlhU3Ry
ZWFtU3IKIAogY2xhc3MgSW50ZXJuYWxTb3VyY2UgZmluYWwgOiBwdWJsaWMgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU6Ok9ic2VydmVyLAogICAgIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpb1NhbXBsZU9ic2VydmVyLAotICAgIHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRl
b1NhbXBsZU9ic2VydmVyIHsKKyAgICBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9G
cmFtZU9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBJbnRlcm5hbFNvdXJjZShHc3RFbGVtZW50KiBwYXJlbnQsIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJiB0cmFjaywgY29uc3QgU3RyaW5nJiBwYWROYW1lKQpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKG1fdHJhY2suaGFzQXVkaW8oKSkKICAgICAgICAgICAgIG1fdHJh
Y2suc291cmNlKCkuYWRkQXVkaW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIGVsc2Ug
aWYgKG1fdHJhY2suaGFzVmlkZW8oKSkKLSAgICAgICAgICAgIG1fdHJhY2suc291cmNlKCkuYWRk
VmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3RyYWNrLnNvdXJjZSgp
LmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1faXNPYnNlcnZpbmcgPSB0
cnVlOwogICAgIH0KIApAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1f
dHJhY2suaGFzQXVkaW8oKSkKICAgICAgICAgICAgIG1fdHJhY2suc291cmNlKCkucmVtb3ZlQXVk
aW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIGVsc2UgaWYgKG1fdHJhY2suaGFzVmlk
ZW8oKSkKLSAgICAgICAgICAgIG1fdHJhY2suc291cmNlKCkucmVtb3ZlVmlkZW9TYW1wbGVPYnNl
cnZlcigqdGhpcyk7CisgICAgICAgICAgICBtX3RyYWNrLnNvdXJjZSgpLnJlbW92ZVZpZGVvRnJh
bWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1fdHJhY2sucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMp
OwogICAgIH0KIApAQCAtMjcyLDEzICsyNzIsMTMgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBW
aWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbAorICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJs
ZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbAog
ICAgIHsKICAgICAgICAgaWYgKCFtX3BhcmVudCB8fCAhbV9pc09ic2VydmluZykKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHNhbXBsZVNpemUgPSBzYW1wbGUucHJlc2VudGF0
aW9uU2l6ZSgpOwotICAgICAgICBJbnRTaXplIGNhcHR1cmVTaXplKHNhbXBsZVNpemUud2lkdGgo
KSwgc2FtcGxlU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGF1dG8gdmlkZW9GcmFtZVNpemUgPSB2
aWRlb0ZyYW1lLnByZXNlbnRhdGlvblNpemUoKTsKKyAgICAgICAgSW50U2l6ZSBjYXB0dXJlU2l6
ZSh2aWRlb0ZyYW1lU2l6ZS53aWR0aCgpLCB2aWRlb0ZyYW1lU2l6ZS5oZWlnaHQoKSk7CiAKICAg
ICAgICAgYXV0byBzZXR0aW5ncyA9IG1fdHJhY2suc2V0dGluZ3MoKTsKICAgICAgICAgbV9jb25m
aWd1cmVkU2l6ZS5zZXRXaWR0aChzZXR0aW5ncy53aWR0aCgpKTsKQEAgLTI4OSw4ICsyODksOCBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9jb25maWd1cmVkU2l6ZS5oZWlnaHQoKSkKICAgICAg
ICAgICAgIG1fY29uZmlndXJlZFNpemUuc2V0SGVpZ2h0KGNhcHR1cmVTaXplLmhlaWdodCgpKTsK
IAotICAgICAgICBhdXRvIHZpZGVvUm90YXRpb24gPSBzYW1wbGUudmlkZW9Sb3RhdGlvbigpOwot
ICAgICAgICBib29sIHZpZGVvTWlycm9yZWQgPSBzYW1wbGUudmlkZW9NaXJyb3JlZCgpOworICAg
ICAgICBhdXRvIHZpZGVvUm90YXRpb24gPSB2aWRlb0ZyYW1lLnJvdGF0aW9uKCk7CisgICAgICAg
IGJvb2wgdmlkZW9NaXJyb3JlZCA9IHZpZGVvRnJhbWUuaXNNaXJyb3JlZCgpOwogICAgICAgICBp
ZiAobV92aWRlb1JvdGF0aW9uICE9IHZpZGVvUm90YXRpb24gfHwgbV92aWRlb01pcnJvcmVkICE9
IHZpZGVvTWlycm9yZWQpIHsKICAgICAgICAgICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHZpZGVvUm90
YXRpb247CiAgICAgICAgICAgICBtX3ZpZGVvTWlycm9yZWQgPSB2aWRlb01pcnJvcmVkOwpAQCAt
MzAxLDggKzMwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudChw
YWQuZ2V0KCksIGdzdF9ldmVudF9uZXdfdGFnKGdzdF90YWdfbGlzdF9uZXcoR1NUX1RBR19JTUFH
RV9PUklFTlRBVElPTiwgb3JpZW50YXRpb24udXRmOCgpLmRhdGEoKSwgbnVsbHB0cikpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGF1dG8qIHZpZGVvRnJhbWUgPSBzdGF0aWNfY2FzdDxWaWRlb0Zy
YW1lR1N0cmVhbWVyKj4oJnNhbXBsZSk7Ci0gICAgICAgIGF1dG8qIGdzdFNhbXBsZSA9IHZpZGVv
RnJhbWUtPnNhbXBsZSgpOworICAgICAgICBhdXRvKiBnc3RTYW1wbGUgPSBzdGF0aWNfY2FzdDxW
aWRlb0ZyYW1lR1N0cmVhbWVyKj4oJnZpZGVvRnJhbWUpLT5zYW1wbGUoKTsKICAgICAgICAgaWYg
KCFtX2NvbmZpZ3VyZWRTaXplLmlzRW1wdHkoKSAmJiBtX2xhc3RLbm93blNpemUgIT0gbV9jb25m
aWd1cmVkU2l6ZSkgewogICAgICAgICAgICAgbV9sYXN0S25vd25TaXplID0gbV9jb25maWd1cmVk
U2l6ZTsKICAgICAgICAgICAgIHVwZGF0ZUJsYWNrRnJhbWUoZ3N0X3NhbXBsZV9nZXRfY2Fwcyhn
c3RTYW1wbGUpKTsKQEAgLTM4NCw3ICszODMsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9j
b25maWd1cmVkU2l6ZTsKICAgICBJbnRTaXplIG1fbGFzdEtub3duU2l6ZTsKICAgICBHUmVmUHRy
PEdzdFNhbXBsZT4gbV9ibGFja0ZyYW1lOwotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9u
IG1fdmlkZW9Sb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lIH07Cisg
ICAgVmlkZW9GcmFtZTo6Um90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgVmlkZW9GcmFtZTo6Um90
YXRpb246Ok5vbmUgfTsKICAgICBib29sIG1fdmlkZW9NaXJyb3JlZCB7IGZhbHNlIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
CmluZGV4IDE1MDA1MDJhM2VkYzA5OWIzZDJhYzZjMmZiZjU5OTllMGVkMmIwZjYuLjZiZDYwYWIy
NmY4MzA3ZDcyMTA4OTcxNmU3NWE0YmZjYWM1YTJkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmFtZShSZWY8Vmlk
ZW9GcmFtZUdTdHJlYW1lcj4mJiB2aWQKICAgICBpZiAoIWlzUHJvZHVjaW5nRGF0YSgpIHx8IG11
dGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2Vy
dmVycyhXVEZNb3ZlKHZpZGVvRnJhbWUpLCB7IH0pOworICAgIGRpc3BhdGNoVmlkZW9GcmFtZVRv
T2JzZXJ2ZXJzKFdURk1vdmUodmlkZW9GcmFtZSksIHsgfSk7CiB9CiAKIEdzdEZsb3dSZXR1cm4g
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpuZXdTYW1wbGVDYWxsYmFjayhHc3RFbGVtZW50
KiBzaW5rLCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UqIHNvdXJjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCmlu
ZGV4IDQwMWU0YTE0OTdhYzIxYTA5OTFjNmU1OTkxNTQzZDViOTVhMWYyYWUuLmQ1YjE0OTYwYzUw
NDAzNTlmMTM5YjI3OWYyN2E3NDhhZTUyMDFhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNjksMjQgKzY5
LDI0IEBAIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6TW9ja0Rpc3BsYXlDYXB0
dXJlU291cmNlR1N0cmVhbWVyKFJlYWx0aW1lTWVkCiAgICAgLCBtX3NvdXJjZShXVEZNb3ZlKHNv
dXJjZSkpCiAgICAgLCBtX2RldmljZVR5cGUoZGV2aWNlVHlwZSkKIHsKLSAgICBtX3NvdXJjZS0+
YWRkVmlkZW9TYW1wbGVPYnNlcnZlcigqdGhpcyk7CisgICAgbV9zb3VyY2UtPmFkZFZpZGVvRnJh
bWVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1l
cjo6fk1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcigpCiB7Ci0gICAgbV9zb3VyY2Ut
PnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVW
aWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNv
dXJjZUdTdHJlYW1lcjo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIG1fc291cmNlLT5yZW1v
dmVWaWRlb1NhbXBsZU9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlVmlkZW9G
cmFtZU9ic2VydmVyKCp0aGlzKTsKICAgICBtX3NvdXJjZS0+c3RvcCgpOwogfQogCiB2b2lkIE1v
Y2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6cmVxdWVzdFRvRW5kKE9ic2VydmVyJiBj
YWxsaW5nT2JzZXJ2ZXIpCiB7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFRvRW5k
KGNhbGxpbmdPYnNlcnZlcik7Ci0gICAgbV9zb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2
ZXIoKnRoaXMpOworICAgIG1fc291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMp
OwogICAgIG1fc291cmNlLT5yZXF1ZXN0VG9FbmQoY2FsbGluZ09ic2VydmVyKTsKIH0KIApAQCAt
OTYsOSArOTYsOSBAQCB2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6c2V0
TXV0ZWQoYm9vbCBpc011dGVkKQogICAgIG1fc291cmNlLT5zZXRNdXRlZChpc011dGVkKTsKIH0K
IAotdm9pZCBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OnZpZGVvU2FtcGxlQXZh
aWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1wbGUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRh
dGEpCit2b2lkIE1vY2tEaXNwbGF5Q2FwdHVyZVNvdXJjZUdTdHJlYW1lcjo6dmlkZW9GcmFtZUF2
YWlsYWJsZShWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1l
dGFkYXRhKQogewotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxl
KHNhbXBsZSwgbWV0YWRhdGEpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvRnJhbWVB
dmFpbGFibGUodmlkZW9GcmFtZSwgbWV0YWRhdGEpOwogfQogCiBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzJiBNb2NrRGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXI6OmNh
cGFiaWxpdGllcygpCkBAIC0xNjUsOCArMTY1LDggQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZUdTdHJlYW1lcjo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBzdGQ6Om9wdGlvbmFsPFZp
ZGVvRnJhbWVUaW1lTWV0YWRhdGE+IG1ldGFkYXRhOwogICAgIG1ldGFkYXRhLT5jYXB0dXJlVGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCk7CiAgICAgYXV0byBw
cmVzZW50YXRpb25UaW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKChlbGFwc2VkVGlt
ZSgpICsgMTAwX21zKS5zZWNvbmRzKCkpOwotICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJh
bWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihXVEZNb3ZlKCpwaXhlbEJ1ZmZlciks
IHByZXNlbnRhdGlvblRpbWUsIHNpemUoKSwgZnJhbWVSYXRlKCksIHNhbXBsZVJvdGF0aW9uKCks
IGZhbHNlLCBXVEZNb3ZlKG1ldGFkYXRhKSk7Ci0gICAgZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2Jz
ZXJ2ZXJzKHZpZGVvRnJhbWUuZ2V0KCksIHsgfSk7CisgICAgYXV0byB2aWRlb0ZyYW1lID0gVmlk
ZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFdURk1vdmUoKnBpeGVsQnVm
ZmVyKSwgcHJlc2VudGF0aW9uVGltZSwgc2l6ZSgpLCBmcmFtZVJhdGUoKSwgdmlkZW9GcmFtZVJv
dGF0aW9uKCksIGZhbHNlLCBXVEZNb3ZlKG1ldGFkYXRhKSk7CisgICAgZGlzcGF0Y2hWaWRlb0Zy
YW1lVG9PYnNlcnZlcnModmlkZW9GcmFtZS5nZXQoKSwgeyB9KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuaAppbmRleCAzMTYxN2UzOGE2MzVkYTlkNGFkZDY0NGVhMDg2NjdhZWJm
Yjk2NmZiLi4wMWMzYjU4MTI2MjcyNjJjMGZlMzNjNzY4ZWZjYzdhZjkzOTQxNjMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIu
aApAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuUmVzaXplVmlkZW9GcmFt
ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1jbGFzcyBNb2NrRGlzcGxh
eUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciB7CitjbGFzcyBNb2Nr
RGlzcGxheUNhcHR1cmVTb3VyY2VHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgUmVhbHRpbWVNZWRp
YVNvdXJjZSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IENhcHR1cmVE
ZXZpY2UmLCBTdHJpbmcmJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwogCkBAIC00OSw4ICs0
OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE11dGVkKGJvb2wgaXNNdXRlZCkgZmluYWw7CiAK
IHByb3RlY3RlZDoKLSAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb1NhbXBsZU9ic2Vy
dmVyCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYsIFZpZGVvRnJh
bWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
RnJhbWVPYnNlcnZlcgorICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgTW9ja0Rpc3Bs
YXlDYXB0dXJlU291cmNlR1N0cmVhbWVyKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIFJlZjxN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcj4mJiwgU3RyaW5nJiYsIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA4YWNhMDQzOWY0OWJjYzA2
MjkyNDVhZjZiN2E5ZTg1MjkxZjk1ZjFjLi41NzczMjc0NmM2YmEwYmUyNTQwMGFkZjEwMzRiNTBk
ZGU1MWRlZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQg
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlR1N0cmVhbWVyOjpzZXR0aW5nc0RpZENoYW5nZShP
cHRpb25TZXQ8UmVhbHRpbWVNCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUdTdHJl
YW1lcjo6ZGlzcGF0Y2hTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgZ3N0U2FtcGxlKQogewog
ICAgIGF1dG8qIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihnc3RTYW1wbGUuZ2V0KCkp
OwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZVdy
YXBwZWRTYW1wbGUoZ3N0U2FtcGxlLCBmcm9tR3N0Q2xvY2tUaW1lKEdTVF9CVUZGRVJfUFRTKGJ1
ZmZlcikpKSwgeyB9KTsKKyAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3RyZWFt
ZXI6OmNyZWF0ZVdyYXBwZWRTYW1wbGUoZ3N0U2FtcGxlLCBmcm9tR3N0Q2xvY2tUaW1lKEdTVF9C
VUZGRVJfUFRTKGJ1ZmZlcikpKSwgeyB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL1JlcGxh
eUtpdENhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbQppbmRleCAzNWI5NzBkNjA4ZTM4ZTM1NTY3
YzkzMzM1OTc2ZmU4YmM1ZmE1ZjEzLi41M2JlNWRkZDAxODM2ZmQ5YmMzYzllZDRiNTgyMTBmYTE0
NDZhZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9pb3MvUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbQpAQCAtMTU2LDcgKzE1
Niw3IEBAIGJvb2wgUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZTo6c3RhcnQoKQogICAgIH0pOwogCiAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgaWRlbnRpZmllcl0oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJv
cikgewotICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHNhZmUgdG8gY2FsbCBgdmlkZW9T
YW1wbGVBdmFpbGFibGVgIGZyb20gYW55IHRocmVhZC4gVGVzdCB0aGlzIGFuZCBnZXQgcmlkIG9m
IHRoaXMgbWFpbiB0aHJlYWQgaG9wLgorICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIGJlIHNh
ZmUgdG8gY2FsbCBgdmlkZW9GcmFtZUF2YWlsYWJsZWAgZnJvbSBhbnkgdGhyZWFkLiBUZXN0IHRo
aXMgYW5kIGdldCByaWQgb2YgdGhpcyBtYWluIHRocmVhZCBob3AuCiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMsIGVycm9yID0gcmV0YWluUHRyKGVycm9y
KSwgaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IWVycm9yKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0Zy
YW1lTGliV2ViUlRDLmNwcAppbmRleCBlZjg3MDAyMGM5Yjk2MjU1NzcyOWRmN2MxZTRjNTg2ZTVm
YTM3Zjc4Li5hMmYxMGM0NGY4ZGFkNjk4YTViNWZkOWU2OTdlMWMzNDMwZDM2YjJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9G
cmFtZUxpYldlYlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8VmlkZW9GcmFtZUxpYldlYlJUQz4gVmlkZW9G
cmFtZUxpYldlYlJUQzo6Y3JlYXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlz
TWlycm9yZWQsIFZpZGVvUm90YXRpb24gcm90YXRpb24sIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBDb252ZXJzaW9uQ2FsbGJhY2smJiBjb252
ZXJzaW9uQ2FsbGJhY2spCitSZWY8VmlkZW9GcmFtZUxpYldlYlJUQz4gVmlkZW9GcmFtZUxpYldl
YlJUQzo6Y3JlYXRlKE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lLCBib29sIGlzTWlycm9yZWQs
IFJvdGF0aW9uIHJvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1l
QnVmZmVyPiYmIGJ1ZmZlciwgQ29udmVyc2lvbkNhbGxiYWNrJiYgY29udmVyc2lvbkNhbGxiYWNr
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnJhbWVMaWJXZWJSVEMocHJlc2Vu
dGF0aW9uVGltZSwgaXNNaXJyb3JlZCwgcm90YXRpb24sIFdURk1vdmUoYnVmZmVyKSwgV1RGTW92
ZShjb252ZXJzaW9uQ2FsbGJhY2spKSk7CiB9CiAKLVZpZGVvRnJhbWVMaWJXZWJSVEM6OlZpZGVv
RnJhbWVMaWJXZWJSVEMoTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3Jl
ZCwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9GcmFtZUJ1ZmZlcj4mJiBidWZmZXIsIENvbnZlcnNpb25DYWxsYmFjayYmIGNvbnZlcnNpb25D
YWxsYmFjaykKK1ZpZGVvRnJhbWVMaWJXZWJSVEM6OlZpZGVvRnJhbWVMaWJXZWJSVEMoTWVkaWFU
aW1lIHByZXNlbnRhdGlvblRpbWUsIGJvb2wgaXNNaXJyb3JlZCwgUm90YXRpb24gcm90YXRpb24s
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYgYnVmZmVyLCBD
b252ZXJzaW9uQ2FsbGJhY2smJiBjb252ZXJzaW9uQ2FsbGJhY2spCiAgICAgOiBWaWRlb0ZyYW1l
KHByZXNlbnRhdGlvblRpbWUsIGlzTWlycm9yZWQsIHJvdGF0aW9uKQogICAgICwgbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQogICAgICwgbV9zaXplKG1fYnVmZmVyLT53aWR0aCgpLCAgbV9idWZm
ZXItPmhlaWdodCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9WaWRlb0ZyYW1lTGliV2ViUlRDLmgKaW5kZXgg
M2E2NjM5MDdhNDZiOGY3OTNkNzUwODhkODhiYzQ5NjU5YzM2MmU0NC4uNGM5ZTVhNmNjNTIzZmYw
ODdmMWYwNjBiMGFmZjUxNGU1M2FhYzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL1ZpZGVvRnJhbWVMaWJXZWJSVEMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvVmlkZW9GcmFtZUxp
YldlYlJUQy5oCkBAIC00MiwxNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
VmlkZW9GcmFtZUxpYldlYlJUQyBmaW5hbCA6IHB1YmxpYyBWaWRlb0ZyYW1lIHsKIHB1YmxpYzoK
ICAgICB1c2luZyBDb252ZXJzaW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4od2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyJik+OwotICAgIHN0YXRpYyBSZWY8
VmlkZW9GcmFtZUxpYldlYlJUQz4gY3JlYXRlKE1lZGlhVGltZSwgYm9vbCBpc01pcnJvcmVkLCBW
aWRlb1JvdGF0aW9uLCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVy
PiYmLCBDb252ZXJzaW9uQ2FsbGJhY2smJik7CisgICAgc3RhdGljIFJlZjxWaWRlb0ZyYW1lTGli
V2ViUlRDPiBjcmVhdGUoTWVkaWFUaW1lLCBib29sIGlzTWlycm9yZWQsIFJvdGF0aW9uLCBydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVmZmVyPiYmLCBDb252ZXJzaW9uQ2Fs
bGJhY2smJik7CiAKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW1lQnVm
ZmVyPiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiBwcml2YXRlOgotICAgIFZpZGVv
RnJhbWVMaWJXZWJSVEMoTWVkaWFUaW1lLCBib29sIGlzTWlycm9yZWQsIFZpZGVvUm90YXRpb24s
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+JiYsIENvbnZlcnNp
b25DYWxsYmFjayYmKTsKKyAgICBWaWRlb0ZyYW1lTGliV2ViUlRDKE1lZGlhVGltZSwgYm9vbCBp
c01pcnJvcmVkLCBSb3RhdGlvbiwgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFt
ZUJ1ZmZlcj4mJiwgQ29udmVyc2lvbkNhbGxiYWNrJiYpOwogCiAgICAgLy8gVmlkZW9GcmFtZQog
ICAgIEZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9z
aXplOyB9Ci0gICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdmlkZW9QaXhlbEZvcm1hdDsgfQorICAgIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV92aWRlb1BpeGVsRm9ybWF0OyB9CiAgICAgQ1ZQaXhlbEJ1ZmZl
clJlZiBwaXhlbEJ1ZmZlcigpIGNvbnN0IGZpbmFsOwogCiAgICAgY29uc3QgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlcj4gbV9idWZmZXI7CkBAIC02Nyw3ICs2Nyw2
IEBAIHByaXZhdGU6CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6Vmlk
ZW9GcmFtZUxpYldlYlJUQykKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSkgeyByZXR1cm4gdmlkZW9GcmFtZS5pc0xpYldlYlJUQygp
OyB9Ci0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBt
ZWRpYVNhbXBsZSkgeyByZXR1cm4gaXM8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVkaWFTYW1wbGUp
ICYmIGlzPFdlYkNvcmU6OlZpZGVvRnJhbWVMaWJXZWJSVEM+KGRvd25jYXN0PFdlYkNvcmU6OlZp
ZGVvRnJhbWU+KG1lZGlhU2FtcGxlKSk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1l
ci9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZUluY29t
aW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCmluZGV4IDdkOTUwZjY3ODAwNjViMmU5ZTU3NmQ0
NmM1NTZhMTNhNzUzYzUwZTkuLmNmMDJlOWMzNjE2NjFhMThiZGZiMjllMTBlNzhkNDJiOGRhYzQ5
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlTGliV2ViUlRDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVh
bWVyL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKQEAgLTYxLDExICs2
MSwxMSBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUxpYldlYlJUQzo6T25GcmFt
ZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYQogICAgIGF1dG8gcHJlc2VudGF0aW9uVGlt
ZSA9IGZyb21Hc3RDbG9ja1RpbWUoZnJhbWUudGltZXN0YW1wX3VzKCkpOwogICAgIGlmIChmcmFt
ZS52aWRlb19mcmFtZV9idWZmZXIoKS0+dHlwZSgpID09IHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZl
cjo6VHlwZTo6a05hdGl2ZSkgewogICAgICAgICBhdXRvKiBmcmFtZWJ1ZmZlciA9IHN0YXRpY19j
YXN0PEdTdHJlYW1lclZpZGVvRnJhbWVMaWJXZWJSVEMqPihmcmFtZS52aWRlb19mcmFtZV9idWZm
ZXIoKS5nZXQoKSk7Ci0gICAgICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFZpZGVvRnJhbWVHU3Ry
ZWFtZXI6OmNyZWF0ZVdyYXBwZWRTYW1wbGUoZnJhbWVidWZmZXItPmdldFNhbXBsZSgpLCBwcmVz
ZW50YXRpb25UaW1lLCBzdGF0aWNfY2FzdDxNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbj4oZnJh
bWUucm90YXRpb24oKSkpLCB7IH0pOworICAgICAgICB2aWRlb0ZyYW1lZUF2YWlsYWJsZShWaWRl
b0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVXcmFwcGVkU2FtcGxlKGZyYW1lYnVmZmVyLT5nZXRTYW1w
bGUoKSwgcHJlc2VudGF0aW9uVGltZSwgc3RhdGljX2Nhc3Q8VmlkZW9GcmFtZTo6Um90YXRpb24+
KGZyYW1lLnJvdGF0aW9uKCkpKSwgeyB9KTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIGdz
dFNhbXBsZSA9IGNvbnZlcnRMaWJXZWJSVENWaWRlb0ZyYW1lVG9HU3RyZWFtZXJTYW1wbGUoZnJh
bWUpOwogICAgICAgICBhdXRvIG1ldGFkYXRhID0gc3RkOjptYWtlX29wdGlvbmFsKG1ldGFkYXRh
RnJvbVZpZGVvRnJhbWUoZnJhbWUpKTsKLSAgICAgICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoVmlk
ZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoZ3N0U2FtcGxlKSwgeyB9LCBwcmVzZW50
YXRpb25UaW1lLCBzdGF0aWNfY2FzdDxNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbj4oZnJhbWUu
cm90YXRpb24oKSksIGZhbHNlLCBXVEZNb3ZlKG1ldGFkYXRhKSksIHsgfSk7CisgICAgICAgIHZp
ZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlKFdURk1vdmUoZ3N0
U2FtcGxlKSwgeyB9LCBwcmVzZW50YXRpb25UaW1lLCBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lOjpS
b3RhdGlvbj4oZnJhbWUucm90YXRpb24oKSksIGZhbHNlLCBXVEZNb3ZlKG1ldGFkYXRhKSksIHsg
fSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxp
YldlYlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvZ3N0cmVhbWVyL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5jcHAKaW5k
ZXggYzZkY2FkNzUyNWVkYmU2OGQxMTBhZTAyMTI1NzFjYjM2YjRmODZmYi4uMGQxNTczMDA3MDUx
MjYxZmY3NDUzOTM4NWJiZjc4MzgzNjFhOTMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2VMaWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
TGliV2ViUlRDLmNwcApAQCAtNTAsMTkgKzUwLDE5IEBAIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUxpYldlYlJUQzo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDKFJlZjxN
CiB7CiB9CiAKLXZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlTGliV2ViUlRDOjp2aWRl
b1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFk
YXRhKQordm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VMaWJXZWJSVEM6OnZpZGVvRnJh
bWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkKIHsKLSAgICBzd2l0Y2ggKHNhbXBsZS52aWRlb1JvdGF0aW9uKCkpIHsKLSAgICBjYXNlIE1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOgorICAgIHN3aXRjaCAodmlkZW9GcmFtZS5y
b3RhdGlvbigpKSB7CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZToKICAgICAg
ICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzA7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd246
CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjoKICAgICAgICAgbV9j
dXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzE4MDsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAgY2Fz
ZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ6CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9u
ID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl85MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDoKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJv
dGF0aW9uOjpMZWZ0OgogICAgICAgICBtX2N1cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVv
Um90YXRpb25fMjcwOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVyL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VMaWJXZWJSVEMuaAppbmRleCA3YjFkZWRjMTg4ZTMzNWE1YThkMDYyZmUyZjAzYTFkYWYxNTM0
YzllLi43MDI0ODE0YWFhZjZiN2JmMWZiNGZmMTliYmE4MWZmMzNmZDZiNWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvZ3N0cmVhbWVy
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUxpYldlYlJUQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9nc3RyZWFtZXIvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlTGliV2ViUlRDLmgKQEAgLTQxLDggKzQxLDggQEAgcHJpdmF0ZToKIAog
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IGNyZWF0ZUJs
YWNrRnJhbWUoc2l6ZV90LCBzaXplX3QpIGZpbmFsOwogCi0gICAgLy8gUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgLy8g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFtZU9ic2VydmVyIEFQSQorICAgIHZvaWQgdmlk
ZW9GcmFtZUF2YWlsYWJsZShWaWRlb0ZyYW1lJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmlu
YWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oCmluZGV4IDI0ZTExYWUxM2ZiYmU3YzFjODZmZmE2YThmNzBiMjRkZjYxZmU2YTEuLjU4MGNj
YmJmNTU0NDExMmMzNmIzZjEzODZkMzVmOWZmYmVhZTk1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5oCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOyB9CiAgICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZp
bmFsOwogCi0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gc2FtcGxlUm90YXRpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3NhbXBsZVJvdGF0aW9uOyB9CisgICAgVmlkZW9GcmFtZTo6
Um90YXRpb24gdmlkZW9GcmFtZVJvdGF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92aWRl
b0ZyYW1lUm90YXRpb247IH0KICAgICB2b2lkIHNldEZyYW1lUmF0ZVdpdGhQcmVzZXQoZG91Ymxl
LCBSZWZQdHI8VmlkZW9QcmVzZXQ+KSBmaW5hbDsKICAgICBib29sIHByZWZlcnNQcmVzZXQoVmlk
ZW9QcmVzZXQmKSBmaW5hbDsKICAgICB2b2lkIGdlbmVyYXRlUHJlc2V0cygpIGZpbmFsOwpAQCAt
OTksNyArOTksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTZXNzaW9uU2l6ZUFuZEZyYW1l
UmF0ZSgpOwogICAgIGJvb2wgc2V0UHJlc2V0KE5TU3RyaW5nKik7Ci0gICAgdm9pZCBjb21wdXRl
U2FtcGxlUm90YXRpb24oKTsKKyAgICB2b2lkIGNvbXB1dGVWaWRlb0ZyYW1lUm90YXRpb24oKTsK
ICAgICBBVkZyYW1lUmF0ZVJhbmdlKiBmcmFtZUR1cmF0aW9uRm9yRnJhbWVSYXRlKGRvdWJsZSk7
CiAKICAgICAvLyBPcmllbnRhdGlvbk5vdGlmaWVyOjpPYnNlcnZlciBBUEkKQEAgLTExOCwxMyAr
MTE4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVWZXJpZnlDYXB0dXJpbmdUaW1lcigp
OwogICAgIHZvaWQgdmVyaWZ5SXNDYXB0dXJpbmcoKTsKIAotICAgIFJlZlB0cjxNZWRpYVNhbXBs
ZT4gbV9idWZmZXI7CisgICAgUmVmUHRyPFZpZGVvRnJhbWU+IG1fYnVmZmVyOwogICAgIFJldGFp
blB0cjxBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247
CiAKICAgICBpbnQgbV9zZW5zb3JPcmllbnRhdGlvbiB7IDAgfTsKICAgICBpbnQgbV9kZXZpY2VP
cmllbnRhdGlvbiB7IDAgfTsKLSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3NhbXBs
ZVJvdGF0aW9uIHsgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRl
b0ZyYW1lOjpSb3RhdGlvbiBtX3ZpZGVvRnJhbWVSb3RhdGlvbiB7IFZpZGVvRnJhbWU6OlJvdGF0
aW9uOjpOb25lIH07CiAKICAgICBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbQppbmRleCAzNzhjOWFmOTdkNzUyNWNkZmMyODU1ZmUxODQwYTk2ODYxYWRjMTdlLi4y
YmM2MmZlODU0NTdjNTM2M2I0YjA1OGJmY2NjYWQ3MTMzMDY5MmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9D
YXB0dXJlU291cmNlLm1tCkBAIC0yNTEsNyArMjUxLDcgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MoKQogICAgIHNldHRp
bmdzLnNldEZyYW1lUmF0ZShmcmFtZVJhdGUoKSk7CiAKICAgICBhdXRvIHNpemUgPSB0aGlzLT5z
aXplKCk7Ci0gICAgaWYgKG1fc2FtcGxlUm90YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb246OkxlZnQgfHwgbV9zYW1wbGVSb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3Rh
dGlvbjo6UmlnaHQpCisgICAgaWYgKG1fdmlkZW9GcmFtZVJvdGF0aW9uID09IFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpMZWZ0IHx8IG1fdmlkZW9GcmFtZVJvdGF0aW9uID09IFZpZGVvRnJhbWU6OlJv
dGF0aW9uOjpSaWdodCkKICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKICAg
ICAKICAgICBzZXR0aW5ncy5zZXRXaWR0aChzaXplLndpZHRoKCkpOwpAQCAtNDk2LDcgKzQ5Niw3
IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogICAg
IHNldFNlc3Npb25TaXplQW5kRnJhbWVSYXRlKCk7CiAKICAgICBtX3NlbnNvck9yaWVudGF0aW9u
ID0gc2Vuc29yT3JpZW50YXRpb25Gcm9tVmlkZW9PdXRwdXQobV92aWRlb091dHB1dC5nZXQoKSk7
Ci0gICAgY29tcHV0ZVNhbXBsZVJvdGF0aW9uKCk7CisgICAgY29tcHV0ZVZpZGVvRnJhbWVSb3Rh
dGlvbigpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjEsMzggKzUyMSwzOCBAQCB2b2lk
IEFWVmlkZW9DYXB0dXJlU291cmNlOjpvcmllbnRhdGlvbkNoYW5nZWQoaW50IG9yaWVudGF0aW9u
KQogewogICAgIEFTU0VSVChvcmllbnRhdGlvbiA9PSAwIHx8IG9yaWVudGF0aW9uID09IDkwIHx8
IG9yaWVudGF0aW9uID09IC05MCB8fCBvcmllbnRhdGlvbiA9PSAxODApOwogICAgIG1fZGV2aWNl
T3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKLSAgICBjb21wdXRlU2FtcGxlUm90YXRpb24oKTsK
LSAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAicm90YXRpb24g
PSAiLCBtX3NhbXBsZVJvdGF0aW9uLCAiLCBvcmllbnRhdGlvbiA9ICIsIG1fZGV2aWNlT3JpZW50
YXRpb24pOworICAgIGNvbXB1dGVWaWRlb0ZyYW1lUm90YXRpb24oKTsKKyAgICBBTFdBWVNfTE9H
X0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAicm90YXRpb24gPSAiLCBtX3ZpZGVvRnJh
bWVSb3RhdGlvbiwgIiwgb3JpZW50YXRpb24gPSAiLCBtX2RldmljZU9yaWVudGF0aW9uKTsKIH0K
IAotdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y29tcHV0ZVNhbXBsZVJvdGF0aW9uKCkKK3Zv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNvbXB1dGVWaWRlb0ZyYW1lUm90YXRpb24oKQogewog
ICAgIGJvb2wgZnJvbnRDYW1lcmEgPSBbZGV2aWNlKCkgcG9zaXRpb25dID09IEFWQ2FwdHVyZURl
dmljZVBvc2l0aW9uRnJvbnQ7Ci0gICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gc2FtcGxl
Um90YXRpb247CisgICAgVmlkZW9GcmFtZTo6Um90YXRpb24gdmlkZW9GcmFtZVJvdGF0aW9uOwog
ICAgIHN3aXRjaCAobV9zZW5zb3JPcmllbnRhdGlvbiAtIG1fZGV2aWNlT3JpZW50YXRpb24pIHsK
ICAgICBjYXNlIDA6Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb246Ok5vbmU7CisgICAgICAgIHZpZGVvRnJhbWVSb3RhdGlvbiA9IFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpOb25lOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDE4MDoKICAgICBjYXNl
IC0xODA6Ci0gICAgICAgIHNhbXBsZVJvdGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246OlVwc2lkZURvd247CisgICAgICAgIHZpZGVvRnJhbWVSb3RhdGlvbiA9IFZpZGVvRnJhbWU6
OlJvdGF0aW9uOjpVcHNpZGVEb3duOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDkwOgogICAg
IGNhc2UgLTI3MDoKLSAgICAgICAgc2FtcGxlUm90YXRpb24gPSBmcm9udENhbWVyYSA/IE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0IDogTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246
OlJpZ2h0OworICAgICAgICB2aWRlb0ZyYW1lUm90YXRpb24gPSBmcm9udENhbWVyYSA/IFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpMZWZ0IDogVmlkZW9GcmFtZTo6Um90YXRpb246OlJpZ2h0OwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIC05MDoKICAgICBjYXNlIDI3MDoKLSAgICAgICAgc2FtcGxl
Um90YXRpb24gPSBmcm9udENhbWVyYSA/IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdo
dCA6IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OworICAgICAgICB2aWRlb0ZyYW1l
Um90YXRpb24gPSBmcm9udENhbWVyYSA/IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodCA6IFZp
ZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgc2FtcGxlUm90YXRpb24gPSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICAgICAgdmlkZW9GcmFtZVJvdGF0
aW9uID0gVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmU7CiAgICAgfQotICAgIGlmIChzYW1wbGVS
b3RhdGlvbiA9PSBtX3NhbXBsZVJvdGF0aW9uKQorICAgIGlmICh2aWRlb0ZyYW1lUm90YXRpb24g
PT0gbV92aWRlb0ZyYW1lUm90YXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2FtcGxl
Um90YXRpb24gPSBzYW1wbGVSb3RhdGlvbjsKKyAgICBtX3ZpZGVvRnJhbWVSb3RhdGlvbiA9IHZp
ZGVvRnJhbWVSb3RhdGlvbjsKICAgICBub3RpZnlTZXR0aW5nc0RpZENoYW5nZU9ic2VydmVycyh7
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pOwogfQogCkBAIC01NjEsMTIgKzU2MSwxMiBA
QCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxl
QnVmZmVyRnJvbUNvbm5lY3Rpb24oQVZDYQogICAgIGlmICgrK21fZnJhbWVzQ291bnQgPD0gZnJh
bWVzVG9Ecm9wV2hlblN0YXJ0aW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHZpZGVv
RnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVCdWZmZXIsIFtjYXB0dXJlQ29ubmVj
dGlvbiBpc1ZpZGVvTWlycm9yZWRdLCBtX3NhbXBsZVJvdGF0aW9uKTsKKyAgICBhdXRvIHZpZGVv
RnJhbWUgPSBWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShzYW1wbGVCdWZmZXIsIFtjYXB0dXJlQ29ubmVj
dGlvbiBpc1ZpZGVvTWlycm9yZWRdLCBtX3ZpZGVvRnJhbWVSb3RhdGlvbik7CiAgICAgbV9idWZm
ZXIgPSAmdmlkZW9GcmFtZS5nZXQoKTsKICAgICBzZXRJbnRyaW5zaWNTaXplKGV4cGFuZGVkSW50
U2l6ZSh2aWRlb0ZyYW1lLT5wcmVzZW50YXRpb25TaXplKCkpKTsKICAgICBWaWRlb0ZyYW1lVGlt
ZU1ldGFkYXRhIG1ldGFkYXRhOwogICAgIG1ldGFkYXRhLmNhcHR1cmVUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICBkaXNwYXRjaE1lZGlhU2FtcGxl
VG9PYnNlcnZlcnMoV1RGTW92ZSh2aWRlb0ZyYW1lKSwgbWV0YWRhdGEpOworICAgIGRpc3BhdGNo
VmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKFdURk1vdmUodmlkZW9GcmFtZSksIG1ldGFkYXRhKTsKIH0K
IAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRD
aGFuZ2UoYm9vbCBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQppbmRleCAwMzUzMjU4YWI2MWY0MmRhNDIzYzE2NTc1NDFjMDg3MDM1M2JkZGQ0Li5jMDU1ZDNj
NjMzZGQwZWYwNjE0YWVmM2NiY2QwNzkxOWM0NzkxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC05MywxNiArOTMsMTYgQEAgdm9pZCBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVyKCkKICAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKSkKICAgICAg
ICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAKLSAgICBh
dXRvIHNhbXBsZVRpbWUgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoKGVsYXBzZWRUaW1l
KCkgKyAxMDBfbXMpLnNlY29uZHMoKSk7Ci0gICAgYXV0byBzYW1wbGVCdWZmZXIgPSBtX2ltYWdl
VHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShwbGF0Zm9ybUltYWdlLmdldCgpLCBz
YW1wbGVUaW1lLCBzaXplKCksIHNhbXBsZVJvdGF0aW9uKCkpOwotICAgIGlmICghc2FtcGxlQnVm
ZmVyKQorICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERv
dWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcykuc2Vjb25kcygpKTsKKyAgICBhdXRvIHZpZGVv
RnJhbWUgPSBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVWaWRlb0ZyYW1lKHBsYXRmb3Jt
SW1hZ2UuZ2V0KCksIHByZXNlbnRhdGlvblRpbWUsIHNpemUoKSwgdmlkZW9GcmFtZVJvdGF0aW9u
KCkpOworICAgIGlmICghdmlkZW9GcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBj
YXB0dXJlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCk7Ci0g
ICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgc2FtcGxlQnVmZmVyID0gV1RGTW92ZShzYW1wbGVCdWZmZXIpLCBjYXB0dXJlVGltZV0o
KSBtdXRhYmxlIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCB2aWRlb0ZyYW1lID0gV1RGTW92ZSh2aWRlb0ZyYW1lKSwgY2Fw
dHVyZVRpbWVdKCkgbXV0YWJsZSB7CiAgICAgICAgIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0
YWRhdGE7CiAgICAgICAgIG1ldGFkYXRhLmNhcHR1cmVUaW1lID0gY2FwdHVyZVRpbWU7Ci0gICAg
ICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycygqc2FtcGxlQnVmZmVyLCBtZXRhZGF0
YSk7CisgICAgICAgIGRpc3BhdGNoVmlkZW9GcmFtZVRvT2JzZXJ2ZXJzKCp2aWRlb0ZyYW1lLCBt
ZXRhZGF0YSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmgKaW5kZXggOTJjMmZlYzY4MmRkNmFlNzY0ZmJiMjkwNGNhYzhmZWZh
NDk2NzM0Zi4uMWU5MTMzZTlmNWM5NGY0MjJlNDgyMjZjNWZiM2JjZjI2NWJlOTg0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKQEAgLTQ5LDgg
KzQ5LDggQEAgcHJpdmF0ZToKICAgICBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYShy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcm
Jik7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRnJvbVZpZGVv
RnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJik7CiAgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xS
ZWYgcGl4ZWxCdWZmZXJQb29sKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgd2VicnRjOjpC
dWZmZXJUeXBlKTsKLSAgICBSZWZQdHI8VmlkZW9GcmFtZT4gdG9WaWRlb0ZyYW1lKGNvbnN0IHdl
YnJ0Yzo6VmlkZW9GcmFtZSYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uKTsKLSAgICBSZWY8
VmlkZW9GcmFtZT4gY3JlYXRlVmlkZW9TYW1wbGVGcm9tQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVm
ZmVyUmVmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgaW50NjRfdCk7CisgICAgUmVmUHRy
PFZpZGVvRnJhbWU+IHRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmLCBWaWRl
b0ZyYW1lOjpSb3RhdGlvbik7CisgICAgUmVmPFZpZGVvRnJhbWU+IGNyZWF0ZVZpZGVvU2FtcGxl
RnJvbUNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiwgVmlkZW9GcmFtZTo6Um90YXRpb24s
IGludDY0X3QpOwogCiAgICAgLy8gcnRjOjpWaWRlb1NpbmtJbnRlcmZhY2UKICAgICB2b2lkIE9u
RnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggZWUyODIzYzFlYTczODVk
OWExODQwMTk2YzdkY2JiNmIzMTA0MWIwNS4uZTAyZjgzMDM4YTVjMWFiYWUyODEzMGZhZDQ5NDE1
NDZkM2JmYzIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5tbQpAQCAtOTEsMTIgKzkxLDEyIEBAIENWUGl4ZWxCdWZmZXJQb29sUmVmIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlclBvb2woc2l6ZV90IHdpCiAg
ICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpOwogfQogCi1SZWY8VmlkZW9GcmFtZT4g
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OmNyZWF0ZVZpZGVvU2FtcGxlRnJvbUNW
UGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gcm90YXRpb24sIGludDY0X3QgdGltZVN0YW1wKQorUmVmPFZpZGVvRnJhbWU+
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpjcmVhdGVWaWRlb1NhbXBsZUZyb21D
VlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIFZpZGVvRnJhbWU6OlJv
dGF0aW9uIHJvdGF0aW9uLCBpbnQ2NF90IHRpbWVTdGFtcCkKIHsKICAgICByZXR1cm4gVmlkZW9G
cmFtZUNWOjpjcmVhdGUoTWVkaWFUaW1lKHRpbWVTdGFtcCwgMTAwMDAwMCksIGZhbHNlLCByb3Rh
dGlvbiwgcGl4ZWxCdWZmZXIpOwogfQogCi1SZWZQdHI8VmlkZW9GcmFtZT4gUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlQ29jb2E6OnRvVmlkZW9GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJh
bWUmIGZyYW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbikKK1JlZlB0cjxW
aWRlb0ZyYW1lPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6dG9WaWRlb0ZyYW1l
KGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJv
dGF0aW9uKQogewogICAgIGlmIChtdXRlZCgpKSB7CiAgICAgICAgIGlmICghbV9ibGFja0ZyYW1l
IHx8IG1fYmxhY2tGcmFtZVdpZHRoICE9IGZyYW1lLndpZHRoKCkgfHwgbV9ibGFja0ZyYW1lSGVp
Z2h0ICE9IGZyYW1lLmhlaWdodCgpKSB7CkBAIC0xNDQsMjAgKzE0NCwyMCBAQCB2b2lkIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9G
cmFtZSYgd2VicnRjVgogICAgIHVuc2lnbmVkIHdpZHRoID0gd2VicnRjVmlkZW9GcmFtZS53aWR0
aCgpOwogICAgIHVuc2lnbmVkIGhlaWdodCA9IHdlYnJ0Y1ZpZGVvRnJhbWUuaGVpZ2h0KCk7CiAK
LSAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbjsKKyAgICBWaWRlb0ZyYW1l
OjpSb3RhdGlvbiByb3RhdGlvbjsKICAgICBzd2l0Y2ggKHdlYnJ0Y1ZpZGVvRnJhbWUucm90YXRp
b24oKSkgewogICAgIGNhc2Ugd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8wOgotICAgICAgICByb3Rh
dGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lOworICAgICAgICByb3RhdGlv
biA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpOb25lOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOgotICAgICAgICByb3RhdGlvbiA9IE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOworICAgICAgICByb3RhdGlvbiA9IFZpZGVv
RnJhbWU6OlJvdGF0aW9uOjpVcHNpZGVEb3duOwogICAgICAgICBicmVhazsKICAgICBjYXNlIHdl
YnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA6Ci0gICAgICAgIHJvdGF0aW9uID0gTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246OlJpZ2h0OworICAgICAgICByb3RhdGlvbiA9IFZpZGVvRnJhbWU6OlJv
dGF0aW9uOjpSaWdodDsKICAgICAgICAgc3RkOjpzd2FwKHdpZHRoLCBoZWlnaHQpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcwOgotICAgICAgICBy
b3RhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpMZWZ0OworICAgICAgICByb3Rh
dGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OwogICAgICAgICBzdGQ6OnN3YXAod2lk
dGgsIGhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2
b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZyYW1lKGNvbnN0IHdlYnJ0
Yzo6VmlkZW9GcmFtZSYgd2VicnRjVgogICAgICAgICByZXR1cm47CiAKICAgICBzZXRJbnRyaW5z
aWNTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpOwotICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KCp2aWRlb0ZyYW1lLCBtZXRhZGF0YUZyb21WaWRlb0ZyYW1lKHdlYnJ0Y1ZpZGVvRnJhbWUpKTsK
KyAgICB2aWRlb0ZyYW1lQXZhaWxhYmxlKCp2aWRlb0ZyYW1lLCBtZXRhZGF0YUZyb21WaWRlb0Zy
YW1lKHdlYnJ0Y1ZpZGVvRnJhbWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAKaW5kZXgg
M2EzZmNiZjk2ZWY4MjAxZjkwYmNlODdlNWUyZGViYzFkZDFjZDYwNi4uYmNlZjZhMTUwNjFkMDJh
NjI1ODY4MzM1MjVkMmY4ZTJhOWJiNDc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwCkBAIC02Myw0NiArNjMsNDYgQEAgUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
KFJlZjxNZWRpYVN0cmUKIHsKIH0KIAotdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSkKK3ZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnZp
ZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVN
ZXRhZGF0YSkKIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoISgrK21fbnVt
YmVyT2ZGcmFtZXMgJSA2MCkpCiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImZy
YW1lICIsIG1fbnVtYmVyT2ZGcmFtZXMpOwogI2VuZGlmCiAKLSAgICBzd2l0Y2ggKHNhbXBsZS52
aWRlb1JvdGF0aW9uKCkpIHsKLSAgICBjYXNlIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpO
b25lOgorICAgIHN3aXRjaCAodmlkZW9GcmFtZS5yb3RhdGlvbigpKSB7CisgICAgY2FzZSBWaWRl
b0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZToKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJy
dGM6OmtWaWRlb1JvdGF0aW9uXzA7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd246CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3Rh
dGlvbjo6VXBzaWRlRG93bjoKICAgICAgICAgbV9jdXJyZW50Um90YXRpb24gPSB3ZWJydGM6OmtW
aWRlb1JvdGF0aW9uXzE4MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbjo6UmlnaHQ6CisgICAgY2FzZSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Umln
aHQ6CiAgICAgICAgIG1fY3VycmVudFJvdGF0aW9uID0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl85
MDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6
TGVmdDoKKyAgICBjYXNlIFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OgogICAgICAgICBtX2N1
cnJlbnRSb3RhdGlvbiA9IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMjcwOwogICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICBib29sIHNob3VsZEFwcGx5Um90YXRpb24gPSBtX3Nob3VsZEFwcGx5
Um90YXRpb24gJiYgbV9jdXJyZW50Um90YXRpb24gIT0gd2VicnRjOjprVmlkZW9Sb3RhdGlvbl8w
OwotICAgIGlmICghc2hvdWxkQXBwbHlSb3RhdGlvbiAmJiBpczxWaWRlb0ZyYW1lPihzYW1wbGUp
KSB7Ci0gICAgICAgIGlmIChkb3duY2FzdDxWaWRlb0ZyYW1lPihzYW1wbGUpLmlzUmVtb3RlUHJv
eHkoKSkgewotICAgICAgICAgICAgUmVmIHZpZGVvRnJhbWUgeyBkb3duY2FzdDxWaWRlb0ZyYW1l
PihzYW1wbGUpIH07Ci0gICAgICAgICAgICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9u
U2l6ZSgpOwotICAgICAgICAgICAgc2VuZEZyYW1lKHdlYnJ0Yzo6dG9XZWJSVENWaWRlb0ZyYW1l
QnVmZmVyKCZ2aWRlb0ZyYW1lLmxlYWtSZWYoKSwKKyAgICBpZiAoIXNob3VsZEFwcGx5Um90YXRp
b24pIHsKKyAgICAgICAgaWYgKHZpZGVvRnJhbWUuaXNSZW1vdGVQcm94eSgpKSB7CisgICAgICAg
ICAgICBSZWYgcmVtb3RlVmlkZW9GcmFtZSB7IHZpZGVvRnJhbWUgfTsKKyAgICAgICAgICAgIGF1
dG8gc2l6ZSA9IHZpZGVvRnJhbWUucHJlc2VudGF0aW9uU2l6ZSgpOworICAgICAgICAgICAgc2Vu
ZEZyYW1lKHdlYnJ0Yzo6dG9XZWJSVENWaWRlb0ZyYW1lQnVmZmVyKCZyZW1vdGVWaWRlb0ZyYW1l
LmxlYWtSZWYoKSwKICAgICAgICAgICAgICAgICBbXShhdXRvKiBwb2ludGVyKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4ocG9pbnRlciktPnBpeGVsQnVmZmVyKCk7IH0sCiAgICAg
ICAgICAgICAgICAgW10oYXV0byogcG9pbnRlcikgeyBzdGF0aWNfY2FzdDxWaWRlb0ZyYW1lKj4o
cG9pbnRlciktPmRlcmVmKCk7IH0sCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihz
aXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KCkpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGRvd25jYXN0PFZpZGVvRnJhbWU+
KHNhbXBsZSkuaXNMaWJXZWJSVEMoKSkgewotICAgICAgICAgICAgc2VuZEZyYW1lKGRvd25jYXN0
PFZpZGVvRnJhbWVMaWJXZWJSVEM+KHNhbXBsZSkuYnVmZmVyKCkpOworICAgICAgICBpZiAodmlk
ZW9GcmFtZS5pc0xpYldlYlJUQygpKSB7CisgICAgICAgICAgICBzZW5kRnJhbWUoZG93bmNhc3Q8
VmlkZW9GcmFtZUxpYldlYlJUQz4odmlkZW9GcmFtZSkuYnVmZmVyKCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNhbXBs
ZS5waXhlbEJ1ZmZlcigpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSB2aWRlb0ZyYW1lLnBpeGVs
QnVmZmVyKCk7CiAgICAgYXV0byBwaXhlbEZvcm1hdFR5cGUgPSBDVlBpeGVsQnVmZmVyR2V0UGl4
ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBjb252ZXJ0ZWRCdWZmZXIgPSBwaXhlbEJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXggZmU3ZGRkMTA4NjZjNzc5NTljZjAy
NzMyYzczYTFkZWUyYmU2NDFiZC4uYmZjYmFmZDJhYzQ0NGIyNzVkMTZkOWRkNjFlOGI1ZjNlOTcx
ZmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
LmgKQEAgLTQ0LDggKzQ0LDggQEAgcHJpdmF0ZToKIAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlZpZGVvRnJhbWVCdWZmZXI+IGNyZWF0ZUJsYWNrRnJhbWUoc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0KSBmaW5hbDsKIAotICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVv
U2FtcGxlT2JzZXJ2ZXIgQVBJCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOworICAgIC8vIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciBBUEkKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFp
bGFibGUoVmlkZW9GcmFtZSYsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEpIGZpbmFsOwogCiAgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnRUb1lVVihDVlBpeGVsQnVmZmVyUmVm
KTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRlUGl4ZWxCdWZmZXIoQ1ZQ
aXhlbEJ1ZmZlclJlZiwgd2VicnRjOjpWaWRlb1JvdGF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCAzOWI5OThkNGY1NDU5Yjk5
MjQyMDU1NjNiOTZmN2RkMmIyNTRkODFkLi5kNDc4ZTEzOTc1ZTZkN2Q3ZTc1ZDJjMTRiNGE3MzMw
MzhjMWY0N2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZUNvY29hLm1tCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0ICJBZmZpbmVUcmFuc2Zvcm0uaCIK
ICNpbXBvcnQgIkltYWdlUm90YXRpb25TZXNzaW9uVlQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
LSNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCiAjaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
LmgiCiAjaW1wb3J0ICJSZWFsdGltZVZpZGVvVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxwYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggM2NmNzQ2MGM4MGUzYmUx
ZDViYTNmMGNlZDdjMTliMjVkZjI5YWJmMi4uNGZlYzRkOTM5YmIyOTJkNjQ2NDlmOTVkZTJkNzdl
OTcyODY4MDcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzZXR0
aW5ncygpCiAgICAgc2V0dGluZ3Muc2V0RnJhbWVSYXRlKGZyYW1lUmF0ZSgpKTsKICAgICBhdXRv
IHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgaWYgKG1vY2tDYW1lcmEoKSkgewotICAgICAgICBp
ZiAobV9kZXZpY2VPcmllbnRhdGlvbiA9PSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVm
dCB8fCBtX2RldmljZU9yaWVudGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpS
aWdodCkKKyAgICAgICAgaWYgKG1fZGV2aWNlT3JpZW50YXRpb24gPT0gVmlkZW9GcmFtZTo6Um90
YXRpb246OkxlZnQgfHwgbV9kZXZpY2VPcmllbnRhdGlvbiA9PSBWaWRlb0ZyYW1lOjpSb3RhdGlv
bjo6UmlnaHQpCiAgICAgICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogICAg
IH0KICAgICBzZXR0aW5ncy5zZXRXaWR0aChzaXplLndpZHRoKCkpOwpAQCAtNDk2LDE2ICs0OTYs
MTYgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6b3JpZW50YXRpb25DaGFuZ2VkKGlu
dCBvcmllbnRhdGlvbikKICAgICBhdXRvIGRldmljZU9yaWVudGF0aW9uID0gbV9kZXZpY2VPcmll
bnRhdGlvbjsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CiAgICAgY2FzZSAwOgotICAgICAg
ICBtX2RldmljZU9yaWVudGF0aW9uID0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU7
CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9u
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA5MDoKLSAgICAgICAgbV9kZXZpY2VPcmllbnRh
dGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDsKKyAgICAgICAgbV9kZXZp
Y2VPcmllbnRhdGlvbiA9IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpSaWdodDsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSAtOTA6Ci0gICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb24gPSBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9
IFZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIDE4
MDoKLSAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbiA9IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uOjpVcHNpZGVEb3duOworICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uID0gVmlkZW9GcmFt
ZTo6Um90YXRpb246OlVwc2lkZURvd247CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IGZjNWZjN2FhMWNi
NzZmYTZkOTczOTA1ODY1YmZhZmVjZWRlMzZiYzcuLmQ4YmFjNTYxZGE0YjEzZmMzNzIxZGMwODQ0
NWM1NDJkMTQ5ZDA1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOwogICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFu
Z2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIG92ZXJyaWRl
OwotICAgIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHNhbXBsZVJvdGF0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZXZpY2VPcmllbnRhdGlvbjsgfQorICAgIFZpZGVvRnJhbWU6OlJv
dGF0aW9uIHZpZGVvRnJhbWVSb3RhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGV2aWNl
T3JpZW50YXRpb247IH0KICAgICB2b2lkIGdlbmVyYXRlUHJlc2V0cygpIG92ZXJyaWRlOwogCiAg
ICAgSW50U2l6ZSBjYXB0dXJlU2l6ZSgpIGNvbnN0OwpAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZh
dGU6CiAgICAgQ29sb3IgbV9maWxsQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKICAgICBNb2NrTWVk
aWFEZXZpY2UgbV9kZXZpY2U7CiAgICAgUmVmUHRyPFZpZGVvUHJlc2V0PiBtX3ByZXNldDsKLSAg
ICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX2RldmljZU9yaWVudGF0aW9uIHsgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKKyAgICBWaWRlb0ZyYW1lOjpSb3RhdGlvbiBt
X2RldmljZU9yaWVudGF0aW9uIHsgVmlkZW9GcmFtZTo6Um90YXRpb246Ok5vbmUgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBlODZhZTVmZjJiY2M1YzI3MzU0MmE5Y2VmMzVlNzRkN2EwYThmNjIzLi41NjcwYjZiZmE2
N2UzZGI2ZGI3NjgyODk2NmI2MmZiNTExOGRjM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC01NTI1LDcgKzU1MjUsNyBAQCB2b2lkIEludGVybmFsczo6c3RvcE9ic2Vy
dmluZ1JlYWx0aW1lTWVkaWFTb3VyY2UoKQogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6VmlkZW86CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpTY3JlZW46
CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgIG1f
dHJhY2tTb3VyY2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBt
X3RyYWNrU291cmNlLT5yZW1vdmVWaWRlb0ZyYW1lT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTU1Miw3ICs1NTUyLDcgQEAgdm9pZCBJbnRlcm5h
bHM6Om9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW86CiAgICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpTY3JlZW46CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgIG1fdHJhY2tTb3VyY2UtPmFkZFZpZGVvU2FtcGxlT2Jz
ZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX3RyYWNrU291cmNlLT5hZGRWaWRlb0ZyYW1lT2JzZXJ2
ZXIoKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTU2OSwxMyAr
NTU2OSwxMyBAQCB2b2lkIEludGVybmFsczo6bWVkaWFTdHJlYW1UcmFja1ZpZGVvRnJhbWVSb3Rh
dGlvbihET01Qcm9taXNlRGVmZXJyZWQ8SURMU2hvcnQ+JgogICAgIHByb21pc2UucmVzb2x2ZSht
X3RyYWNrVmlkZW9Sb3RhdGlvbik7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjp2aWRlb1NhbXBsZUF2
YWlsYWJsZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKQordm9p
ZCBJbnRlcm5hbHM6OnZpZGVvRnJhbWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwg
VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBzYW1wbGUgPSBSZWYgeyBzYW1wbGUgfV0gewor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHZpZGVvRnJhbWUgPSBSZWYgeyB2aWRlb0ZyYW1lIH1dIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV90cmFja1ZpZGVvU2FtcGxlQ291bnQr
KzsKLSAgICAgICAgbV90cmFja1ZpZGVvUm90YXRpb24gPSBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBs
ZS0+dmlkZW9Sb3RhdGlvbigpKTsKKyAgICAgICAgbV90cmFja1ZpZGVvUm90YXRpb24gPSBzdGF0
aWNfY2FzdDxpbnQ+KHZpZGVvRnJhbWUtPnJvdGF0aW9uKCkpOwogICAgICAgICBpZiAoIW1fbmV4
dFRyYWNrRnJhbWVQcm9taXNlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01NTgzLDcgKzU1
ODMsNyBAQCB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUm
IHNhbXBsZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YQogICAgICAgICBpZiAoIXZpZGVvU2V0dGlu
Z3Mud2lkdGgoKSB8fCAhdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBhdXRvIHJnYmEgPSBzYW1wbGUtPmdldFJHQkFJbWFnZURhdGEoKTsKKyAg
ICAgICAgYXV0byByZ2JhID0gdmlkZW9GcmFtZS0+Z2V0UkdCQUltYWdlRGF0YSgpOwogICAgICAg
ICBpZiAoIXJnYmEpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IGE5MmFmZDgyNTVhMWVjZDRjNzlmZWE1ZTU1MzIyZjk5ZDUzMGJlZmQuLjk3
MzQ2ZDlkYjI5NWM1NGYyZDRlMDVhZDFlMmUwOGE2MmE2YzgxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMTY1LDcgKzE2NSw3IEBAIGNsYXNzIEludGVybmFscyBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFscz4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9u
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlOjpPYnNlcnZlcgogICAgICwgcHJpdmF0ZSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb1Nh
bXBsZU9ic2VydmVyCi0gICAgLCBwcml2YXRlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvU2Ft
cGxlT2JzZXJ2ZXIKKyAgICAsIHByaXZhdGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9GcmFt
ZU9ic2VydmVyCiAjZW5kaWYKICAgICB7CiBwdWJsaWM6CkBAIC0xMjk2LDcgKzEyOTYsNyBAQCBw
cml2YXRlOgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAvLyBSZWFsdGltZU1lZGlh
U291cmNlOjpPYnNlcnZlciBBUEkKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlh
U2FtcGxlJiwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgdm9pZCB2aWRlb0Zy
YW1lQXZhaWxhYmxlKFZpZGVvRnJhbWUmLCBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsK
ICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpb1NhbXBsZU9ic2VydmVyIEFQSQogICAg
IHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmlu
YWwgeyBtX3RyYWNrQXVkaW9TYW1wbGVDb3VudCsrOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hLmNwcAppbmRleCAwZTE2ZGJhZjgwNzU1MzdjMTQ3NDM2N2UzOTllZWY1ZjM0ZTgy
ZjI0Li5iM2ExOTgwZTM3ZjIzMWZiOTEyMTgyYTAwNzZmMDdhZWUzMThiMWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC01NiwxMyArNTYsOSBAQCB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21WaWRlb0ZyYW1lKFdlYktpdDo6UmVt
b3RlVmlkZW9GcmFtZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgLy8gTm90ZTogVGhpcyBleHRyYSBjYXN0aW5nIGlzIG5lZWRl
ZCBzaW5jZSBWaWRlb0ZyYW1lcyBhcmUgc3RpbGwgTWVkaWFTYW1wbGVzLgotICAgIFJlZlB0cjxX
ZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+IHZpZGVvRnJhbWVDVjsKLSAgICBpZiAoaXM8V2ViQ29yZTo6
VmlkZW9GcmFtZUNWPigqdmlkZW9GcmFtZSkpCi0gICAgICAgIHZpZGVvRnJhbWVDViA9ICZkb3du
Y2FzdDxXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y+KCp2aWRlb0ZyYW1lKTsKLSAgICBlbHNlIGlmIChp
czxXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM+KCp2aWRlb0ZyYW1lKSkKLSAgICAgICAgdmlk
ZW9GcmFtZUNWID0gZG93bmNhc3Q8V2ViQ29yZTo6TWVkaWFTYW1wbGVBVkZPYmpDPigqdmlkZW9G
cmFtZSkudmlkZW9GcmFtZSgpOwotICAgIGVsc2UgeworCisgICAgYXV0byB2aWRlb0ZyYW1lQ1Yg
PSB2aWRlb0ZyYW1lLT5hc1ZpZGVvRnJhbWVDVigpOworICAgIGlmICghdmlkZW9GcmFtZUNWKSB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBQcm9ncmFtbWluZyBlcnJvciwgbm90
IGEgSVBDIGF0dGFjay4KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwLmNwcAppbmRleCAwOGI4MGE1OGZlZjk1ZDJh
YWM3MGNlY2RlOWNlNjcyMGE1N2E3OTkyLi40YmFjOWIzNjg1MzNlYTA5NzE1MjNkMTMyNDc1ZmQy
NDRhMzBmNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9GcmFtZU9iamVjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlQVZGT2JqQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlk
ZW9GcmFtZUNWLmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjZW5k
aWYKQEAgLTg0LDcgKzgzLDcgQEAgdm9pZCBSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcDo6Y2xv
c2UoKQogICAgIC8vIFRPRE86IGFkZCBjYW4gaGFwcGVuIGFmdGVyIHN0b3BwaW5nLgogfQogCi1S
ZW1vdGVWaWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhl
YXA6OmFkZChSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYgZnJhbWUpCitSZW1vdGVWaWRlb0Zy
YW1lUHJveHk6OlByb3BlcnRpZXMgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA6OmFkZChSZWY8
V2ViQ29yZTo6VmlkZW9GcmFtZT4mJiBmcmFtZSkKIHsKICAgICBhdXRvIHdyaXRlID0gUmVtb3Rl
VmlkZW9GcmFtZVdyaXRlUmVmZXJlbmNlOjpnZW5lcmF0ZUZvckFkZCgpOwogICAgIGF1dG8gbmV3
RnJhbWVSZWZlcmVuY2UgPSB3cml0ZS5yZXRpcmVkUmVmZXJlbmNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5oCmluZGV4IDUzZWQ1NmUwYWUwZGVlZjYxNTRjOGNlMDRhOWIxNmNmMTUwZTY4YjAuLmMw
OGE1YTRjNzdmNjA1MjE2NjI3YzUwYjEwYTQxMWVmMWFiOTJjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb0ZyYW1lT2JqZWN0
SGVhcC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIlJlbW90ZVZpZGVvRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIlRocmVhZFNhZmVPYmplY3RI
ZWFwLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVmlkZW9GcmFtZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiU2hhcmVk
VmlkZW9GcmFtZS5oIgpAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAgICAgflJlbW90ZVZpZGVv
RnJhbWVPYmplY3RIZWFwKCk7CiAKICAgICB2b2lkIGNsb3NlKCk7Ci0gICAgUmVtb3RlVmlkZW9G
cmFtZVByb3h5OjpQcm9wZXJ0aWVzIGFkZChSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYpOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4gZ2V0KFJlbW90ZVZpZGVvRnJhbWVSZWFk
UmVmZXJlbmNlJiYgcmVhZCkgeyByZXR1cm4gbV9oZWFwLnJldGlyZShXVEZNb3ZlKHJlYWQpLCAw
X3MpOyB9CisgICAgUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIGFkZChSZWY8V2Vi
Q29yZTo6VmlkZW9GcmFtZT4mJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OlZpZGVvRnJhbWU+IGdl
dChSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSYmIHJlYWQpIHsgcmV0dXJuIG1faGVhcC5y
ZXRpcmUoV1RGTW92ZShyZWFkKSwgMF9zKTsgfQogCiAgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9y
SVBDKFJlZjxSZW1vdGVWaWRlb0ZyYW1lT2JqZWN0SGVhcD4mJikgeyBjbG9zZSgpOyB9CiAKQEAg
LTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgY29uc3QgUmVmPElQQzo6Q29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgIFRocmVhZFNhZmVPYmplY3RIZWFwPFJlbW90ZVZp
ZGVvRnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTYW1wbGU+PiBtX2hlYXA7
CisgICAgVGhyZWFkU2FmZU9iamVjdEhlYXA8UmVtb3RlVmlkZW9GcmFtZUlkZW50aWZpZXIsIFJl
ZlB0cjxXZWJDb3JlOjpWaWRlb0ZyYW1lPj4gbV9oZWFwOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q0NvZGVjc1Byb3h5Lm1tIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3NQcm94eS5tbQppbmRleCBkOGEyOTIyNjYxNmIyNjQ3ZjExZjg0NTYwMjlmM2RlZGVl
MjNlMjE0Li4wZjgyZDk0NTVhOTk1NGViMzBlYjZlM2FhMWZmMTBmM2E2NzkyMmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ0NvZGVjc1Byb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDQ29kZWNz
UHJveHkubW0KQEAgLTk3LDcgKzk3LDcgQEAgYXV0byBMaWJXZWJSVENDb2RlY3NQcm94eTo6Y3Jl
YXRlRGVjb2RlckNhbGxiYWNrKFJUQ0RlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIKICAgICBp
ZiAodXNlUmVtb3RlRnJhbWVzKQogICAgICAgICB2aWRlb0ZyYW1lT2JqZWN0SGVhcCA9IG1fdmlk
ZW9GcmFtZU9iamVjdEhlYXAucHRyKCk7CiAgICAgcmV0dXJuIFtpZGVudGlmaWVyLCBjb25uZWN0
aW9uID0gbV9jb25uZWN0aW9uLCByZXNvdXJjZU93bmVyID0gbV9yZXNvdXJjZU93bmVyLCB2aWRl
b0ZyYW1lT2JqZWN0SGVhcCA9IFdURk1vdmUodmlkZW9GcmFtZU9iamVjdEhlYXApXSAoQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgdWludDMyX3QgdGltZVN0YW1wTnMsIHVpbnQzMl90IHRp
bWVTdGFtcCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gdmlkZW9GcmFtZSA9IFdlYkNvcmU6OlZp
ZGVvRnJhbWVDVjo6Y3JlYXRlKE1lZGlhVGltZSh0aW1lU3RhbXBOcywgMSksIGZhbHNlLCBXZWJD
b3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgcGl4ZWxCdWZmZXIpOworICAg
ICAgICBhdXRvIHZpZGVvRnJhbWUgPSBXZWJDb3JlOjpWaWRlb0ZyYW1lQ1Y6OmNyZWF0ZShNZWRp
YVRpbWUodGltZVN0YW1wTnMsIDEpLCBmYWxzZSwgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRp
b246Ok5vbmUsIHBpeGVsQnVmZmVyKTsKICAgICAgICAgaWYgKHJlc291cmNlT3duZXIpCiAgICAg
ICAgICAgICB2aWRlb0ZyYW1lLT5zZXRPd25lcnNoaXBJZGVudGl0eShyZXNvdXJjZU93bmVyKTsK
ICAgICAgICAgaWYgKHZpZGVvRnJhbWVPYmplY3RIZWFwKSB7CkBAIC0yMTUsMTYgKzIxNSwxNiBA
QCBMaWJXZWJSVENDb2RlY3NQcm94eTo6RW5jb2RlciogTGliV2ViUlRDQ29kZWNzUHJveHk6OmZp
bmRFbmNvZGVyKFJUQ0VuY29kZXJJZGVudAogICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwog
fQogCi1zdGF0aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90
YXRpb24oV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCitzdGF0
aWMgaW5saW5lIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiB0b1dlYlJUQ1ZpZGVvUm90YXRpb24oV2Vi
Q29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24gcm90YXRpb24pCiB7CiAgICAgc3dpdGNoIChyb3Rh
dGlvbikgewotICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5v
bmU6CisgICAgY2FzZSBXZWJDb3JlOjpWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZToKICAgICAg
ICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMDsKLSAgICBjYXNlIFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duOgorICAgIGNhc2UgV2ViQ29yZTo6
VmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd246CiAgICAgICAgIHJldHVybiB3ZWJydGM6
OmtWaWRlb1JvdGF0aW9uXzE4MDsKLSAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpSaWdodDoKKyAgICBjYXNlIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9u
OjpSaWdodDoKICAgICAgICAgcmV0dXJuIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fOTA7Ci0gICAg
Y2FzZSBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdDoKKyAgICBjYXNl
IFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uOjpMZWZ0OgogICAgICAgICByZXR1cm4gd2Vi
cnRjOjprVmlkZW9Sb3RhdGlvbl8yNzA7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKaW5kZXggNTJmNjE4YTM4NmMzMGVhZjZkYmUwODgwMTY0ZjRjOWYzMjY5
OGIxMS4uYmYwYjk0MmU0NjEzNTM0ZDBhOWZhODNiYzg4ODI0YWZiYTExYzkxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPCiAgICAgbV93
cml0ZXItPmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKCptX2F1ZGlvQnVmZmVyTGlzdCwgbV9kZXNj
cmlwdGlvbiwgdGltZSwgbnVtYmVyT2ZGcmFtZXMpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFNoYXJlZFZpZGVvRnJhbWUmJiBzaGFyZWRWaWRl
b0ZyYW1lKQordm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlKFNo
YXJlZFZpZGVvRnJhbWUmJiBzaGFyZWRWaWRlb0ZyYW1lKQogewogICAgIGlmIChhdXRvIGZyYW1l
ID0gbV9zaGFyZWRWaWRlb0ZyYW1lUmVhZGVyLnJlYWQoV1RGTW92ZShzaGFyZWRWaWRlb0ZyYW1l
KSkpCiAgICAgICAgIG1fd3JpdGVyLT5hcHBlbmRWaWRlb0ZyYW1lKCpmcmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5o
CmluZGV4IDFjYzFiYjNiZmEwMDgyMDAxMWIwNzU5YmIyNzBlZGMzZTUzNTQxNTYuLjNmODFlZmI0
MzQ1NzE1ZTg3ZWNjNWVhMDVhMDg0ODA4NjRjMDg5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC03MSw3ICs3
MSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGF1
ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiwg
Y29uc3QgV2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDY0X3QgbnVtYmVy
T2ZGcmFtZXMpOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSwgdWlu
dDY0X3QgbnVtYmVyT2ZGcmFtZXMpOwotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoU2hh
cmVkVmlkZW9GcmFtZSYmKTsKKyAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoU2hhcmVkVmlk
ZW9GcmFtZSYmKTsKICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmKTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBhdXNlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVzc2FnZXMuaW4KaW5kZXggOWI3
ZDk2ZjYzZGQ0MjhmMmEwZGNjZmI2NThlMmU4OWE5YzZmNjAwNy4uMTJiYzgwNTBiNjQ1ZTNiMDgz
ODNjZmRiYmEzZTZiZDNiODQyMGZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgpA
QCAtMjYsNyArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZWNvcmRlciBOb3RSZWZD
b3VudGVkIHsKICAgICBBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZChXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAgICAgQXVkaW9T
YW1wbGVzQXZhaWxhYmxlKE1lZGlhVGltZSB0aW1lLCB1aW50NjRfdCBudW1iZXJPZkZyYW1lcykK
LSAgICBWaWRlb1NhbXBsZUF2YWlsYWJsZShzdHJ1Y3QgV2ViS2l0OjpTaGFyZWRWaWRlb0ZyYW1l
IGZyYW1lKQorICAgIFZpZGVvRnJhbWVBdmFpbGFibGUoc3RydWN0IFdlYktpdDo6U2hhcmVkVmlk
ZW9GcmFtZSBmcmFtZSkKICAgICBGZXRjaERhdGEoKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGJ1
ZmZlciwgZG91YmxlIHRpbWVDb2RlKQogICAgIFN0b3BSZWNvcmRpbmcoKSAtPiAoKQogICAgIFBh
dXNlKCkgLT4gKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCA4ZDA0
ZjJjYzVhNzg5YTdhNGU5NTg3NDBjN2I2OGI1MzkzZTViYTRiLi4xZDdhZGFiNTY5MzkzMmVkOGQz
ZDM5OGE0MDRkZDkzZTY0MDIxODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Y3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhCiAgICAgbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZVJvb3RMYXllckFmZmluZVRyYW5zZm9ybSh0cmFu
c2Zvcm0pOwogfQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRl
Qm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gcm90YXRpb24pCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6dXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IGJvdW5kcywgV2ViQ29yZTo6VmlkZW9G
cmFtZTo6Um90YXRpb24gcm90YXRpb24pCiB7CiAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPnVwZGF0ZVJvb3RMYXllckJvdW5kc0FuZFBvc2l0aW9uKGJvdW5kcywgcm90YXRpb24sIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTaG91bGRVcGRhdGVSb290TGF5ZXI6Olllcyk7
CiB9CkBAIC0xMTYsMTUgKzExNiwxNSBAQCB2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6cGF1c2UoKQogICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5wYXVzZSgpOwog
fQogCi12b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1ZShTaGFyZWRW
aWRlb0ZyYW1lJiYgZnJhbWUpCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVZpZGVvRnJhbWUoU2hhcmVkVmlkZW9GcmFtZSYmIGZyYW1lKQogewogICAgIGlmIChh
dXRvIHZpZGVvRnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVSZWFkZXIucmVhZChXVEZNb3ZlKGZy
YW1lKSkpCi0gICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5lbnF1ZXVlKHZpZGVv
RnJhbWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnByZXNlbnRhdGlvblRpbWUoKSk7Cisg
ICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5lbnF1ZXVlQnVmZmVyKHZpZGVvRnJh
bWUtPnBpeGVsQnVmZmVyKCksIHZpZGVvRnJhbWUtPnByZXNlbnRhdGlvblRpbWUoKSk7CiB9CiAK
LXZvaWQgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxl
cygpCit2b2lkIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJWaWRlb0ZyYW1l
cygpCiB7Ci0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmNsZWFyRW5xdWV1ZWRTYW1w
bGVzKCk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmNsZWFyVmlkZW9GcmFtZXMo
KTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oCmluZGV4IDE2MWYzYzk1OWVkM2NiYTdiMzgyY2UyMmY1MjQ4YjZkMWJjYjI0OGYuLjU5
NzY4ODg5NzNkMTJmOWRlNmRlZWQ2ZjUzYjJjMjBkNjg3MTljYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaApAQCAtNzAsMTMgKzcwLDEzIEBAIHByaXZhdGU6CiAjZW5kaWYKICAg
ICB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9vbCBoaWRl
Um9vdExheWVyKTsKICAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5z
Zm9ybSk7Ci0gICAgdm9pZCB1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIFdlYkNvcmU6
Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uKTsKKyAgICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBv
c2l0aW9uKENHUmVjdCwgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRpb24pOwogICAgIHZvaWQg
Zmx1c2goKTsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKTsKICAgICB2b2lkIHBsYXko
KTsKICAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBlbnF1ZXVlKFNoYXJlZFZpZGVvRnJhbWUm
Jik7Ci0gICAgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpOworICAgIHZvaWQgZW5xdWV1ZVZp
ZGVvRnJhbWUoU2hhcmVkVmlkZW9GcmFtZSYmKTsKKyAgICB2b2lkIGNsZWFyVmlkZW9GcmFtZXMo
KTsKICAgICB2b2lkIHNldFNoYXJlZFZpZGVvRnJhbWVTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUm
Jik7CiAgICAgdm9pZCBzZXRTaGFyZWRWaWRlb0ZyYW1lTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
bWVzc2FnZXMuaW4KaW5kZXggNzMxMGViYWY5YTJmOTE1ODBlMWZkODFjZDlkYTJiNjY5ODBlZmE3
NS4uNTI0ZjQ1ZWI2ZjA1Y2U1YWFmYmUxMTI2ZmE2ZjY1ZGZkZjdmMzkxYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KQEAgLTI5LDExICsyOSwx
MSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgTm90UmVmQ291
bnRlZCB7CiAjZW5kaWYKICAgICBVcGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5
ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikKICAgICBVcGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtKQotICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCBib3VuZHMsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQor
ICAgIFVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBib3VuZHMsIFdlYkNvcmU6OlZpZGVv
RnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogICAgIEZsdXNoKCkKICAgICBGbHVzaEFuZFJlbW92
ZUltYWdlKCkKLSAgICBFbnF1ZXVlKHN0cnVjdCBXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJh
bWUpCi0gICAgQ2xlYXJFbnF1ZXVlZFNhbXBsZXMoKQorICAgIEVucXVldWVWaWRlb0ZyYW1lKHN0
cnVjdCBXZWJLaXQ6OlNoYXJlZFZpZGVvRnJhbWUgZnJhbWUpCisgICAgQ2xlYXJWaWRlb0ZyYW1l
cygpCiAgICAgUGxheSgpCiAgICAgUGF1c2UoKQogICAgIFNldFNoYXJlZFZpZGVvRnJhbWVTZW1h
cGhvcmUoSVBDOjpTZW1hcGhvcmUgc2VtYXBob3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cAppbmRleCAyZDQ1M2U0ZGE3OWMyZDgyZDFhOTFkMDQyZjM0NTFlYjhlZGRjNTBiLi5mYzU3NDgy
NDVjMWU0MjM3YTIyZWY1MzE4MjhjMDU0NWRkNzdlNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGNsYXNz
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5CiAgICAgOiBwcml2YXRl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyCiAgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIKLSAgICAsIHByaXZhdGUgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW9TYW1wbGVPYnNlcnZlciB7CisgICAgLCBwcml2YXRlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvRnJhbWVPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgU291cmNlUHJveHkoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZp
ZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUHJvY2Vzc0lkZW50aXR5
JiYgcmVzb3VyY2VPd25lciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBSZWZQ
dHI8UmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA+JiYgdmlkZW9GcmFtZU9iamVjdEhlYXApCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpWaWRlbzoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpT
Y3JlZW46CiAgICAgICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6V2luZG93Ogot
ICAgICAgICAgICAgbV9zb3VyY2UtPmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAg
ICAgICAgICAgbV9zb3VyY2UtPmFkZFZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25l
OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05MSw3ICs5MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzoKICAg
ICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpTY3JlZW46CiAgICAgICAgIGNh
c2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6V2luZG93OgotICAgICAgICAgICAgbV9zb3Vy
Y2UtPnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICAgICAgbV9zb3Vy
Y2UtPnJlbW92ZVZpZGVvRnJhbWVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpOb25lOgogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNzgsMTYgKzE3OCwxNiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgbV9jYXB0dXJlU2VtYXBob3JlLT5zaWduYWwoKTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8TWVkaWFTYW1wbGU+IHJvdGF0ZVZpZGVvRnJhbWVJZk5lZWRlZChNZWRpYVNhbXBsZSYg
c2FtcGxlKQorICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiByb3RhdGVWaWRlb0ZyYW1lSWZOZWVkZWQo
VmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgewotICAgICAgICBpZiAobV9zaG91bGRBcHBseVJvdGF0
aW9uICYmIHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246Ok5vbmUpIHsKLSAgICAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSByb3RhdGVQaXhlbEJ1
ZmZlcihzYW1wbGUpOwotICAgICAgICAgICAgcmV0dXJuIFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHNh
bXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCksIE1lZGlhU2Ft
cGxlOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBXVEZNb3ZlKHBpeGVsQnVmZmVyKSk7CisgICAgICAg
IGlmIChtX3Nob3VsZEFwcGx5Um90YXRpb24gJiYgZnJhbWUucm90YXRpb24oKSAhPSBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6Tm9uZSkgeworICAgICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHJv
dGF0ZVBpeGVsQnVmZmVyKGZyYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBWaWRlb0ZyYW1lQ1Y6
OmNyZWF0ZShmcmFtZS5wcmVzZW50YXRpb25UaW1lKCksIGZyYW1lLmlzTWlycm9yZWQoKSwgVmlk
ZW9GcmFtZTo6Um90YXRpb246Ok5vbmUsIFdURk1vdmUocGl4ZWxCdWZmZXIpKTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gJnNhbXBsZTsKKyAgICAgICAgcmV0dXJuICZmcmFtZTsKICAgICB9
CiAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBmcmFtZSwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgZmluYWwKKyAgICB2b2lkIHZpZGVvRnJhbWVB
dmFpbGFibGUoVmlkZW9GcmFtZSYgZnJhbWUsIFZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRh
dGEpIGZpbmFsCiAgICAgewogICAgICAgICBhdXRvIHZpZGVvRnJhbWUgPSByb3RhdGVWaWRlb0Zy
YW1lSWZOZWVkZWQoZnJhbWUpOwogICAgICAgICBpZiAoIXZpZGVvRnJhbWUpCkBAIC0xOTUsMzUg
KzE5NSwzNSBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9yZXNvdXJjZU93bmVyKQogICAgICAg
ICAgICAgdmlkZW9GcmFtZS0+c2V0T3duZXJzaGlwSWRlbnRpdHkobV9yZXNvdXJjZU93bmVyKTsK
ICAgICAgICAgaWYgKCFtX3ZpZGVvRnJhbWVPYmplY3RIZWFwKSB7Ci0gICAgICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpWaWRl
b0ZyYW1lQXZhaWxhYmxlQ1YobV9pZCwgdmlkZW9GcmFtZS0+cGl4ZWxCdWZmZXIoKSwgdmlkZW9G
cmFtZS0+dmlkZW9Sb3RhdGlvbigpLCB2aWRlb0ZyYW1lLT52aWRlb01pcnJvcmVkKCksIHZpZGVv
RnJhbWUtPnByZXNlbnRhdGlvblRpbWUoKSwgbWV0YWRhdGEpLCAwKTsKKyAgICAgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXI6OlZp
ZGVvRnJhbWVBdmFpbGFibGVDVihtX2lkLCB2aWRlb0ZyYW1lLT5waXhlbEJ1ZmZlcigpLCB2aWRl
b0ZyYW1lLT5yb3RhdGlvbigpLCB2aWRlb0ZyYW1lLT5pc01pcnJvcmVkKCksIHZpZGVvRnJhbWUt
PnByZXNlbnRhdGlvblRpbWUoKSwgbWV0YWRhdGEpLCAwKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBhdXRvIHByb3BlcnRpZXMgPSBtX3ZpZGVvRnJhbWVPYmplY3RI
ZWFwLT5hZGQoKnZpZGVvRnJhbWUpOwogICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjpWaWRlb0ZyYW1lQXZhaWxhYmxlKG1faWQs
IHByb3BlcnRpZXMsIG1ldGFkYXRhKSwgMCk7CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IHJvdGF0ZVBpeGVsQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCisgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZVBpeGVsQnVmZmVyKFZpZGVvRnJhbWUm
IHZpZGVvRnJhbWUpCiAgICAgewogICAgICAgICBpZiAoIW1fcm90YXRpb25TZXNzaW9uKQogICAg
ICAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNz
aW9uVlQ+KCk7CiAKICAgICAgICAgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9w
ZXJ0aWVzIHJvdGF0aW9uOwotICAgICAgICBzd2l0Y2ggKHNhbXBsZS52aWRlb1JvdGF0aW9uKCkp
IHsKLSAgICAgICAgY2FzZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKKyAgICAg
ICAgc3dpdGNoICh2aWRlb0ZyYW1lLnJvdGF0aW9uKCkpIHsKKyAgICAgICAgY2FzZSBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6Tm9uZToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgcm90YXRpb24uYW5nbGUgPSAwOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd246CisgICAgICAg
IGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OlVwc2lkZURvd246CiAgICAgICAgICAgICByb3Rh
dGlvbi5hbmdsZSA9IDE4MDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodDoKKyAgICAgICAgY2FzZSBWaWRlb0ZyYW1lOjpS
b3RhdGlvbjo6UmlnaHQ6CiAgICAgICAgICAgICByb3RhdGlvbi5hbmdsZSA9IDkwOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Okxl
ZnQ6CisgICAgICAgIGNhc2UgVmlkZW9GcmFtZTo6Um90YXRpb246OkxlZnQ6CiAgICAgICAgICAg
ICByb3RhdGlvbi5hbmdsZSA9IDI3MDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHNhbXBsZSwgcm90YXRpb24s
IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKKyAgICAg
ICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5yb3RhdGUodmlkZW9GcmFtZSwgcm90YXRpb24s
IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKICAgICB9
CiAKICAgICB2b2lkIHN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwgY29uc3Qg
V2ViQ29yZTo6Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmb3JtYXQsIHNpemVfdCBmcmFtZUNv
dW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVWaWRlb0ZyYW1lUHJveHkuY3BwCmluZGV4IGFiOGY2OTI4YWVmNzMzZTU5MGU3YWQ5
ZmQ4MGY0OWI0MDY4MjgzODEuLmU4MWIyM2Y5MGI1MTdjMTUyODNjNzUxNjM3NWE3YjFjMDFhMDVm
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZVZpZGVvRnJhbWVQcm94eS5jcHAKQEAgLTQyLDE1ICs0MiwxNSBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotUmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzIFJlbW90
ZVZpZGVvRnJhbWVQcm94eTo6cHJvcGVydGllcyhXZWJLaXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZl
cmVuY2UmJiByZWZlcmVuY2UsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiBtZWRpYVNhbXBs
ZSkKK1JlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGllcyBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OnByb3BlcnRpZXMoV2ViS2l0OjpSZW1vdGVWaWRlb0ZyYW1lUmVmZXJlbmNlJiYgcmVmZXJl
bmNlLCBjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKQogewogICAgIHJldHVy
biB7CiAgICAgICAgIFdURk1vdmUocmVmZXJlbmNlKSwKLSAgICAgICAgbWVkaWFTYW1wbGUucHJl
c2VudGF0aW9uVGltZSgpLAotICAgICAgICBtZWRpYVNhbXBsZS52aWRlb01pcnJvcmVkKCksCi0g
ICAgICAgIG1lZGlhU2FtcGxlLnZpZGVvUm90YXRpb24oKSwKLSAgICAgICAgZXhwYW5kZWRJbnRT
aXplKG1lZGlhU2FtcGxlLnByZXNlbnRhdGlvblNpemUoKSksCi0gICAgICAgIG1lZGlhU2FtcGxl
LnZpZGVvUGl4ZWxGb3JtYXQoKQorICAgICAgICB2aWRlb0ZyYW1lLnByZXNlbnRhdGlvblRpbWUo
KSwKKyAgICAgICAgdmlkZW9GcmFtZS5pc01pcnJvcmVkKCksCisgICAgICAgIHZpZGVvRnJhbWUu
cm90YXRpb24oKSwKKyAgICAgICAgZXhwYW5kZWRJbnRTaXplKHZpZGVvRnJhbWUucHJlc2VudGF0
aW9uU2l6ZSgpKSwKKyAgICAgICAgdmlkZW9GcmFtZS5waXhlbEZvcm1hdCgpCiAgICAgfTsKIH0K
IApAQCAtOTQsNyArOTQsNyBAQCBSZW1vdGVWaWRlb0ZyYW1lUmVhZFJlZmVyZW5jZSBSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6Om5ld1JlYWRSZWZlcmVuY2UoKSBjb25zdAogICAgIHJldHVybiBtX3Jl
ZmVyZW5jZVRyYWNrZXIucmVhZCgpOwogfQogCi11aW50MzJfdCBSZW1vdGVWaWRlb0ZyYW1lUHJv
eHk6OnZpZGVvUGl4ZWxGb3JtYXQoKSBjb25zdAordWludDMyX3QgUmVtb3RlVmlkZW9GcmFtZVBy
b3h5OjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGl4ZWxGb3JtYXQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZp
ZGVvRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVWaWRlb0ZyYW1lUHJveHkuaAppbmRleCBjZTQwNzEwZDcxZTA0MmNjYjE3NzliY2MzZTQ1YjNi
YWIyZjM0MTI2Li5lNDRkMjlmZWUzNmE5MDRmNzc0NTVmNjcyMDQ0NmNlYTExYThmYjM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZVZpZGVvRnJh
bWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
VmlkZW9GcmFtZVByb3h5LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgICAgICBXZWJL
aXQ6OlJlbW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UgcmVmZXJlbmNlOwogICAgICAgICBNZWRpYVRp
bWUgcHJlc2VudGF0aW9uVGltZTsKICAgICAgICAgYm9vbCBpc01pcnJvcmVkIHsgZmFsc2UgfTsK
LSAgICAgICAgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiB7IFZpZGVvUm90YXRpb246Ok5vbmUgfTsK
KyAgICAgICAgUm90YXRpb24gcm90YXRpb24geyBSb3RhdGlvbjo6Tm9uZSB9OwogICAgICAgICBX
ZWJDb3JlOjpJbnRTaXplIHNpemU7CiAgICAgICAgIHVpbnQzMl90IHBpeGVsRm9ybWF0IHsgMCB9
OwogCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJvcGVydGllcz4gZGVjb2RlKERlY29kZXIm
KTsKICAgICB9OwogCi0gICAgc3RhdGljIFByb3BlcnRpZXMgcHJvcGVydGllcyhXZWJLaXQ6OlJl
bW90ZVZpZGVvRnJhbWVSZWZlcmVuY2UmJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTYW1wbGUmKTsK
KyAgICBzdGF0aWMgUHJvcGVydGllcyBwcm9wZXJ0aWVzKFdlYktpdDo6UmVtb3RlVmlkZW9GcmFt
ZVJlZmVyZW5jZSYmLCBjb25zdCBXZWJDb3JlOjpWaWRlb0ZyYW1lJik7CiAKICAgICBzdGF0aWMg
UmVmPFJlbW90ZVZpZGVvRnJhbWVQcm94eT4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbiYsIFJlbW90
ZVZpZGVvRnJhbWVPYmplY3RIZWFwUHJveHkmLCBQcm9wZXJ0aWVzJiYpOwogCkBAIC04NCw3ICs4
NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OlZpZGVvRnJhbWUgb3ZlcnJpZGVzLgog
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zaXplOyB9Ci0gICAgdWludDMyX3QgdmlkZW9QaXhlbEZvcm1hdCgpIGNvbnN0IGZp
bmFsOworICAgIHVpbnQzMl90IHBpeGVsRm9ybWF0KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBp
c1JlbW90ZVByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIoKSBjb25zdCBmaW5hbDsK
QEAgLTExNiwxMiArMTE2LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0
aW9uYWw8UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9wZXJ0aWVzPiBSZW1vCiAgICAgYXV0byBy
ZWZlcmVuY2UgPSBkZWNvZGVyLnRlbXBsYXRlIGRlY29kZTxSZW1vdGVWaWRlb0ZyYW1lUmVmZXJl
bmNlPigpOwogICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IGRlY29kZXIudGVtcGxhdGUgZGVj
b2RlPE1lZGlhVGltZT4oKTsKICAgICBhdXRvIGlzTWlycm9yZWQgPSBkZWNvZGVyLnRlbXBsYXRl
IGRlY29kZTxib29sPigpOwotICAgIGF1dG8gdmlkZW9Sb3RhdGlvbiA9IGRlY29kZXIudGVtcGxh
dGUgZGVjb2RlPFZpZGVvUm90YXRpb24+KCk7CisgICAgYXV0byByb3RhdGlvbiA9IGRlY29kZXIu
dGVtcGxhdGUgZGVjb2RlPFJvdGF0aW9uPigpOwogICAgIGF1dG8gc2l6ZSA9IGRlY29kZXIudGVt
cGxhdGUgZGVjb2RlPFdlYkNvcmU6OkludFNpemU+KCk7CiAgICAgYXV0byBwaXhlbEZvcm1hdCA9
IGRlY29kZXIudGVtcGxhdGUgZGVjb2RlPHVpbnQzMl90PigpOwogICAgIGlmICghZGVjb2Rlci5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFByb3Bl
cnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBXVEZNb3ZlKCpwcmVzZW50YXRpb25UaW1lKSwg
KmlzTWlycm9yZWQsICp2aWRlb1JvdGF0aW9uLCAqc2l6ZSwgKnBpeGVsRm9ybWF0IH07CisgICAg
cmV0dXJuIFByb3BlcnRpZXMgeyBXVEZNb3ZlKCpyZWZlcmVuY2UpLCBXVEZNb3ZlKCpwcmVzZW50
YXRpb25UaW1lKSwgKmlzTWlycm9yZWQsICpyb3RhdGlvbiwgKnNpemUsICpwaXhlbEZvcm1hdCB9
OwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBSZW1vdGVW
aWRlb0ZyYW1lUHJveHk6OlByb3BlcnRpZXMmKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBSZW1vdGVWaWRlb0ZyYW1lUHJveHk6
OlByb3BlcnRpZXMmKTsKIH0KIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6
OlJlbW90ZVZpZGVvRnJhbWVQcm94eSkKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6TWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKSB7IHJldHVybiBpczxXZWJDb3JlOjpWaWRl
b0ZyYW1lPihtZWRpYVNhbXBsZSkgJiYgZG93bmNhc3Q8V2ViQ29yZTo6VmlkZW9GcmFtZT4obWVk
aWFTYW1wbGUpLmlzUmVtb3RlUHJveHkoKTsgfQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKSB7IHJldHVybiB2aWRlb0ZyYW1lLmlz
UmVtb3RlUHJveHkoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuY3BwCmluZGV4IGZkMTIyZGJlNTczY2FhYTliOTQ0Yzg2NTdhNDU0NWEwZGE1YzVi
NjYuLjZkM2FlMGUwNWI0OGJjNmU4ZmVlYTQxYjJlZjcxZDFiMDMyMmQyZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNz
LmNwcApAQCAtMTAyLDIwICsxMDIsMjAgQEAgc3RhdGljIGludDMyX3QgaW5pdGlhbGl6ZVZpZGVv
RW5jb2Rlcih3ZWJydGM6OldlYktpdFZpZGVvRW5jb2RlciBlbmNvZGVyLCBjb25zdAogICAgIHJl
dHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENDb2RlY3MoKS5pbml0aWFsaXpl
RW5jb2Rlcigqc3RhdGljX2Nhc3Q8TGliV2ViUlRDQ29kZWNzOjpFbmNvZGVyKj4oZW5jb2Rlciks
IGNvZGVjLndpZHRoLCBjb2RlYy5oZWlnaHQsIGNvZGVjLnN0YXJ0Qml0cmF0ZSwgY29kZWMubWF4
Qml0cmF0ZSwgY29kZWMubWluQml0cmF0ZSwgY29kZWMubWF4RnJhbWVyYXRlKTsKIH0KIAotc3Rh
dGljIGlubGluZSBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiB0b01lZGlhU2FtcGxlVmlkZW9S
b3RhdGlvbih3ZWJydGM6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCitzdGF0aWMgaW5saW5lIFZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHRvVmlkZW9Sb3RhdGlvbih3ZWJydGM6OlZpZGVvUm90YXRpb24g
cm90YXRpb24pCiB7CiAgICAgc3dpdGNoIChyb3RhdGlvbikgewogICAgIGNhc2Ugd2VicnRjOjpr
VmlkZW9Sb3RhdGlvbl8wOgotICAgICAgICByZXR1cm4gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246Ok5vbmU7CisgICAgICAgIHJldHVybiBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6Tm9uZTsKICAg
ICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMTgwOgotICAgICAgICByZXR1cm4gTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd247CisgICAgICAgIHJldHVybiBWaWRlb0Zy
YW1lOjpSb3RhdGlvbjo6VXBzaWRlRG93bjsKICAgICBjYXNlIHdlYnJ0Yzo6a1ZpZGVvUm90YXRp
b25fOTA6Ci0gICAgICAgIHJldHVybiBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6UmlnaHQ7
CisgICAgICAgIHJldHVybiBWaWRlb0ZyYW1lOjpSb3RhdGlvbjo6UmlnaHQ7CiAgICAgY2FzZSB3
ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzI3MDoKLSAgICAgICAgcmV0dXJuIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uOjpMZWZ0OworICAgICAgICByZXR1cm4gVmlkZW9GcmFtZTo6Um90YXRpb246
OkxlZnQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZTsKKyAgICByZXR1cm4gVmlkZW9GcmFtZTo6Um90
YXRpb246Ok5vbmU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvcm1hdE5hbWVGcm9tV2Vi
UlRDQ29kZWNUeXBlKHdlYnJ0Yzo6VmlkZW9Db2RlY1R5cGUgdHlwZSkKQEAgLTQ5NCw3ICs0OTQs
NyBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6ZW5jb2RlRnJhbWUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJgogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwogCi0gICAgU2hhcmVkVmlkZW9GcmFtZSBz
aGFyZWRWaWRlb0ZyYW1lIHsgTWVkaWFUaW1lKGZyYW1lLnRpbWVzdGFtcF91cygpICogMTAwMCwg
MTAwMDAwMCksIGZhbHNlLCB0b01lZGlhU2FtcGxlVmlkZW9Sb3RhdGlvbihmcmFtZS5yb3RhdGlv
bigpKSwgV1RGTW92ZSgqYnVmZmVyKSB9OworICAgIFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlk
ZW9GcmFtZSB7IE1lZGlhVGltZShmcmFtZS50aW1lc3RhbXBfdXMoKSAqIDEwMDAsIDEwMDAwMDAp
LCBmYWxzZSwgdG9WaWRlb1JvdGF0aW9uKGZyYW1lLnJvdGF0aW9uKCkpLCBXVEZNb3ZlKCpidWZm
ZXIpIH07CiAgICAgZW5jb2Rlci5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVEND
b2RlY3NQcm94eTo6RW5jb2RlRnJhbWUgeyBlbmNvZGVyLmlkZW50aWZpZXIsIHNoYXJlZFZpZGVv
RnJhbWUsIGZyYW1lLnRpbWVzdGFtcCgpLCBzaG91bGRFbmNvZGVBc0tleUZyYW1lIH0sIDApOwog
ICAgIHJldHVybiBXRUJSVENfVklERU9fQ09ERUNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAKaW5kZXggMDQ4NTA2NTRkYTE5MzU2YTRlMTFmNjU4ODU5MzVkMzIxOTdmNmQ5Ny4uODU4NTI2
NDVkMjU3YmFiYzU2MGJkNDU3YWQxNjAwNDBmODNjZjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcApAQCAtOTIsMjUgKzkyLDI1IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlOjp+TWVkaWFSZWNv
cmRlclByaXZhdGUoKQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAotdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgVmlk
ZW9GcmFtZVRpbWVNZXRhZGF0YSkKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnZpZGVvRnJh
bWVBdmFpbGFibGUoVmlkZW9GcmFtZSYgdmlkZW9GcmFtZSwgVmlkZW9GcmFtZVRpbWVNZXRhZGF0
YSkKIHsKICAgICBpZiAoc2hvdWxkTXV0ZVZpZGVvKCkpIHsKICAgICAgICAgaWYgKCFtX2JsYWNr
RnJhbWVTaXplKSB7Ci0gICAgICAgICAgICBhdXRvIHNpemUgPSBzYW1wbGUucHJlc2VudGF0aW9u
U2l6ZSgpOworICAgICAgICAgICAgYXV0byBzaXplID0gdmlkZW9GcmFtZS5wcmVzZW50YXRpb25T
aXplKCk7CiAgICAgICAgICAgICBtX2JsYWNrRnJhbWVTaXplID0gV2ViQ29yZTo6SW50U2l6ZSB7
IHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhl
aWdodCgpKSB9OwogICAgICAgICB9Ci0gICAgICAgIFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlk
ZW9GcmFtZSB7IHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb01pcnJvcmVk
KCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksICptX2JsYWNrRnJhbWVTaXplIH07Ci0gICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6VmlkZW9T
YW1wbGVBdmFpbGFibGUgeyBzaGFyZWRWaWRlb0ZyYW1lIH0sIG1faWRlbnRpZmllcik7CisgICAg
ICAgIFNoYXJlZFZpZGVvRnJhbWUgc2hhcmVkVmlkZW9GcmFtZSB7IHZpZGVvRnJhbWUucHJlc2Vu
dGF0aW9uVGltZSgpLCB2aWRlb0ZyYW1lLmlzTWlycm9yZWQoKSwgdmlkZW9GcmFtZS5yb3RhdGlv
bigpLCAqbV9ibGFja0ZyYW1lU2l6ZSB9OworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVvRnJhbWVBdmFpbGFibGUgeyBzaGFyZWRW
aWRlb0ZyYW1lIH0sIG1faWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBtX2JsYWNrRnJhbWVTaXplID0geyB9OwotICAgIGF1dG8gc2hhcmVkVmlkZW9GcmFtZSA9IG1f
c2hhcmVkVmlkZW9GcmFtZVdyaXRlci53cml0ZShzYW1wbGUsCisgICAgYXV0byBzaGFyZWRWaWRl
b0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRlKHZpZGVvRnJhbWUsCiAgICAg
ICAgIFt0aGlzXShhdXRvJiBzZW1hcGhvcmUpIHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpTZXRTaGFyZWRWaWRlb0ZyYW1lU2VtYXBob3JlIHsgc2Vt
YXBob3JlIH0sIG1faWRlbnRpZmllcik7IH0sCiAgICAgICAgIFt0aGlzXShhdXRvJiBoYW5kbGUp
IHsgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpTZXRT
aGFyZWRWaWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIG1faWRlbnRpZmllcik7IH0KICAgICAp
OwogICAgIGlmIChzaGFyZWRWaWRlb0ZyYW1lKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OlZpZGVvU2FtcGxlQXZhaWxhYmxlIHsgV1RG
TW92ZSgqc2hhcmVkVmlkZW9GcmFtZSkgfSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpWaWRlb0ZyYW1lQXZh
aWxhYmxlIHsgV1RGTW92ZSgqc2hhcmVkVmlkZW9GcmFtZSkgfSwgbV9pZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0
IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBudW1iZXJPZkZy
YW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDcyMTBjMGNlYjEwN2NiN2Q3ZTQxNmZiNjgz
MmYzOGYyMjY4YjljNDguLmUyNGVhYmUwZWJiMjViOWI4MmUzZDViNzkxZWUyZmM4NDYyNDg3Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMv
TWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUKLSAgICB2b2lkIHZpZGVv
U2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9GcmFt
ZVRpbWVNZXRhZGF0YSkgZmluYWw7CisgICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNv
cmU6OlZpZGVvRnJhbWUmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKSBmaW5hbDsK
ICAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3Vi
bGUpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5n
Q2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmNwcAppbmRleCA3
MTk5MmYwNGYyOWI0YjBlZDU2NWIzM2I5OTY0YWY4MzY3ODAxMmQ4Li43NDVjZmY2YzczMjAyOGJl
ZTExMjlmYzU4NTY0OGNmOWI0ZWJhOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBk
YXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybQogICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpV
cGRhdGVBZmZpbmVUcmFuc2Zvcm0geyB0cmFuc2Zvcm0gfSwgbV9pZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENH
UmVjdCBib3VuZHMsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQordm9pZCBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCBi
b3VuZHMsIFZpZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uKQogewogICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpVcGRhdGVC
b3VuZHNBbmRQb3NpdGlvbiB7IGJvdW5kcywgcm90YXRpb24gfSwgbV9pZGVudGlmaWVyKTsKIH0K
QEAgLTEyNywyNCArMTI3LDI0IEBAIHZvaWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpwYXVz
ZSgpCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OlBhdXNlIHsgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3Zv
aWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlVmlkZW9GcmFtZShWaWRlb0ZyYW1l
JiB2aWRlb0ZyYW1lKQogewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBzaGFyZWRWaWRlb0ZyYW1lID0gbV9zaGFyZWRWaWRlb0ZyYW1lV3JpdGVyLndyaXRl
KHNhbXBsZSwKKyAgICBhdXRvIHNoYXJlZFZpZGVvRnJhbWUgPSBtX3NoYXJlZFZpZGVvRnJhbWVX
cml0ZXIud3JpdGUodmlkZW9GcmFtZSwKICAgICAgICAgW3RoaXNdKGF1dG8mIHNlbWFwaG9yZSkg
eyBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6U2V0U2hhcmVkVmlkZW9GcmFtZVNlbWFwaG9yZSB7IHNlbWFwaG9yZSB9LCBtX2lkZW50
aWZpZXIpOyB9LAogICAgICAgICBbdGhpc10oYXV0byYgaGFuZGxlKSB7IG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTZXRTaGFyZWRW
aWRlb0ZyYW1lTWVtb3J5IHsgaGFuZGxlIH0sIG1faWRlbnRpZmllcik7IH0KICAgICApOwogICAg
IGlmICghc2hhcmVkVmlkZW9GcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkVucXVl
dWUgeyAqc2hhcmVkVmlkZW9GcmFtZSB9LCBtX2lkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpFbnF1ZXVl
VmlkZW9GcmFtZSB7ICpzaGFyZWRWaWRlb0ZyYW1lIH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxlcygpCit2b2lk
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y2xlYXJWaWRlb0ZyYW1lcygpCiB7Ci0gICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OkNsZWFyRW5xdWV1ZWRTYW1wbGVzIHsgfSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xlYXJW
aWRlb0ZyYW1lcyB7IH0sIG1faWRlbnRpZmllcik7CiB9CiAKIFBsYXRmb3JtTGF5ZXIqIFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmgKaW5kZXggNWU4NDM0YTlmNDI0NDgwZDEwMjJlNDVhZThiODY5OTMzNDY3MTNjYy4uMDc0MDFm
NjQ3MTc5NWY1ZmRjMWVkMmY1OWRjYmZkNThjMTM1Y2U5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmgKQEAgLTYyLDEzICs2MiwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkRmFpbCgp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9vbCBoaWRlRGlzcGxh
eUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQWZmaW5l
VHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJvdW5k
c0FuZFBvc2l0aW9uKENHUmVjdCwgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24p
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBXZWJDb3Jl
OjpWaWRlb0ZyYW1lOjpSb3RhdGlvbikgZmluYWw7CiAgICAgdm9pZCBmbHVzaCgpIGZpbmFsOwog
ICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpIGZpbmFsOwogICAgIHZvaWQgcGxheSgpIGZp
bmFsOwogICAgIHZvaWQgcGF1c2UoKSBmaW5hbDsKLSAgICB2b2lkIGVucXVldWVTYW1wbGUoV2Vi
Q29yZTo6TWVkaWFTYW1wbGUmKSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVz
KCkgZmluYWw7CisgICAgdm9pZCBlbnF1ZXVlVmlkZW9GcmFtZShXZWJDb3JlOjpWaWRlb0ZyYW1l
JikgZmluYWw7CisgICAgdm9pZCBjbGVhclZpZGVvRnJhbWVzKCkgZmluYWw7CiAgICAgUGxhdGZv
cm1MYXllciogcm9vdExheWVyKCkgZmluYWw7CiAKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlv
bjo6Q2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9TaGFyZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL1NoYXJlZFZpZGVvRnJhbWUuY3BwCmluZGV4IGNlOGVjNWZjZGM3MmQyNTdmMGQ5NGNlYjI4
OGJmYmIzYmJhYjNlY2UuLjM5Yjc0YmY0NmRlYmRhNWRiNjlmNjdmYjJiYzZhOGRlOGZkNGU5Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZp
ZGVvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1No
YXJlZFZpZGVvRnJhbWUuY3BwCkBAIC05MywxNSArOTMsMTUgQEAgYm9vbCBTaGFyZWRWaWRlb0Zy
YW1lV3JpdGVyOjpwcmVwYXJlV3JpdGluZyhjb25zdCBTaGFyZWRWaWRlb0ZyYW1lSW5mbyYgaW5m
bywgY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0Zy
YW1lPiBTaGFyZWRWaWRlb0ZyYW1lV3JpdGVyOjp3cml0ZShNZWRpYVNhbXBsZSYgZnJhbWUsIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNr
LCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBu
ZXdNZW1vcnlDYWxsYmFjaykKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZT4gU2hhcmVk
VmlkZW9GcmFtZVdyaXRlcjo6d3JpdGUoVmlkZW9GcmFtZSYgZnJhbWUsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mIG5ld1NlbWFwaG9yZUNhbGxiYWNrLCBjb25zdCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiBuZXdNZW1vcnlDYWxs
YmFjaykKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHdyaXRlQnVmZmVyKGZyYW1lLCBuZXdTZW1hcGhv
cmVDYWxsYmFjaywgbmV3TWVtb3J5Q2FsbGJhY2spOwogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm4geyB9OwotICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lIHsgZnJhbWUucHJlc2Vu
dGF0aW9uVGltZSgpLCBmcmFtZS52aWRlb01pcnJvcmVkKCksIGZyYW1lLnZpZGVvUm90YXRpb24o
KSwgV1RGTW92ZSgqYnVmZmVyKSB9OworICAgIHJldHVybiBTaGFyZWRWaWRlb0ZyYW1lIHsgZnJh
bWUucHJlc2VudGF0aW9uVGltZSgpLCBmcmFtZS5pc01pcnJvcmVkKCksIGZyYW1lLnJvdGF0aW9u
KCksIFdURk1vdmUoKmJ1ZmZlcikgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0Zy
YW1lOjpCdWZmZXI+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlQnVmZmVyKE1lZGlhU2Ft
cGxlJiBmcmFtZSwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYgbmV3U2Vt
YXBob3JlQ2FsbGJhY2ssIGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmKT4mIG5ld01lbW9yeUNhbGxiYWNrKQorc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRl
b0ZyYW1lOjpCdWZmZXI+IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXI6OndyaXRlQnVmZmVyKFZpZGVv
RnJhbWUmIGZyYW1lLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiBuZXdT
ZW1hcGhvcmVDYWxsYmFjaywgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYpPiYgbmV3TWVtb3J5Q2FsbGJhY2spCiB7CiAgICAgaWYgKGlzPFJlbW90ZVZp
ZGVvRnJhbWVQcm94eT4oZnJhbWUpKQogICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVtb3RlVmlk
ZW9GcmFtZVByb3h5PihmcmFtZSkubmV3UmVhZFJlZmVyZW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2hhcmVkVmlkZW9GcmFtZS5oCmluZGV4
IGZhM2Q4M2M1ZDk0YjhhZmQwZTVkNzljMDBkZGNkMzlkZmUzYTMzMzcuLmExNTAxZTc1YTY0ZjIx
MzdmYTVjMTY5MTY1MmM0MTAyY2I4ZmY5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL1NoYXJlZFZpZGVvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TaGFyZWRWaWRlb0ZyYW1lLmgKQEAgLTU1LDcgKzU1LDcg
QEAgY2xhc3MgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXA7CiBzdHJ1Y3QgU2hhcmVkVmlkZW9G
cmFtZSB7CiAgICAgTWVkaWFUaW1lIHRpbWU7CiAgICAgYm9vbCBtaXJyb3JlZCB7IGZhbHNlIH07
Ci0gICAgV2ViQ29yZTo6TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24geyBXZWJD
b3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OworICAgIFdlYkNvcmU6OlZp
ZGVvRnJhbWU6OlJvdGF0aW9uIHJvdGF0aW9uIHsgV2ViQ29yZTo6VmlkZW9GcmFtZTo6Um90YXRp
b246Ok5vbmUgfTsKICAgICB1c2luZyBCdWZmZXIgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIFJlbW90ZVZpZGVvRnJhbWVSZWFkUmVmZXJlbmNlLCBNYWNoU2VuZFJpZ2h0LCBXZWJDb3Jl
OjpJbnRTaXplPjsKICAgICBCdWZmZXIgYnVmZmVyOwogCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNz
IFNoYXJlZFZpZGVvRnJhbWVXcml0ZXIgewogcHVibGljOgogICAgIFNoYXJlZFZpZGVvRnJhbWVX
cml0ZXIoKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZT4gd3JpdGUoV2Vi
Q29yZTo6TWVkaWFTYW1wbGUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+
JiwgY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYp
OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkVmlkZW9GcmFtZT4gd3JpdGUoV2ViQ29yZTo6Vmlk
ZW9GcmFtZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CiAgICAgc3Rk
OjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IHdyaXRlQnVmZmVyKENWUGl4ZWxC
dWZmZXJSZWYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiwgYm9vbCBjYW5T
ZW5kSU9TdXJmYWNlID0gdHJ1ZSk7CiAjaWYgVVNFKExJQldFQlJUQykKICAgICBzdGQ6Om9wdGlv
bmFsPFNoYXJlZFZpZGVvRnJhbWU6OkJ1ZmZlcj4gd3JpdGVCdWZmZXIoY29uc3Qgd2VicnRjOjpW
aWRlb0ZyYW1lJiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKQEAgLTgw
LDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGFsbG9jYXRlU3RvcmFnZShzaXplX3QsIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKICAg
ICBib29sIHByZXBhcmVXcml0aW5nKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFZpZGVvRnJhbWVJbmZv
JiwgY29uc3QgRnVuY3Rpb248dm9pZChJUEM6OlNlbWFwaG9yZSYpPiYsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mKTsKIAotICAgIHN0ZDo6b3B0
aW9uYWw8U2hhcmVkVmlkZW9GcmFtZTo6QnVmZmVyPiB3cml0ZUJ1ZmZlcihXZWJDb3JlOjpNZWRp
YVNhbXBsZSYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CisgICAgc3Rk
OjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZmZXI+IHdyaXRlQnVmZmVyKFdlYkNvcmU6
OlZpZGVvRnJhbWUmLCBjb25zdCBGdW5jdGlvbjx2b2lkKElQQzo6U2VtYXBob3JlJik+JiwgY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYpOwogI2lm
IFVTRShMSUJXRUJSVEMpCiAgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRWaWRlb0ZyYW1lOjpCdWZm
ZXI+IHdyaXRlQnVmZmVyKHdlYnJ0Yzo6VmlkZW9GcmFtZUJ1ZmZlciYsIGNvbnN0IEZ1bmN0aW9u
PHZvaWQoSVBDOjpTZW1hcGhvcmUmKT4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJik+Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuY3Bw
CmluZGV4IDc2NGVjMGQ1Zjc3YmQzZWUwNTI0NTAzODdlNGY4MWRlZjZkNmFhZTkuLmZmYmZhMzFm
ZWEwZDIxOGM4Y2I1NTA3NDU5NDEyNDc1ZDI2OGY3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2Vy
LmNwcApAQCAtMTU5LDExICsxNTksMTAgQEAgdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
cjo6dmlkZW9GcmFtZUF2YWlsYWJsZShSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmkKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGZpbmQgc291cmNlICVsbHUg
Zm9yIHZpZGVvRnJhbWVBdmFpbGFibGUiLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gdmlkZW9GcmFtZVNpemUgPSB2aWRlb0ZyYW1lLT5z
aXplKCk7Ci0gICAgaXRlcmF0b3ItPnZhbHVlLT52aWRlb0ZyYW1lQXZhaWxhYmxlKFdURk1vdmUo
dmlkZW9GcmFtZSksIHZpZGVvRnJhbWVTaXplLCBtZXRhZGF0YSk7CisgICAgaXRlcmF0b3ItPnZh
bHVlLT5yZW1vdGVWaWRlb0ZyYW1lQXZhaWxhYmxlKFdURk1vdmUodmlkZW9GcmFtZSksIG1ldGFk
YXRhKTsKIH0KIAotdm9pZCBSZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdlcjo6dmlkZW9GcmFtZUF2
YWlsYWJsZUNWKFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmIHBpeGVsQnVmZmVyLCBXZWJDb3JlOjpNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCwgTWVkaWFUaW1lIHByZXNl
bnRhdGlvblRpbWUsIFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCit2
b2lkIFJlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoUmVh
bHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJv
dGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgV2ViQ29y
ZTo6VmlkZW9GcmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkKIHsKICAgICBBU1NFUlQoIVdURjo6
aXNNYWluUnVuTG9vcCgpKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV92aWRlb1NvdXJjZXMuZmlu
ZChpZGVudGlmaWVyKTsKQEAgLTE3Myw4ICsxNzIsNyBAQCB2b2lkIFJlbW90ZUNhcHR1cmVTYW1w
bGVNYW5hZ2VyOjp2aWRlb0ZyYW1lQXZhaWxhYmxlQ1YoUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aQogICAgIH0KIAogICAgIGF1dG8gdmlkZW9GcmFtZSA9IFZpZGVvRnJhbWVDVjo6Y3JlYXRlKHBy
ZXNlbnRhdGlvblRpbWUsIG1pcnJvcmVkLCByb3RhdGlvbiwgV1RGTW92ZShwaXhlbEJ1ZmZlcikp
OwotICAgIGF1dG8gc2l6ZSA9IHZpZGVvRnJhbWUtPnByZXNlbnRhdGlvblNpemUoKTsKLSAgICBp
dGVyYXRvci0+dmFsdWUtPnZpZGVvRnJhbWVBdmFpbGFibGUodmlkZW9GcmFtZS5nZXQoKSwgeyBz
dGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWln
aHQoKSkgfSwgbWV0YWRhdGEpOworICAgIGl0ZXJhdG9yLT52YWx1ZS0+cmVtb3RlVmlkZW9GcmFt
ZUF2YWlsYWJsZSh2aWRlb0ZyYW1lLmdldCgpLCBtZXRhZGF0YSk7CiB9CiAKIFJlbW90ZUNhcHR1
cmVTYW1wbGVNYW5hZ2VyOjpSZW1vdGVBdWRpbzo6UmVtb3RlQXVkaW8oUmVmPFJlbW90ZVJlYWx0
aW1lQXVkaW9Tb3VyY2U+JiYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaAppbmRleCAzZWM5
MmI1ZGUwODg1ZDI3MzViMTJjMTg2NDY4NzFlZTBmOGZhYjNhLi41ZTNmODM0MDc2OGJiZThhOWNi
ODljNDgyN2EzMmE5MTdlOTM4N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIuaApAQCAtNzQsNyAr
NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBNZWRpYVRpbWUsIHVpbnQ2NF90IG51bWJl
ck9mRnJhbWVzKTsKICAgICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZVZpZGVvRnJhbWVQcm94eTo6UHJvcGVydGll
cyYmLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKICAgICAvLyBGSVhNRTogV2ls
bCBiZSByZW1vdmVkIG9uY2UgUmVtb3RlVmlkZW9GcmFtZVByb3h5IHByb3ZpZGVycyBhcmUgdGhl
IG9ubHkgb25lcyBzZW5kaW5nIGRhdGEuCi0gICAgdm9pZCB2aWRlb0ZyYW1lQXZhaWxhYmxlQ1Yo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiYmLCBXZWJDb3JlOjpNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCBt
aXJyb3JlZCwgTWVkaWFUaW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhKTsKKyAg
ICB2b2lkIHZpZGVvRnJhbWVBdmFpbGFibGVDVihXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
SWRlbnRpZmllciwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYsIFdlYkNvcmU6OlZpZGVv
RnJhbWU6OlJvdGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRpYVRpbWUsIFdlYkNvcmU6OlZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEpOwogCiAgICAgdm9pZCBzZXRDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbiopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVt
b3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUmVtb3RlQ2FwdHVyZVNhbXBsZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXgg
NzFiMzQ3MDg1MzI2MzBhYzdmYTMxZmFhN2RiZjFkMjNiMzUxMDhmYi4uZTVjZGZjMjUzZjQxMzFh
YTBkZjU3MWEyZjQ2YmU0M2ZiZjI1MWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1JlbW90ZUNhcHR1cmVTYW1wbGVNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVDYXB0dXJlU2FtcGxlTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQAogbWVzc2FnZXMgLT4gUmVtb3RlQ2FwdHVy
ZVNhbXBsZU1hbmFnZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TdG9yYWdlQ2hhbmdlZChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlSWRlbnRpZmllciBpZCwgV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzLCBJUEM6OlNlbWFw
aG9yZSBjYXB0dXJlU2VtYXBob3JlLCBNZWRpYVRpbWUgbWVkaWFUaW1lLCBzaXplX3QgZnJhbWVD
aHVua1NpemUpOwogICAgIFZpZGVvRnJhbWVBdmFpbGFibGUoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYktpdDo6UmVtb3RlVmlkZW9GcmFtZVByb3h5OjpQcm9w
ZXJ0aWVzIHNhbXBsZSwgc3RydWN0IFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0
YWRhdGEpCi0gICAgVmlkZW9GcmFtZUF2YWlsYWJsZUNWKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyIGlkLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZm
ZXIsIFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1p
cnJvcmVkLCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgc3RydWN0IFdlYkNvcmU6OlZpZGVv
RnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCisgICAgVmlkZW9GcmFtZUF2YWlsYWJsZUNWKFdl
YkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkLCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXIsIFdlYkNvcmU6OlZpZGVvRnJhbWU6OlJvdGF0aW9uIHJv
dGF0aW9uLCBib29sIG1pcnJvcmVkLCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSwgc3RydWN0
IFdlYkNvcmU6OlZpZGVvRnJhbWVUaW1lTWV0YWRhdGEgbWV0YWRhdGEpCiAKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9T
b3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9SZW1vdGVSZWFsdGltZVZp
ZGVvU291cmNlLmgKaW5kZXggZTZlYjMyYjlmMzk4MGNhOGE0NDg0MmE1YmVmNTE2YWRiNDNkYTNk
NS4uZDFiODU5OTVmMzlkNmE4NGNkNDFiNzQwN2U4NDYyMzM5ZjA1ODc2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1JlbW90ZVJlYWx0aW1lVmlkZW9Tb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUmVtb3RlUmVhbHRpbWVWaWRl
b1NvdXJjZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FwdHVyZVN0
b3BwZWQoYm9vbCBkaWRGYWlsKTsKIAotICAgIHZvaWQgdmlkZW9GcmFtZUF2YWlsYWJsZShXZWJD
b3JlOjpWaWRlb0ZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6SW50U2l6ZSwgV2ViQ29yZTo6VmlkZW9G
cmFtZVRpbWVNZXRhZGF0YSBtZXRhZGF0YSkgeyB2aWRlb1NhbXBsZUF2YWlsYWJsZShmcmFtZSwg
bWV0YWRhdGEpOyB9CisgICAgdm9pZCByZW1vdGVWaWRlb0ZyYW1lQXZhaWxhYmxlKFdlYkNvcmU6
OlZpZGVvRnJhbWUmIGZyYW1lLCBXZWJDb3JlOjpWaWRlb0ZyYW1lVGltZU1ldGFkYXRhIG1ldGFk
YXRhKSB7IHZpZGVvRnJhbWVBdmFpbGFibGUoZnJhbWUsIG1ldGFkYXRhKTsgfQogICAgIHZvaWQg
c291cmNlTXV0ZWRDaGFuZ2VkKGJvb2wgdmFsdWUsIGJvb2wgaW50ZXJydXB0ZWQpOwogCiAgICAg
dm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyYmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>