<?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>237362</bug_id>
          
          <creation_ts>2022-03-02 06:05:15 -0800</creation_ts>
          <short_desc>Resolve ::first-line style eagerly</short_desc>
          <delta_ts>2022-08-04 17:20:44 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=243570</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>237413</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1847355</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-02 06:05:15 -0800</bug_when>
    <thetext>Currently it is resolved lazily in render tree. It should be resolved eagerly during style resolution to play well with container queries. This also enables things like animation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847368</commentid>
    <comment_count>1</comment_count>
      <attachid>453603</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-02 06:43:57 -0800</bug_when>
    <thetext>Created attachment 453603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847465</commentid>
    <comment_count>2</comment_count>
      <attachid>453626</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-02 09:31:35 -0800</bug_when>
    <thetext>Created attachment 453626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847777</commentid>
    <comment_count>3</comment_count>
      <attachid>453705</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-03 00:51:04 -0800</bug_when>
    <thetext>Created attachment 453705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848216</commentid>
    <comment_count>4</comment_count>
      <attachid>453825</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-04 02:29:36 -0800</bug_when>
    <thetext>Created attachment 453825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848285</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-04 07:14:31 -0800</bug_when>
    <thetext>*** Bug 230964 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848286</commentid>
    <comment_count>6</comment_count>
      <attachid>453840</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-04 07:22:29 -0800</bug_when>
    <thetext>Created attachment 453840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848512</commentid>
    <comment_count>7</comment_count>
      <attachid>453904</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-05 01:04:25 -0800</bug_when>
    <thetext>Created attachment 453904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848513</commentid>
    <comment_count>8</comment_count>
      <attachid>453905</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-05 02:18:24 -0800</bug_when>
    <thetext>Created attachment 453905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848520</commentid>
    <comment_count>9</comment_count>
      <attachid>453907</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-05 05:34:21 -0800</bug_when>
    <thetext>Created attachment 453907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848521</commentid>
    <comment_count>10</comment_count>
      <attachid>453908</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-05 05:49:22 -0800</bug_when>
    <thetext>Created attachment 453908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848526</commentid>
    <comment_count>11</comment_count>
      <attachid>453908</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-03-05 08:25:37 -0800</bug_when>
    <thetext>Comment on attachment 453908
Patch

v.nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848531</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-05 08:59:06 -0800</bug_when>
    <thetext>Committed r290867 (248098@main): &lt;https://commits.webkit.org/248098@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453908.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848532</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-05 09:00:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89857957&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453603</attachid>
            <date>2022-03-02 06:43:57 -0800</date>
            <delta_ts>2022-03-02 09:31:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220302164356.patch</filename>
            <type>text/plain</type>
            <size>14295</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MDJmZDYwOTdiZmFh
NmQ1ZjlmZGU2MDc1N2E3ZDlhNjVmNjQzYi4uYmY1MzM0MTEyZTkyNWNlMzIyNzk3OWEyNGZmNGM0
YWU4ZTczNGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTAyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpyZXNvbHZlRmlyc3RMaW5lUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpib3hHZW5lcmF0aW5nUGFyZW50IGNvbnN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0
eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VXBkYXRlOjpwc2V1ZG9FbGVtZW50U3R5bGUgY29uc3QpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjItMDItMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW3dlYi1hbmltYXRpb25zXSB3ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMtYXJndW1lbnQt
MDAxLmh0bWwgaXMgYSB1bmlxdWUgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCmluZGV4IDVlYWQyNGZiMDM2NTE0MmViOTFkMDQ1OTA2MDBmODM2MTM2
ZmU1ZDcuLmY5YWQ1NjlkYjAyNDRmY2Q0NzFjM2ViNjgyNzc4MTQyNTZmYzQ4MmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI2OSwxNyArMjY5LDIy
IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6Y29tcHV0ZUZp
cnN0TGluZVN0eWxlKCkgY29uc3QKIAogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRlckVsZW1lbnQ6
OmZpcnN0TGluZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2VzRmlyc3RMaW5l
UnVsZXMoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCk7Ci0KLSAgICBpZiAoIW1faGFzVmFsaWRD
YWNoZWRGaXJzdExpbmVTdHlsZSkgewotICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gY29t
cHV0ZUZpcnN0TGluZVN0eWxlKCk7Ci0gICAgICAgIGlmIChmaXJzdExpbmVTdHlsZSB8fCBoYXNS
YXJlRGF0YSgpKQotICAgICAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJFbGVtZW50Jj4oKnRoaXMp
LmVuc3VyZVJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUgPSBXVEZNb3ZlKGZpcnN0TGlu
ZVN0eWxlKTsKLSAgICAgICAgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlID0gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gKGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5jYWNoZWRG
aXJzdExpbmVTdHlsZSkgPyAqcmFyZURhdGEoKS5jYWNoZWRGaXJzdExpbmVTdHlsZSA6IHN0eWxl
KCk7CisgICAgaWYgKGlzQW5vbnltb3VzQmxvY2soKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5n
KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQoKS0+Zmlyc3RMaW5lU3R5bGUoKTsKKyAgICAKKyAg
ICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSBzdHlsZSgpLmdldENhY2hlZFBzZXVkb1N0eWxl
KFBzZXVkb0lkOjpGaXJzdExpbmUpKQorICAgICAgICByZXR1cm4gKmZpcnN0TGluZVN0eWxlOwor
CisgICAgcmV0dXJuIHN0eWxlKCk7CisKKy8vICAgIGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0
TGluZVN0eWxlKSB7CisvLyAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IGNvbXB1dGVGaXJz
dExpbmVTdHlsZSgpOworLy8gICAgICAgIGlmIChmaXJzdExpbmVTdHlsZSB8fCBoYXNSYXJlRGF0
YSgpKQorLy8gICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlckVsZW1lbnQmPigqdGhpcykuZW5z
dXJlUmFyZURhdGEoKS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9IFdURk1vdmUoZmlyc3RMaW5lU3R5
bGUpOworLy8gICAgICAgIG1faGFzVmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IHRydWU7Cisv
LyAgICB9CisvLworLy8gICAgcmV0dXJuIChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuY2Fj
aGVkRmlyc3RMaW5lU3R5bGUpID8gKnJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUgOiBz
dHlsZSgpOwogfQogCiBTdHlsZURpZmZlcmVuY2UgUmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVE
aWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNl
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnR5PiBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCBlZTlj
YjFhOWNjMjY3MmU2ODI1MzgxZTA1Zjk5NDg2M2FjYjhlZmViLi45OGU5ZWM4ZDBiNGJlZDYxYjI1
YzczOGM5YzBjZDI3YWUwOTBjZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCkBAIC0yNTAsMTQgKzI1MCwxNyBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVz
b2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgfQogCiAgICAgUHNl
dWRvSWRUb0VsZW1lbnRVcGRhdGVNYXAgcHNldWRvVXBkYXRlczsKLSAgICBpZiAoYXV0byBtYXJr
ZXJFbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNl
dWRvSWQ6Ok1hcmtlcikpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpNYXJr
ZXIsIFdURk1vdmUoKm1hcmtlckVsZW1lbnRVcGRhdGUpKTsKLSAgICBpZiAoYXV0byBiZWZvcmVF
bGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRv
SWQ6OkJlZm9yZSkpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpCZWZvcmUs
IFdURk1vdmUoKmJlZm9yZUVsZW1lbnRVcGRhdGUpKTsKLSAgICBpZiAoYXV0byBhZnRlckVsZW1l
bnRVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6
QWZ0ZXIpKQotICAgICAgICBwc2V1ZG9VcGRhdGVzLnNldChQc2V1ZG9JZDo6QWZ0ZXIsIFdURk1v
dmUoKmFmdGVyRWxlbWVudFVwZGF0ZSkpOwotICAgIGlmIChhdXRvIGJhY2tkcm9wRWxlbWVudFVw
ZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBzZXVkb0lkOjpCYWNr
ZHJvcCkpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpCYWNrZHJvcCwgV1RG
TW92ZSgqYmFja2Ryb3BFbGVtZW50VXBkYXRlKSk7CisKKyAgICBhdXRvIHJlc29sdmVBbmRTZXRQ
c2V1ZG9FbGVtZW50ID0gWyZdKFBzZXVkb0lkIHBzZXVkb0lkKSB7CisgICAgICAgIGlmIChhdXRv
IHBzZXVkb0VsZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRvRWxlbWVudChlbGVtZW50LCBwc2V1
ZG9JZCwgdXBkYXRlKSkKKyAgICAgICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KHBzZXVkb0lkLCBX
VEZNb3ZlKCpwc2V1ZG9FbGVtZW50VXBkYXRlKSk7CisgICAgfTsKKworICAgIHJlc29sdmVBbmRT
ZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkOjpNYXJrZXIpOworICAgIHJlc29sdmVBbmRTZXRQc2V1
ZG9FbGVtZW50KFBzZXVkb0lkOjpCZWZvcmUpOworICAgIHJlc29sdmVBbmRTZXRQc2V1ZG9FbGVt
ZW50KFBzZXVkb0lkOjpBZnRlcik7CisgICAgcmVzb2x2ZUFuZFNldFBzZXVkb0VsZW1lbnQoUHNl
dWRvSWQ6OkJhY2tkcm9wKTsKKyAgICByZXNvbHZlQW5kU2V0UHNldWRvRWxlbWVudChQc2V1ZG9J
ZDo6Rmlyc3RMaW5lKTsKIAogI2lmIEVOQUJMRShUT1VDSF9BQ1RJT05fUkVHSU9OUykKICAgICAv
LyBGSVhNRTogVHJhY2sgdGhpcyBleGFjdGx5LgpAQCAtMjcyLDcgKzI3NSw3IEBAIEVsZW1lbnRV
cGRhdGVzIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAg
ICByZXR1cm4geyBXVEZNb3ZlKHVwZGF0ZSksIGRlc2NlbmRhbnRzVG9SZXNvbHZlLCBXVEZNb3Zl
KHBzZXVkb1VwZGF0ZXMpIH07CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJl
ZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxl
bWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQpCitzdGQ6Om9wdGlv
bmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb0VsZW1lbnQoRWxl
bWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVs
ZW1lbnRVcGRhdGUpCiB7CiAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCYWNrZHJvcCAm
JiAhZWxlbWVudC5pc0luVG9wTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI4MCwy
MCArMjgzLDEwNyBAQCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6
cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQsCiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgaWYgKGVsZW1lbnRVcGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9J
ZDo6Rmlyc3RMaW5lKQorICAgICAgICByZXR1cm4gcmVzb2x2ZUZpcnN0TGluZVBzZXVkb0VsZW1l
bnQoZWxlbWVudCwgZWxlbWVudFVwZGF0ZSk7CisgICAgCiAgICAgaWYgKCFlbGVtZW50VXBkYXRl
LnN0eWxlLT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBhdXRvIHJlc29sdXRpb25Db250ZXh0ID0gbWFrZVJlc29sdXRpb25Db250ZXh0Rm9yUHNl
dWRvRWxlbWVudChlbGVtZW50VXBkYXRlKTsKIAotICAgIGF1dG8gcHNldWRvU3R5bGUgPSBzY29w
ZSgpLnJlc29sdmVyLT5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgeyBwc2V1ZG9JZCB9
LCByZXNvbHV0aW9uQ29udGV4dCk7Ci0gICAgaWYgKCFwc2V1ZG9TdHlsZSkKKyAgICBhdXRvIHBz
ZXVkb0VsZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVu
dChlbGVtZW50LCB7IHBzZXVkb0lkIH0sIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIXBz
ZXVkb0VsZW1lbnRTdHlsZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGJvb2wgaGFzQW5p
bWF0aW9ucyA9IHBzZXVkb1N0eWxlLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIHx8IGVs
ZW1lbnQuaGFzS2V5ZnJhbWVFZmZlY3RzKHBzZXVkb0lkKTsKLSAgICBpZiAoIXBzZXVkb0VsZW1l
bnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9ucykK
KyAgICBib29sIGlzQmVmb3JlT3JBZnRlciA9IHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUg
fHwgcHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyOworICAgIGJvb2wgaGFzQW5pbWF0aW9ucyA9
IHBzZXVkb0VsZW1lbnRTdHlsZS0+aGFzQW5pbWF0aW9uc09yVHJhbnNpdGlvbnMoKSB8fCBlbGVt
ZW50Lmhhc0tleWZyYW1lRWZmZWN0cyhwc2V1ZG9JZCk7CisgICAgaWYgKGlzQmVmb3JlT3JBZnRl
ciAmJiAhcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQocHNldWRvRWxlbWVudFN0eWxlLmdl
dCgpKSAmJiAhaGFzQW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVy
biBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHlsZSksIHsgZWxl
bWVudCwgcHNldWRvSWQgfSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHJlc29sdXRpb25Db250ZXh0
KTsKKyAgICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUocHNldWRv
RWxlbWVudFN0eWxlKSwgeyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBlbGVtZW50VXBkYXRlLmNoYW5n
ZSwgcmVzb2x1dGlvbkNvbnRleHQpOworfQorCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+
IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUZpcnN0TGluZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKK3sKKyAgICBpZiAoIXNj
b3BlKCkucmVzb2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgYXV0byBpc0ZpcnN0TGluZUJsb2NrID0gW10oY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKSB7CisgICAgICAgIGF1dG8gZGlzcGxheSA9IHN0eWxlLmRpc3BsYXkoKTsKKyAgICAgICAg
cmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrCisgICAgICAgICAgICB8fCBkaXNw
bGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jaworICAgICAgICAgICAgfHwgZGlzcGxheSA9
PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0KKyAgICAgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxh
eVR5cGU6OlRhYmxlQ2VsbDsKKyAgICB9OworCisgICAgYXV0byBpc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHRSb290ID0gW10oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBJbmNvbXBsZXRlLiBUaGVyZSBzaG91bGQgYmUgc2hhcmVkIGNvZGUgd2l0aCBsYXlvdXQg
Zm9yIHRoaXMuCisgICAgICAgIGlmIChzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzdHlsZS5mbG9hdGluZygpICE9IEZs
b2F0OjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBzdHls
ZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkJsb2NrOworICAgIH07CisKKyAgICBhdXRvIGZp
cnN0TGluZUVsZW1lbnRGb3JCbG9jayA9IFsmXSgpIC0+IEVsZW1lbnQqIHsKKyAgICAgICAgaWYg
KCFpc0ZpcnN0TGluZUJsb2NrKCplbGVtZW50VXBkYXRlLnN0eWxlKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+aGFzUHNldWRv
U3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSkpCisgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7
CisgICAgICAgIGlmIChpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290KCplbGVtZW50VXBkYXRl
LnN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGZvciAoYXV0
byYgcGFyZW50IDogbWFrZVJldmVyc2VkUmFuZ2UobV9wYXJlbnRTdGFjaykpIHsKKyAgICAgICAg
ICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghaXNGaXJzdExpbmVC
bG9jayhwYXJlbnQuc3R5bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50LmVsZW1lbnQ7CisgICAgICAgICAg
ICBpZiAoaXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Um9vdChwYXJlbnQuc3R5bGUpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH07CisKKyAgICBpZiAoYXV0byBmaXJzdExpbmVFbGVtZW50ID0gZmlyc3RMaW5l
RWxlbWVudEZvckJsb2NrKCkpIHsKKyAgICAgICAgYXV0byByZXNvbHV0aW9uQ29udGV4dCA9IG1h
a2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoZWxlbWVudFVwZGF0ZSk7CisgICAg
ICAgIGlmIChmaXJzdExpbmVFbGVtZW50ICE9ICZlbGVtZW50KQorICAgICAgICAgICAgcmVzb2x1
dGlvbkNvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlID0gbnVsbHB0cjsKKworICAgICAgICBh
dXRvIHBzZXVkb0VsZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9y
RWxlbWVudCgqZmlyc3RMaW5lRWxlbWVudCwgeyBQc2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIHJlc29s
dXRpb25Db250ZXh0KTsKKyAgICAgICAgaWYgKCFwc2V1ZG9FbGVtZW50U3R5bGUpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRV
cGRhdGUoV1RGTW92ZShwc2V1ZG9FbGVtZW50U3R5bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpG
aXJzdExpbmUgfSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHJlc29sdXRpb25Db250ZXh0KTsKKyAg
ICB9CisKKyAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpJbmxpbmUpIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYm94R2VuZXJhdGluZ1BhcmVu
dCgpOworICAgICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5lbGVtZW50KQorICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIHBhcmVudEZpcnN0TGluZVN0eWxlID0gbV91
cGRhdGUtPnBzZXVkb0VsZW1lbnRTdHlsZSgqcGFyZW50LT5lbGVtZW50LCBQc2V1ZG9JZDo6Rmly
c3RMaW5lKTsKKyAgICAgICAgaWYgKCFwYXJlbnRGaXJzdExpbmVTdHlsZSkKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisKKyAgICAgICAgLy8gRmlyc3QgbGluZSBzdHlsZSBmb3IgaW5saW5lcyBp
cyBtYWRlIGJ5IGluaGVyaXRpbmcgZnJvbSBwYXJlbnQgZmlyc3QgbGluZSBzdHlsZS4KKyAgICAg
ICAgYXV0byByZXNvbHV0aW9uQ29udGV4dCA9IFJlc29sdXRpb25Db250ZXh0IHsKKyAgICAgICAg
ICAgIHBhcmVudEZpcnN0TGluZVN0eWxlLAorICAgICAgICAgICAgcGFyZW50Qm94U3R5bGVGb3JQ
c2V1ZG9FbGVtZW50KGVsZW1lbnRVcGRhdGUpLAorICAgICAgICAgICAgbV9kb2N1bWVudEVsZW1l
bnRTdHlsZS5nZXQoKSwKKyAgICAgICAgICAgICZzY29wZSgpLnNlbGVjdG9yTWF0Y2hpbmdTdGF0
ZQorICAgICAgICB9OworCisgICAgICAgIGF1dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5yZXNv
bHZlci0+c3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICAg
ICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IFdURk1vdmUoZWxlbWVudFN0eWxlLnJlbmRlclN0eWxl
KTsKKyAgICAgICAgZmlyc3RMaW5lU3R5bGUtPnNldFN0eWxlVHlwZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lKTsKKworICAgICAgICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1v
dmUoZmlyc3RMaW5lU3R5bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpGaXJzdExpbmUgfSwgZWxl
bWVudFVwZGF0ZS5jaGFuZ2UsIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICB9CisKKyAgICByZXR1
cm4geyB9OwogfQogCiBSZXNvbHV0aW9uQ29udGV4dCBUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHV0
aW9uQ29udGV4dCgpCkBAIC0zMTYsMjAgKzQwNiwyNSBAQCBSZXNvbHV0aW9uQ29udGV4dCBUcmVl
UmVzb2x2ZXI6Om1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxl
bQogICAgIH07CiB9CiAKLWNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJv
eFN0eWxlKCkgY29uc3QKK2F1dG8gVHJlZVJlc29sdmVyOjpib3hHZW5lcmF0aW5nUGFyZW50KCkg
Y29uc3QgLT4gY29uc3QgUGFyZW50KgogewogICAgIC8vICdkaXNwbGF5OiBjb250ZW50cycgZG9l
c24ndCBnZW5lcmF0ZSBib3hlcy4KLSAgICBmb3IgKGF1dG8gaSA9IG1fcGFyZW50U3RhY2suc2l6
ZSgpOyBpLS07KSB7Ci0gICAgICAgIGF1dG8mIHBhcmVudCA9IG1fcGFyZW50U3RhY2tbaV07Cisg
ICAgZm9yIChhdXRvJiBwYXJlbnQgOiBtYWtlUmV2ZXJzZWRSYW5nZShtX3BhcmVudFN0YWNrKSkg
ewogICAgICAgICBpZiAocGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9u
ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAocGFyZW50LnN0eWxl
LmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCi0gICAgICAgICAgICByZXR1cm4g
JnBhcmVudC5zdHlsZTsKKyAgICAgICAgICAgIHJldHVybiAmcGFyZW50OwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY29uc3QgUmVu
ZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUoKSBjb25zdAoreworICAgIGF1
dG8qIHBhcmVudCA9IGJveEdlbmVyYXRpbmdQYXJlbnQoKTsKKyAgICByZXR1cm4gcGFyZW50ID8g
JnBhcmVudC0+c3R5bGUgOiBudWxscHRyOworfQorCiBjb25zdCBSZW5kZXJTdHlsZSogVHJlZVJl
c29sdmVyOjpwYXJlbnRCb3hTdHlsZUZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0
ZSYgZWxlbWVudFVwZGF0ZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGVsZW1lbnRVcGRhdGUuc3R5
bGUtPmRpc3BsYXkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgK
aW5kZXggMDE4ZDZhZGRjMDQyOTk5YThjMzExZWNjZWQ3NjZjYzY4ZmFiZDE3ZC4uN2RmNGQ2YTNl
NzBlMTcyYzc0ZDkyM2YwMDI2NzAzNTc2ZDZhZTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5oCkBAIC02OCw3ICs2OCw4IEBAIHByaXZhdGU6CiAgICAgRWxlbWVu
dFVwZGF0ZXMgcmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYpOwogCiAgICAgc3RhdGljIEVsZW1lbnRV
cGRhdGUgY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIGNvbnN0IFN0eWxlYWJsZSYsIENoYW5nZSwgY29uc3QgUmVzb2x1dGlvbkNvbnRleHQm
KTsKLSAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IHJlc29sdmVQc2V1ZG9TdHlsZShF
bGVtZW50JiwgY29uc3QgRWxlbWVudFVwZGF0ZSYsIFBzZXVkb0lkKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEVsZW1lbnRVcGRhdGU+IHJlc29sdmVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmLCBQc2V1ZG9J
ZCwgY29uc3QgRWxlbWVudFVwZGF0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0
ZT4gcmVzb2x2ZUZpcnN0TGluZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYsIGNvbnN0IEVsZW1lbnRV
cGRhdGUmKTsKIAogICAgIHN0cnVjdCBTY29wZSA6IFJlZkNvdW50ZWQ8U2NvcGU+IHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKFRy
ZWVSZXNvbHZlclNjb3BlKTsKQEAgLTEwNyw2ICsxMDgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVz
b2x1dGlvbkNvbnRleHQgbWFrZVJlc29sdXRpb25Db250ZXh0KCk7CiAgICAgUmVzb2x1dGlvbkNv
bnRleHQgbWFrZVJlc29sdXRpb25Db250ZXh0Rm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50
VXBkYXRlJik7CisgICAgY29uc3QgUGFyZW50KiBib3hHZW5lcmF0aW5nUGFyZW50KCkgY29uc3Q7
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKCkgY29uc3Q7CiAgICAgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVt
ZW50VXBkYXRlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVXBkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcAppbmRl
eCBkZDY2NjJjNTFmMmZkNWI2MzRlMzA1YWZhYTlkZjI5NjZlZDM3OGY2Li43NTdmMjY3Mjc2YjI2
MjZjZjk1N2RkMWVhZWM2N2FhMjUzMWI4OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVVwZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRh
dGUuY3BwCkBAIC04NSw2ICs4NSwyMCBAQCBSZW5kZXJTdHlsZSogVXBkYXRlOjplbGVtZW50U3R5
bGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gJnJlbmRlcmVyLT5tdXRhYmxl
U3R5bGUoKTsKIH0KIAorY29uc3QgUmVuZGVyU3R5bGUqIFVwZGF0ZTo6cHNldWRvRWxlbWVudFN0
eWxlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAorewor
ICAgIGlmIChhdXRvKiB1cGRhdGVzID0gZWxlbWVudFVwZGF0ZXMoZWxlbWVudCkpIHsKKyAgICAg
ICAgYXV0byBpdCA9IHVwZGF0ZXMtPnBzZXVkb0VsZW1lbnRVcGRhdGVzLmZpbmQocHNldWRvSWQp
OworICAgICAgICBpZiAoaXQgPT0gdXBkYXRlcy0+cHNldWRvRWxlbWVudFVwZGF0ZXMuZW5kKCkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5z
dHlsZS5nZXQoKTsKKyAgICB9CisgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVy
KCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHJlbmRlcmVyLT5zdHlsZSgpLmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsKK30K
Kwogdm9pZCBVcGRhdGU6OmFkZEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgRWxlbWVudCogcGFy
ZW50LCBFbGVtZW50VXBkYXRlcyYmIGVsZW1lbnRVcGRhdGVzKQogewogICAgIEFTU0VSVCghbV9l
bGVtZW50cy5jb250YWlucygmZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgK
aW5kZXggYzBkNGQwNmVhOGY5YTQ4M2VjMWE5OTU5MTIyZWMzZjcwODg1OWVmNS4uNDE2NDJiNTgz
MDlhMzlkMmYzNWNlNjhhODk2NTUwMDE4MTJmOGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVw
ZGF0ZS5oCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJTdHlsZSog
ZWxlbWVudFN0eWxlKGNvbnN0IEVsZW1lbnQmKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSogZWxl
bWVudFN0eWxlKGNvbnN0IEVsZW1lbnQmKTsKIAorICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwc2V1
ZG9FbGVtZW50U3R5bGUoY29uc3QgRWxlbWVudCYsIFBzZXVkb0lkKSBjb25zdDsKKwogICAgIGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KIAog
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453626</attachid>
            <date>2022-03-02 09:31:35 -0800</date>
            <delta_ts>2022-03-03 00:50:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220302193133.patch</filename>
            <type>text/plain</type>
            <size>14397</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MDJmZDYwOTdiZmFh
NmQ1ZjlmZGU2MDc1N2E3ZDlhNjVmNjQzYi4uYmY1MzM0MTEyZTkyNWNlMzIyNzk3OWEyNGZmNGM0
YWU4ZTczNGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTAyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpyZXNvbHZlRmlyc3RMaW5lUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpib3hHZW5lcmF0aW5nUGFyZW50IGNvbnN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0
eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VXBkYXRlOjpwc2V1ZG9FbGVtZW50U3R5bGUgY29uc3QpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjItMDItMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW3dlYi1hbmltYXRpb25zXSB3ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMtYXJndW1lbnQt
MDAxLmh0bWwgaXMgYSB1bmlxdWUgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCmluZGV4IDVlYWQyNGZiMDM2NTE0MmViOTFkMDQ1OTA2MDBmODM2MTM2
ZmU1ZDcuLjljNmMxOTE0YTU4ZTI0OTc3OGIxYzk0MGMwNWEzOTgyYmRiNzFhNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI2OSwxNyArMjY5LDI1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6Y29tcHV0ZUZp
cnN0TGluZVN0eWxlKCkgY29uc3QKIAogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRlckVsZW1lbnQ6
OmZpcnN0TGluZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2VzRmlyc3RMaW5l
UnVsZXMoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCk7CisgICAgYXV0byByZW5kZXJlckZvckZp
cnN0TGluZSA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlckVsZW1lbnQmIHsKKyAgICAgICAgaWYgKGlz
QW5vbnltb3VzQmxvY2soKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgICAg
ICByZXR1cm4gKnBhcmVudCgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfTsKIAotICAg
IGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7Ci0gICAgICAgIGF1dG8gZmly
c3RMaW5lU3R5bGUgPSBjb21wdXRlRmlyc3RMaW5lU3R5bGUoKTsKLSAgICAgICAgaWYgKGZpcnN0
TGluZVN0eWxlIHx8IGhhc1JhcmVEYXRhKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRl
ckVsZW1lbnQmPigqdGhpcykuZW5zdXJlUmFyZURhdGEoKS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9
IFdURk1vdmUoZmlyc3RMaW5lU3R5bGUpOwotICAgICAgICBtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RM
aW5lU3R5bGUgPSB0cnVlOwotICAgIH0KKyAgICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSBy
ZW5kZXJlckZvckZpcnN0TGluZSgpLnN0eWxlKCkuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRv
SWQ6OkZpcnN0TGluZSkpCisgICAgICAgIHJldHVybiAqZmlyc3RMaW5lU3R5bGU7CisKKyAgICBy
ZXR1cm4gc3R5bGUoKTsKIAotICAgIHJldHVybiAoaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgp
LmNhY2hlZEZpcnN0TGluZVN0eWxlKSA/ICpyYXJlRGF0YSgpLmNhY2hlZEZpcnN0TGluZVN0eWxl
IDogc3R5bGUoKTsKKy8vICAgIGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7
CisvLyAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IGNvbXB1dGVGaXJzdExpbmVTdHlsZSgp
OworLy8gICAgICAgIGlmIChmaXJzdExpbmVTdHlsZSB8fCBoYXNSYXJlRGF0YSgpKQorLy8gICAg
ICAgICAgICBjb25zdF9jYXN0PFJlbmRlckVsZW1lbnQmPigqdGhpcykuZW5zdXJlUmFyZURhdGEo
KS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9IFdURk1vdmUoZmlyc3RMaW5lU3R5bGUpOworLy8gICAg
ICAgIG1faGFzVmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IHRydWU7CisvLyAgICB9CisvLwor
Ly8gICAgcmV0dXJuIChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5l
U3R5bGUpID8gKnJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUgOiBzdHlsZSgpOwogfQog
CiBTdHlsZURpZmZlcmVuY2UgUmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNp
dGl2ZVByb3BlcnR5PiBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCBlZTljYjFhOWNjMjY3MmU2
ODI1MzgxZTA1Zjk5NDg2M2FjYjhlZmViLi45OGU5ZWM4ZDBiNGJlZDYxYjI1YzczOGM5YzBjZDI3
YWUwOTBjZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3Bw
CkBAIC0yNTAsMTQgKzI1MCwxNyBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29s
dmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgfQogCiAgICAgUHNldWRvSWRUb0VsZW1l
bnRVcGRhdGVNYXAgcHNldWRvVXBkYXRlczsKLSAgICBpZiAoYXV0byBtYXJrZXJFbGVtZW50VXBk
YXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6Ok1hcmtl
cikpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpNYXJrZXIsIFdURk1vdmUo
Km1hcmtlckVsZW1lbnRVcGRhdGUpKTsKLSAgICBpZiAoYXV0byBiZWZvcmVFbGVtZW50VXBkYXRl
ID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkJlZm9yZSkp
Ci0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpCZWZvcmUsIFdURk1vdmUoKmJl
Zm9yZUVsZW1lbnRVcGRhdGUpKTsKLSAgICBpZiAoYXV0byBhZnRlckVsZW1lbnRVcGRhdGUgPSBy
ZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QWZ0ZXIpKQotICAg
ICAgICBwc2V1ZG9VcGRhdGVzLnNldChQc2V1ZG9JZDo6QWZ0ZXIsIFdURk1vdmUoKmFmdGVyRWxl
bWVudFVwZGF0ZSkpOwotICAgIGlmIChhdXRvIGJhY2tkcm9wRWxlbWVudFVwZGF0ZSA9IHJlc29s
dmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBzZXVkb0lkOjpCYWNrZHJvcCkpCi0gICAg
ICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpCYWNrZHJvcCwgV1RGTW92ZSgqYmFja2Ry
b3BFbGVtZW50VXBkYXRlKSk7CisKKyAgICBhdXRvIHJlc29sdmVBbmRTZXRQc2V1ZG9FbGVtZW50
ID0gWyZdKFBzZXVkb0lkIHBzZXVkb0lkKSB7CisgICAgICAgIGlmIChhdXRvIHBzZXVkb0VsZW1l
bnRVcGRhdGUgPSByZXNvbHZlUHNldWRvRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgdXBkYXRl
KSkKKyAgICAgICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KHBzZXVkb0lkLCBXVEZNb3ZlKCpwc2V1
ZG9FbGVtZW50VXBkYXRlKSk7CisgICAgfTsKKworICAgIHJlc29sdmVBbmRTZXRQc2V1ZG9FbGVt
ZW50KFBzZXVkb0lkOjpNYXJrZXIpOworICAgIHJlc29sdmVBbmRTZXRQc2V1ZG9FbGVtZW50KFBz
ZXVkb0lkOjpCZWZvcmUpOworICAgIHJlc29sdmVBbmRTZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lk
OjpBZnRlcik7CisgICAgcmVzb2x2ZUFuZFNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQ6OkJhY2tk
cm9wKTsKKyAgICByZXNvbHZlQW5kU2V0UHNldWRvRWxlbWVudChQc2V1ZG9JZDo6Rmlyc3RMaW5l
KTsKIAogI2lmIEVOQUJMRShUT1VDSF9BQ1RJT05fUkVHSU9OUykKICAgICAvLyBGSVhNRTogVHJh
Y2sgdGhpcyBleGFjdGx5LgpAQCAtMjcyLDcgKzI3NSw3IEBAIEVsZW1lbnRVcGRhdGVzIFRyZWVS
ZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBX
VEZNb3ZlKHVwZGF0ZSksIGRlc2NlbmRhbnRzVG9SZXNvbHZlLCBXVEZNb3ZlKHBzZXVkb1VwZGF0
ZXMpIH07CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpy
ZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYg
ZWxlbWVudFVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQpCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRV
cGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgUHNldWRvSWQgcHNldWRvSWQsIGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUp
CiB7CiAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCYWNrZHJvcCAmJiAhZWxlbWVudC5p
c0luVG9wTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI4MCwyMCArMjgzLDEwNyBA
QCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVk
b1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQsCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKGVs
ZW1lbnRVcGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Rmlyc3RMaW5l
KQorICAgICAgICByZXR1cm4gcmVzb2x2ZUZpcnN0TGluZVBzZXVkb0VsZW1lbnQoZWxlbWVudCwg
ZWxlbWVudFVwZGF0ZSk7CisgICAgCiAgICAgaWYgKCFlbGVtZW50VXBkYXRlLnN0eWxlLT5oYXNQ
c2V1ZG9TdHlsZShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIHJl
c29sdXRpb25Db250ZXh0ID0gbWFrZVJlc29sdXRpb25Db250ZXh0Rm9yUHNldWRvRWxlbWVudChl
bGVtZW50VXBkYXRlKTsKIAotICAgIGF1dG8gcHNldWRvU3R5bGUgPSBzY29wZSgpLnJlc29sdmVy
LT5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgeyBwc2V1ZG9JZCB9LCByZXNvbHV0aW9u
Q29udGV4dCk7Ci0gICAgaWYgKCFwc2V1ZG9TdHlsZSkKKyAgICBhdXRvIHBzZXVkb0VsZW1lbnRT
dHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7
IHBzZXVkb0lkIH0sIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIXBzZXVkb0VsZW1lbnRT
dHlsZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGJvb2wgaGFzQW5pbWF0aW9ucyA9IHBz
ZXVkb1N0eWxlLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIHx8IGVsZW1lbnQuaGFzS2V5
ZnJhbWVFZmZlY3RzKHBzZXVkb0lkKTsKLSAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklz
TmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9ucykKKyAgICBib29sIGlz
QmVmb3JlT3JBZnRlciA9IHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgfHwgcHNldWRvSWQg
PT0gUHNldWRvSWQ6OkFmdGVyOworICAgIGJvb2wgaGFzQW5pbWF0aW9ucyA9IHBzZXVkb0VsZW1l
bnRTdHlsZS0+aGFzQW5pbWF0aW9uc09yVHJhbnNpdGlvbnMoKSB8fCBlbGVtZW50Lmhhc0tleWZy
YW1lRWZmZWN0cyhwc2V1ZG9JZCk7CisgICAgaWYgKGlzQmVmb3JlT3JBZnRlciAmJiAhcHNldWRv
RWxlbWVudFJlbmRlcmVySXNOZWVkZWQocHNldWRvRWxlbWVudFN0eWxlLmdldCgpKSAmJiAhaGFz
QW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBjcmVhdGVBbmlt
YXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHlsZSksIHsgZWxlbWVudCwgcHNldWRv
SWQgfSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICByZXR1
cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUocHNldWRvRWxlbWVudFN0eWxl
KSwgeyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBlbGVtZW50VXBkYXRlLmNoYW5nZSwgcmVzb2x1dGlv
bkNvbnRleHQpOworfQorCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZl
cjo6cmVzb2x2ZUZpcnN0TGluZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
RWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKK3sKKyAgICBpZiAoIXNjb3BlKCkucmVzb2x2
ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0
byBpc0ZpcnN0TGluZUJsb2NrID0gW10oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7CisgICAg
ICAgIGF1dG8gZGlzcGxheSA9IHN0eWxlLmRpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuIGRpc3Bs
YXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrCisgICAgICAgICAgICB8fCBkaXNwbGF5ID09IERpc3Bs
YXlUeXBlOjpJbmxpbmVCbG9jaworICAgICAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlw
ZTo6TGlzdEl0ZW0KKyAgICAgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRhYmxl
Q2VsbDsKKyAgICB9OworCisgICAgYXV0byBpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290ID0g
W10oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbmNvbXBs
ZXRlLiBUaGVyZSBzaG91bGQgYmUgc2hhcmVkIGNvZGUgd2l0aCBsYXlvdXQgZm9yIHRoaXMuCisg
ICAgICAgIGlmIChzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGlmIChzdHlsZS5mbG9hdGluZygpICE9IEZsb2F0OjpOb25lKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkg
IT0gRGlzcGxheVR5cGU6OkJsb2NrOworICAgIH07CisKKyAgICBhdXRvIGZpcnN0TGluZUVsZW1l
bnRGb3JCbG9jayA9IFsmXSgpIC0+IEVsZW1lbnQqIHsKKyAgICAgICAgaWYgKCFpc0ZpcnN0TGlu
ZUJsb2NrKCplbGVtZW50VXBkYXRlLnN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+aGFzUHNldWRvU3R5bGUoUHNldWRv
SWQ6OkZpcnN0TGluZSkpCisgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CisgICAgICAgIGlm
IChpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290KCplbGVtZW50VXBkYXRlLnN0eWxlKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGZvciAoYXV0byYgcGFyZW50IDog
bWFrZVJldmVyc2VkUmFuZ2UobV9wYXJlbnRTdGFjaykpIHsKKyAgICAgICAgICAgIGlmIChwYXJl
bnQuc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghaXNGaXJzdExpbmVCbG9jayhwYXJlbnQu
c3R5bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaWYg
KHBhcmVudC5zdHlsZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcGFyZW50LmVsZW1lbnQ7CisgICAgICAgICAgICBpZiAoaXNCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Um9vdChwYXJlbnQuc3R5bGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH07
CisKKyAgICBpZiAoYXV0byBmaXJzdExpbmVFbGVtZW50ID0gZmlyc3RMaW5lRWxlbWVudEZvckJs
b2NrKCkpIHsKKyAgICAgICAgYXV0byByZXNvbHV0aW9uQ29udGV4dCA9IG1ha2VSZXNvbHV0aW9u
Q29udGV4dEZvclBzZXVkb0VsZW1lbnQoZWxlbWVudFVwZGF0ZSk7CisgICAgICAgIGlmIChmaXJz
dExpbmVFbGVtZW50ICE9ICZlbGVtZW50KQorICAgICAgICAgICAgcmVzb2x1dGlvbkNvbnRleHQu
c2VsZWN0b3JNYXRjaGluZ1N0YXRlID0gbnVsbHB0cjsKKworICAgICAgICBhdXRvIHBzZXVkb0Vs
ZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudCgqZmly
c3RMaW5lRWxlbWVudCwgeyBQc2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIHJlc29sdXRpb25Db250ZXh0
KTsKKyAgICAgICAgaWYgKCFwc2V1ZG9FbGVtZW50U3R5bGUpCisgICAgICAgICAgICByZXR1cm4g
eyB9OworCisgICAgICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92
ZShwc2V1ZG9FbGVtZW50U3R5bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpGaXJzdExpbmUgfSwg
ZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICB9CisKKyAgICBp
ZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUp
IHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYm94R2VuZXJhdGluZ1BhcmVudCgpOworICAgICAg
ICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5lbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgICAgICBhdXRvIHBhcmVudEZpcnN0TGluZVN0eWxlID0gbV91cGRhdGUtPnBzZXVk
b0VsZW1lbnRTdHlsZSgqcGFyZW50LT5lbGVtZW50LCBQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKKyAg
ICAgICAgaWYgKCFwYXJlbnRGaXJzdExpbmVTdHlsZSkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisKKyAgICAgICAgLy8gRmlyc3QgbGluZSBzdHlsZSBmb3IgaW5saW5lcyBpcyBtYWRlIGJ5IGlu
aGVyaXRpbmcgZnJvbSBwYXJlbnQgZmlyc3QgbGluZSBzdHlsZS4KKyAgICAgICAgYXV0byByZXNv
bHV0aW9uQ29udGV4dCA9IFJlc29sdXRpb25Db250ZXh0IHsKKyAgICAgICAgICAgIHBhcmVudEZp
cnN0TGluZVN0eWxlLAorICAgICAgICAgICAgcGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50
KGVsZW1lbnRVcGRhdGUpLAorICAgICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZS5nZXQo
KSwKKyAgICAgICAgICAgICZzY29wZSgpLnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZQorICAgICAgICB9
OworCisgICAgICAgIGF1dG8gZWxlbWVudFN0eWxlID0gc2NvcGUoKS5yZXNvbHZlci0+c3R5bGVG
b3JFbGVtZW50KGVsZW1lbnQsIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICAgICAgYXV0byBmaXJz
dExpbmVTdHlsZSA9IFdURk1vdmUoZWxlbWVudFN0eWxlLnJlbmRlclN0eWxlKTsKKyAgICAgICAg
Zmlyc3RMaW5lU3R5bGUtPnNldFN0eWxlVHlwZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKKworICAg
ICAgICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUoZmlyc3RMaW5l
U3R5bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpGaXJzdExpbmUgfSwgZWxlbWVudFVwZGF0ZS5j
aGFuZ2UsIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OwogfQog
CiBSZXNvbHV0aW9uQ29udGV4dCBUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHV0aW9uQ29udGV4dCgp
CkBAIC0zMTYsMjAgKzQwNiwyNSBAQCBSZXNvbHV0aW9uQ29udGV4dCBUcmVlUmVzb2x2ZXI6Om1h
a2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbQogICAgIH07CiB9
CiAKLWNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlKCkgY29u
c3QKK2F1dG8gVHJlZVJlc29sdmVyOjpib3hHZW5lcmF0aW5nUGFyZW50KCkgY29uc3QgLT4gY29u
c3QgUGFyZW50KgogewogICAgIC8vICdkaXNwbGF5OiBjb250ZW50cycgZG9lc24ndCBnZW5lcmF0
ZSBib3hlcy4KLSAgICBmb3IgKGF1dG8gaSA9IG1fcGFyZW50U3RhY2suc2l6ZSgpOyBpLS07KSB7
Ci0gICAgICAgIGF1dG8mIHBhcmVudCA9IG1fcGFyZW50U3RhY2tbaV07CisgICAgZm9yIChhdXRv
JiBwYXJlbnQgOiBtYWtlUmV2ZXJzZWRSYW5nZShtX3BhcmVudFN0YWNrKSkgewogICAgICAgICBp
ZiAocGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAocGFyZW50LnN0eWxlLmRpc3BsYXkoKSAh
PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCi0gICAgICAgICAgICByZXR1cm4gJnBhcmVudC5zdHls
ZTsKKyAgICAgICAgICAgIHJldHVybiAmcGFyZW50OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY29uc3QgUmVuZGVyU3R5bGUqIFRy
ZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUoKSBjb25zdAoreworICAgIGF1dG8qIHBhcmVudCA9
IGJveEdlbmVyYXRpbmdQYXJlbnQoKTsKKyAgICByZXR1cm4gcGFyZW50ID8gJnBhcmVudC0+c3R5
bGUgOiBudWxscHRyOworfQorCiBjb25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJl
bnRCb3hTdHlsZUZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVw
ZGF0ZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGVsZW1lbnRVcGRhdGUuc3R5bGUtPmRpc3BsYXko
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggMDE4ZDZh
ZGRjMDQyOTk5YThjMzExZWNjZWQ3NjZjYzY4ZmFiZDE3ZC4uN2RmNGQ2YTNlNzBlMTcyYzc0ZDky
M2YwMDI2NzAzNTc2ZDZhZTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNv
bHZlci5oCkBAIC02OCw3ICs2OCw4IEBAIHByaXZhdGU6CiAgICAgRWxlbWVudFVwZGF0ZXMgcmVz
b2x2ZUVsZW1lbnQoRWxlbWVudCYpOwogCiAgICAgc3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRl
QW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0
IFN0eWxlYWJsZSYsIENoYW5nZSwgY29uc3QgUmVzb2x1dGlvbkNvbnRleHQmKTsKLSAgICBzdGQ6
Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IHJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiwgY29u
c3QgRWxlbWVudFVwZGF0ZSYsIFBzZXVkb0lkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRV
cGRhdGU+IHJlc29sdmVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmLCBQc2V1ZG9JZCwgY29uc3QgRWxl
bWVudFVwZGF0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gcmVzb2x2ZUZp
cnN0TGluZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUmKTsKIAog
ICAgIHN0cnVjdCBTY29wZSA6IFJlZkNvdW50ZWQ8U2NvcGU+IHsKICAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKFRyZWVSZXNvbHZlclNj
b3BlKTsKQEAgLTEwNyw2ICsxMDgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb2x1dGlvbkNvbnRl
eHQgbWFrZVJlc29sdXRpb25Db250ZXh0KCk7CiAgICAgUmVzb2x1dGlvbkNvbnRleHQgbWFrZVJl
c29sdXRpb25Db250ZXh0Rm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJik7Cisg
ICAgY29uc3QgUGFyZW50KiBib3hHZW5lcmF0aW5nUGFyZW50KCkgY29uc3Q7CiAgICAgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKCkgY29uc3Q7CiAgICAgY29uc3QgUmVuZGVyU3R5
bGUqIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcAppbmRleCBkZDY2NjJjNTFm
MmZkNWI2MzRlMzA1YWZhYTlkZjI5NjZlZDM3OGY2Li43NTdmMjY3Mjc2YjI2MjZjZjk1N2RkMWVh
ZWM2N2FhMjUzMWI4OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVw
ZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwCkBAIC04
NSw2ICs4NSwyMCBAQCBSZW5kZXJTdHlsZSogVXBkYXRlOjplbGVtZW50U3R5bGUoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gJnJlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKTsKIH0K
IAorY29uc3QgUmVuZGVyU3R5bGUqIFVwZGF0ZTo6cHNldWRvRWxlbWVudFN0eWxlKGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQsIFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAoreworICAgIGlmIChhdXRv
KiB1cGRhdGVzID0gZWxlbWVudFVwZGF0ZXMoZWxlbWVudCkpIHsKKyAgICAgICAgYXV0byBpdCA9
IHVwZGF0ZXMtPnBzZXVkb0VsZW1lbnRVcGRhdGVzLmZpbmQocHNldWRvSWQpOworICAgICAgICBp
ZiAoaXQgPT0gdXBkYXRlcy0+cHNldWRvRWxlbWVudFVwZGF0ZXMuZW5kKCkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5zdHlsZS5nZXQoKTsK
KyAgICB9CisgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlbmRlcmVy
LT5zdHlsZSgpLmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsKK30KKwogdm9pZCBVcGRh
dGU6OmFkZEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgRWxlbWVudCogcGFyZW50LCBFbGVtZW50
VXBkYXRlcyYmIGVsZW1lbnRVcGRhdGVzKQogewogICAgIEFTU0VSVCghbV9lbGVtZW50cy5jb250
YWlucygmZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVV
cGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKaW5kZXggYzBkNGQw
NmVhOGY5YTQ4M2VjMWE5OTU5MTIyZWMzZjcwODg1OWVmNS4uNDE2NDJiNTgzMDlhMzlkMmYzNWNl
NjhhODk2NTUwMDE4MTJmOGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCkBAIC03
OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxl
KGNvbnN0IEVsZW1lbnQmKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlKGNv
bnN0IEVsZW1lbnQmKTsKIAorICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwc2V1ZG9FbGVtZW50U3R5
bGUoY29uc3QgRWxlbWVudCYsIFBzZXVkb0lkKSBjb25zdDsKKwogICAgIGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KIAogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453705</attachid>
            <date>2022-03-03 00:51:04 -0800</date>
            <delta_ts>2022-03-04 02:29:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220303105102.patch</filename>
            <type>text/plain</type>
            <size>16171</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MDJmZDYwOTdiZmFh
NmQ1ZjlmZGU2MDc1N2E3ZDlhNjVmNjQzYi4uYmY1MzM0MTEyZTkyNWNlMzIyNzk3OWEyNGZmNGM0
YWU4ZTczNGJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTAyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpyZXNvbHZlRmlyc3RMaW5lUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpib3hHZW5lcmF0aW5nUGFyZW50IGNvbnN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0
eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VXBkYXRlOjpwc2V1ZG9FbGVtZW50U3R5bGUgY29uc3QpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjItMDItMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW3dlYi1hbmltYXRpb25zXSB3ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMtYXJndW1lbnQt
MDAxLmh0bWwgaXMgYSB1bmlxdWUgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCmluZGV4IDVlYWQyNGZiMDM2NTE0MmViOTFkMDQ1OTA2MDBmODM2MTM2
ZmU1ZDcuLjljNmMxOTE0YTU4ZTI0OTc3OGIxYzk0MGMwNWEzOTgyYmRiNzFhNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI2OSwxNyArMjY5LDI1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6Y29tcHV0ZUZp
cnN0TGluZVN0eWxlKCkgY29uc3QKIAogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRlckVsZW1lbnQ6
OmZpcnN0TGluZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2VzRmlyc3RMaW5l
UnVsZXMoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCk7CisgICAgYXV0byByZW5kZXJlckZvckZp
cnN0TGluZSA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlckVsZW1lbnQmIHsKKyAgICAgICAgaWYgKGlz
QW5vbnltb3VzQmxvY2soKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgICAg
ICByZXR1cm4gKnBhcmVudCgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfTsKIAotICAg
IGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7Ci0gICAgICAgIGF1dG8gZmly
c3RMaW5lU3R5bGUgPSBjb21wdXRlRmlyc3RMaW5lU3R5bGUoKTsKLSAgICAgICAgaWYgKGZpcnN0
TGluZVN0eWxlIHx8IGhhc1JhcmVEYXRhKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRl
ckVsZW1lbnQmPigqdGhpcykuZW5zdXJlUmFyZURhdGEoKS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9
IFdURk1vdmUoZmlyc3RMaW5lU3R5bGUpOwotICAgICAgICBtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RM
aW5lU3R5bGUgPSB0cnVlOwotICAgIH0KKyAgICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSBy
ZW5kZXJlckZvckZpcnN0TGluZSgpLnN0eWxlKCkuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRv
SWQ6OkZpcnN0TGluZSkpCisgICAgICAgIHJldHVybiAqZmlyc3RMaW5lU3R5bGU7CisKKyAgICBy
ZXR1cm4gc3R5bGUoKTsKIAotICAgIHJldHVybiAoaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgp
LmNhY2hlZEZpcnN0TGluZVN0eWxlKSA/ICpyYXJlRGF0YSgpLmNhY2hlZEZpcnN0TGluZVN0eWxl
IDogc3R5bGUoKTsKKy8vICAgIGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7
CisvLyAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IGNvbXB1dGVGaXJzdExpbmVTdHlsZSgp
OworLy8gICAgICAgIGlmIChmaXJzdExpbmVTdHlsZSB8fCBoYXNSYXJlRGF0YSgpKQorLy8gICAg
ICAgICAgICBjb25zdF9jYXN0PFJlbmRlckVsZW1lbnQmPigqdGhpcykuZW5zdXJlUmFyZURhdGEo
KS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9IFdURk1vdmUoZmlyc3RMaW5lU3R5bGUpOworLy8gICAg
ICAgIG1faGFzVmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IHRydWU7CisvLyAgICB9CisvLwor
Ly8gICAgcmV0dXJuIChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5l
U3R5bGUpID8gKnJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUgOiBzdHlsZSgpOwogfQog
CiBTdHlsZURpZmZlcmVuY2UgUmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNp
dGl2ZVByb3BlcnR5PiBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggMDkwNThmNzljZTcx
NzU1MDM0ZmRhODQ4ZDQyYWM2YTk5MmQ0NGU2OC4uMWI4MmQ3ZDBlZWM5NzE1NDcxYWFhNWI3OThj
ZDlkNzFiMGZmZjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTI0NzUsNCArMjQ3NSw5IEBAIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRS
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gc3R5
bGUgJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS0+Y29u
dGVudERhdGEoKTsKIH0KIAoraW5saW5lIGJvb2wgZ2VuZXJhdGVzQm94KGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBl
OjpOb25lICYmIHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHM7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmNwcAppbmRleCBlZTljYjFhOWNjMjY3MmU2ODI1MzgxZTA1Zjk5NDg2M2FjYjhlZmVi
Li5kODdhZDNjZTUxOTYyMTBhYmY0ZjQxYjgyM2FhNmJjZTZmYjJhZmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZXRlckVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCkBAIC0yNTAsMTQgKzI1MSwxNyBAQCBF
bGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgfQogCiAgICAgUHNldWRvSWRUb0VsZW1lbnRVcGRhdGVNYXAgcHNldWRvVXBkYXRl
czsKLSAgICBpZiAoYXV0byBtYXJrZXJFbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxl
KGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6Ok1hcmtlcikpCi0gICAgICAgIHBzZXVkb1VwZGF0
ZXMuc2V0KFBzZXVkb0lkOjpNYXJrZXIsIFdURk1vdmUoKm1hcmtlckVsZW1lbnRVcGRhdGUpKTsK
LSAgICBpZiAoYXV0byBiZWZvcmVFbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVs
ZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkJlZm9yZSkpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMu
c2V0KFBzZXVkb0lkOjpCZWZvcmUsIFdURk1vdmUoKmJlZm9yZUVsZW1lbnRVcGRhdGUpKTsKLSAg
ICBpZiAoYXV0byBhZnRlckVsZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVu
dCwgdXBkYXRlLCBQc2V1ZG9JZDo6QWZ0ZXIpKQotICAgICAgICBwc2V1ZG9VcGRhdGVzLnNldChQ
c2V1ZG9JZDo6QWZ0ZXIsIFdURk1vdmUoKmFmdGVyRWxlbWVudFVwZGF0ZSkpOwotICAgIGlmIChh
dXRvIGJhY2tkcm9wRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1
cGRhdGUsIFBzZXVkb0lkOjpCYWNrZHJvcCkpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBz
ZXVkb0lkOjpCYWNrZHJvcCwgV1RGTW92ZSgqYmFja2Ryb3BFbGVtZW50VXBkYXRlKSk7CisKKyAg
ICBhdXRvIHJlc29sdmVBbmRTZXRQc2V1ZG9FbGVtZW50ID0gWyZdKFBzZXVkb0lkIHBzZXVkb0lk
KSB7CisgICAgICAgIGlmIChhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRv
RWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgdXBkYXRlKSkKKyAgICAgICAgICAgIHBzZXVkb1Vw
ZGF0ZXMuc2V0KHBzZXVkb0lkLCBXVEZNb3ZlKCpwc2V1ZG9FbGVtZW50VXBkYXRlKSk7CisgICAg
fTsKKworICAgIHJlc29sdmVBbmRTZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkOjpNYXJrZXIpOwor
ICAgIHJlc29sdmVBbmRTZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkOjpCZWZvcmUpOworICAgIHJl
c29sdmVBbmRTZXRQc2V1ZG9FbGVtZW50KFBzZXVkb0lkOjpBZnRlcik7CisgICAgcmVzb2x2ZUFu
ZFNldFBzZXVkb0VsZW1lbnQoUHNldWRvSWQ6OkJhY2tkcm9wKTsKKyAgICByZXNvbHZlQW5kU2V0
UHNldWRvRWxlbWVudChQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKIAogI2lmIEVOQUJMRShUT1VDSF9B
Q1RJT05fUkVHSU9OUykKICAgICAvLyBGSVhNRTogVHJhY2sgdGhpcyBleGFjdGx5LgpAQCAtMjcy
LDcgKzI3Niw3IEBAIEVsZW1lbnRVcGRhdGVzIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBXVEZNb3ZlKHVwZGF0ZSksIGRlc2NlbmRh
bnRzVG9SZXNvbHZlLCBXVEZNb3ZlKHBzZXVkb1VwZGF0ZXMpIH07CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSwgUHNldWRvSWQg
cHNldWRvSWQpCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVz
b2x2ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIGNv
bnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUpCiB7CiAgICAgaWYgKHBzZXVkb0lkID09
IFBzZXVkb0lkOjpCYWNrZHJvcCAmJiAhZWxlbWVudC5pc0luVG9wTGF5ZXIoKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTI4MCw2ICsyODQsMTAgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50VXBk
YXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LAog
ICAgICAgICByZXR1cm4geyB9OwogICAgIGlmIChlbGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAo
cHNldWRvSWQgPT0gUHNldWRvSWQ6OkZpcnN0TGluZSkKKyAgICAgICAgcmV0dXJuIHJlc29sdmVG
aXJzdExpbmVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIGVsZW1lbnRVcGRhdGUpOworICAgIAogICAg
IGlmICghZWxlbWVudFVwZGF0ZS5zdHlsZS0+aGFzUHNldWRvU3R5bGUocHNldWRvSWQpKQogICAg
ICAgICByZXR1cm4geyB9OwogCkBAIC0yODgsNyArMjk2LDYgQEAgc3RkOjpvcHRpb25hbDxFbGVt
ZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVt
ZW50LAogICAgIGF1dG8gcHNldWRvU3R5bGUgPSBzY29wZSgpLnJlc29sdmVyLT5wc2V1ZG9TdHls
ZUZvckVsZW1lbnQoZWxlbWVudCwgeyBwc2V1ZG9JZCB9LCByZXNvbHV0aW9uQ29udGV4dCk7CiAg
ICAgaWYgKCFwc2V1ZG9TdHlsZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLQogICAgIGJvb2wgaGFz
QW5pbWF0aW9ucyA9IHBzZXVkb1N0eWxlLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIHx8
IGVsZW1lbnQuaGFzS2V5ZnJhbWVFZmZlY3RzKHBzZXVkb0lkKTsKICAgICBpZiAoIXBzZXVkb0Vs
ZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9u
cykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI5Niw2ICszMDMsOTIgQEAgc3RkOjpvcHRpb25h
bDxFbGVtZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50
JiBlbGVtZW50LAogICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92
ZShwc2V1ZG9TdHlsZSksIHsgZWxlbWVudCwgcHNldWRvSWQgfSwgZWxlbWVudFVwZGF0ZS5jaGFu
Z2UsIHJlc29sdXRpb25Db250ZXh0KTsKIH0KIAorc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRl
PiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVGaXJzdExpbmVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUpCit7CisgICAgaWYgKCFz
Y29wZSgpLnJlc29sdmVyLT51c2VzRmlyc3RMaW5lUnVsZXMoKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIGF1dG8gaXNGaXJzdExpbmVCbG9jayA9IFtdKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkgeworICAgICAgICBhdXRvIGRpc3BsYXkgPSBzdHlsZS5kaXNwbGF5KCk7CisgICAgICAg
IHJldHVybiBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpCbG9jaworICAgICAgICAgICAgfHwgZGlz
cGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2sKKyAgICAgICAgICAgIHx8IGRpc3BsYXkg
PT0gRGlzcGxheVR5cGU6Okxpc3RJdGVtCisgICAgICAgICAgICB8fCBkaXNwbGF5ID09IERpc3Bs
YXlUeXBlOjpUYWJsZUNlbGw7CisgICAgfTsKKworICAgIGF1dG8gaXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Um9vdCA9IFtdKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgeworICAgICAgICAvLyBG
SVhNRTogSW5jb21wbGV0ZS4gVGhlcmUgc2hvdWxkIGJlIHNoYXJlZCBjb2RlIHdpdGggbGF5b3V0
IGZvciB0aGlzLgorICAgICAgICBpZiAoc3R5bGUuaGFzT3V0T2ZGbG93UG9zaXRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoc3R5bGUuZmxvYXRpbmcoKSAhPSBG
bG9hdDo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gc3R5
bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpCbG9jazsKKyAgICB9OworCisgICAgYXV0byBm
aXJzdExpbmVFbGVtZW50Rm9yQmxvY2sgPSBbJl0oKSAtPiBFbGVtZW50KiB7CisgICAgICAgIGlm
ICghaXNGaXJzdExpbmVCbG9jaygqZWxlbWVudFVwZGF0ZS5zdHlsZSkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGVsZW1lbnRVcGRhdGUuc3R5bGUtPmhhc1BzZXVk
b1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpKQorICAgICAgICAgICAgcmV0dXJuICZlbGVtZW50
OworICAgICAgICBpZiAoaXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Um9vdCgqZWxlbWVudFVwZGF0
ZS5zdHlsZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyA6OmZp
cnN0LWxpbmUgaXMgb25seSBwcm9wYWdhdGVkIHRvIHRoZSBmaXJzdCBibG9jay4KKyAgICAgICAg
aWYgKHBhcmVudCgpLnJlc29sdmVkRmlyc3RCb3hHZW5lcmF0aW5nQ2hpbGQpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBmb3IgKGF1dG8mIHBhcmVudCA6IG1ha2VSZXZl
cnNlZFJhbmdlKG1fcGFyZW50U3RhY2spKSB7CisgICAgICAgICAgICBpZiAocGFyZW50LnN0eWxl
LmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAoIWlzRmlyc3RMaW5lQmxvY2socGFyZW50LnN0eWxlKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChwYXJlbnQu
c3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhcmVudC5lbGVtZW50OworICAgICAgICAgICAgaWYgKGlzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dFJvb3QocGFyZW50LnN0eWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9OworCisgICAg
aWYgKGF1dG8gZmlyc3RMaW5lRWxlbWVudCA9IGZpcnN0TGluZUVsZW1lbnRGb3JCbG9jaygpKSB7
CisgICAgICAgIGF1dG8gcmVzb2x1dGlvbkNvbnRleHQgPSBtYWtlUmVzb2x1dGlvbkNvbnRleHRG
b3JQc2V1ZG9FbGVtZW50KGVsZW1lbnRVcGRhdGUpOworICAgICAgICBpZiAoZmlyc3RMaW5lRWxl
bWVudCAhPSAmZWxlbWVudCkKKyAgICAgICAgICAgIHJlc29sdXRpb25Db250ZXh0LnNlbGVjdG9y
TWF0Y2hpbmdTdGF0ZSA9IG51bGxwdHI7CisKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50U3R5
bGUgPSBzY29wZSgpLnJlc29sdmVyLT5wc2V1ZG9TdHlsZUZvckVsZW1lbnQoKmZpcnN0TGluZUVs
ZW1lbnQsIHsgUHNldWRvSWQ6OkZpcnN0TGluZSB9LCByZXNvbHV0aW9uQ29udGV4dCk7CisgICAg
ICAgIGlmICghcHNldWRvRWxlbWVudFN0eWxlKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgICAgICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUocHNldWRv
RWxlbWVudFN0eWxlKSwgeyBlbGVtZW50LCBQc2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIGVsZW1lbnRV
cGRhdGUuY2hhbmdlLCByZXNvbHV0aW9uQ29udGV4dCk7CisgICAgfQorCisgICAgaWYgKGVsZW1l
bnRVcGRhdGUuc3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKSB7CisgICAg
ICAgIGF1dG8qIHBhcmVudCA9IGJveEdlbmVyYXRpbmdQYXJlbnQoKTsKKyAgICAgICAgaWYgKCFw
YXJlbnQgfHwgIXBhcmVudC0+ZWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICAgICAgYXV0byBwYXJlbnRGaXJzdExpbmVTdHlsZSA9IG1fdXBkYXRlLT5wc2V1ZG9FbGVtZW50
U3R5bGUoKnBhcmVudC0+ZWxlbWVudCwgUHNldWRvSWQ6OkZpcnN0TGluZSk7CisgICAgICAgIGlm
ICghcGFyZW50Rmlyc3RMaW5lU3R5bGUpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAg
ICAgIC8vIEZpcnN0IGxpbmUgc3R5bGUgZm9yIGlubGluZXMgaXMgbWFkZSBieSBpbmhlcml0aW5n
IGZyb20gcGFyZW50IGZpcnN0IGxpbmUgc3R5bGUuCisgICAgICAgIGF1dG8gcmVzb2x1dGlvbkNv
bnRleHQgPSBSZXNvbHV0aW9uQ29udGV4dCB7CisgICAgICAgICAgICBwYXJlbnRGaXJzdExpbmVT
dHlsZSwKKyAgICAgICAgICAgIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChlbGVtZW50
VXBkYXRlKSwKKyAgICAgICAgICAgIG1fZG9jdW1lbnRFbGVtZW50U3R5bGUuZ2V0KCksCisgICAg
ICAgICAgICAmc2NvcGUoKS5zZWxlY3Rvck1hdGNoaW5nU3RhdGUKKyAgICAgICAgfTsKKworICAg
ICAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnN0eWxlRm9yRWxlbWVu
dChlbGVtZW50LCByZXNvbHV0aW9uQ29udGV4dCk7CisgICAgICAgIGF1dG8gZmlyc3RMaW5lU3R5
bGUgPSBXVEZNb3ZlKGVsZW1lbnRTdHlsZS5yZW5kZXJTdHlsZSk7CisgICAgICAgIGZpcnN0TGlu
ZVN0eWxlLT5zZXRTdHlsZVR5cGUoUHNldWRvSWQ6OkZpcnN0TGluZSk7CisKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKGZpcnN0TGluZVN0eWxlKSwg
eyBlbGVtZW50LCBQc2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIGVsZW1lbnRVcGRhdGUuY2hhbmdlLCBy
ZXNvbHV0aW9uQ29udGV4dCk7CisgICAgfQorCisgICAgcmV0dXJuIHsgfTsKK30KKwogUmVzb2x1
dGlvbkNvbnRleHQgVHJlZVJlc29sdmVyOjptYWtlUmVzb2x1dGlvbkNvbnRleHQoKQogewogICAg
IHJldHVybiB7CkBAIC0zMTYsMjAgKzQwOSwyNSBAQCBSZXNvbHV0aW9uQ29udGV4dCBUcmVlUmVz
b2x2ZXI6Om1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbQog
ICAgIH07CiB9CiAKLWNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0
eWxlKCkgY29uc3QKK2F1dG8gVHJlZVJlc29sdmVyOjpib3hHZW5lcmF0aW5nUGFyZW50KCkgY29u
c3QgLT4gY29uc3QgUGFyZW50KgogewogICAgIC8vICdkaXNwbGF5OiBjb250ZW50cycgZG9lc24n
dCBnZW5lcmF0ZSBib3hlcy4KLSAgICBmb3IgKGF1dG8gaSA9IG1fcGFyZW50U3RhY2suc2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgIGF1dG8mIHBhcmVudCA9IG1fcGFyZW50U3RhY2tbaV07CisgICAg
Zm9yIChhdXRvJiBwYXJlbnQgOiBtYWtlUmV2ZXJzZWRSYW5nZShtX3BhcmVudFN0YWNrKSkgewog
ICAgICAgICBpZiAocGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAocGFyZW50LnN0eWxlLmRp
c3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHMpCi0gICAgICAgICAgICByZXR1cm4gJnBh
cmVudC5zdHlsZTsKKyAgICAgICAgICAgIHJldHVybiAmcGFyZW50OwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY29uc3QgUmVuZGVy
U3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUoKSBjb25zdAoreworICAgIGF1dG8q
IHBhcmVudCA9IGJveEdlbmVyYXRpbmdQYXJlbnQoKTsKKyAgICByZXR1cm4gcGFyZW50ID8gJnBh
cmVudC0+c3R5bGUgOiBudWxscHRyOworfQorCiBjb25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29s
dmVyOjpwYXJlbnRCb3hTdHlsZUZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYg
ZWxlbWVudFVwZGF0ZSkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGVsZW1lbnRVcGRhdGUuc3R5bGUt
PmRpc3BsYXkoKSkgewpAQCAtNTUwLDYgKzY0OCw5IEBAIHZvaWQgVHJlZVJlc29sdmVyOjpyZXNv
bHZlQ29tcG9zZWRUcmVlKCkKICAgICAgICAgICAgICAgICBtX3VwZGF0ZS0+YWRkVGV4dCh0ZXh0
LCBwYXJlbnQuZWxlbWVudCwgV1RGTW92ZSh0ZXh0VXBkYXRlKSk7CiAgICAgICAgICAgICB9CiAK
KyAgICAgICAgICAgIGlmICghdGV4dC5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hU
TUxTcGFjZT4oKSkKKyAgICAgICAgICAgICAgICBwYXJlbnQucmVzb2x2ZWRGaXJzdEJveEdlbmVy
YXRpbmdDaGlsZCA9IHRydWU7CisKICAgICAgICAgICAgIHRleHQuc2V0SGFzVmFsaWRTdHlsZSgp
OwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwogICAgICAg
ICAgICAgY29udGludWU7CkBAIC02MDQsNiArNzA1LDkgQEAgdm9pZCBUcmVlUmVzb2x2ZXI6OnJl
c29sdmVDb21wb3NlZFRyZWUoKQogICAgICAgICBpZiAoIW1fZGlkU2VlUGVuZGluZ1N0eWxlc2hl
ZXQpCiAgICAgICAgICAgICBtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0ID0gaGFzTG9hZGluZ1N0
eWxlc2hlZXQobV9kb2N1bWVudC5zdHlsZVNjb3BlKCksIGVsZW1lbnQsICFzaG91bGRJdGVyYXRl
Q2hpbGRyZW4pOwogCisgICAgICAgIGlmIChzdHlsZSAmJiBnZW5lcmF0ZXNCb3goKnN0eWxlKSkK
KyAgICAgICAgICAgIHBhcmVudC5yZXNvbHZlZEZpcnN0Qm94R2VuZXJhdGluZ0NoaWxkID0gdHJ1
ZTsKKwogICAgICAgICBpZiAoIXNob3VsZEl0ZXJhdGVDaGlsZHJlbikgewogICAgICAgICAgICAg
aXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwogICAgICAgICAgICAgY29udGludWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAppbmRleCAwMThkNmFkZGMw
NDI5OTlhOGMzMTFlY2NlZDc2NmNjNjhmYWJkMTdkLi42ZjQyZjE3MzE4NTEzMWVlZWVmYTc5N2Ez
NWY0ZDgzNGVlMjcyMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRy
ZWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmgKQEAgLTY4LDcgKzY4LDggQEAgcHJpdmF0ZToKICAgICBFbGVtZW50VXBkYXRlcyByZXNvbHZl
RWxlbWVudChFbGVtZW50Jik7CiAKICAgICBzdGF0aWMgRWxlbWVudFVwZGF0ZSBjcmVhdGVBbmlt
YXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgU3R5
bGVhYmxlJiwgQ2hhbmdlLCBjb25zdCBSZXNvbHV0aW9uQ29udGV4dCYpOwotICAgIHN0ZDo6b3B0
aW9uYWw8RWxlbWVudFVwZGF0ZT4gcmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmLCBjb25zdCBF
bGVtZW50VXBkYXRlJiwgUHNldWRvSWQpOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0
ZT4gcmVzb2x2ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYsIFBzZXVkb0lkLCBjb25zdCBFbGVtZW50
VXBkYXRlJik7CisgICAgc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlRmlyc3RM
aW5lUHNldWRvRWxlbWVudChFbGVtZW50JiwgY29uc3QgRWxlbWVudFVwZGF0ZSYpOwogCiAgICAg
c3RydWN0IFNjb3BlIDogUmVmQ291bnRlZDxTY29wZT4gewogICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoVHJlZVJlc29sdmVyU2NvcGUp
OwpAQCAtODksNiArOTAsNyBAQCBwcml2YXRlOgogICAgICAgICBDaGFuZ2UgY2hhbmdlIHsgQ2hh
bmdlOjpOb25lIH07CiAgICAgICAgIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9S
ZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUgfTsKICAgICAgICAgYm9vbCBkaWRQ
dXNoU2NvcGUgeyBmYWxzZSB9OworICAgICAgICBib29sIHJlc29sdmVkRmlyc3RCb3hHZW5lcmF0
aW5nQ2hpbGQgeyBmYWxzZSB9OwogCiAgICAgICAgIFBhcmVudChEb2N1bWVudCYpOwogICAgICAg
ICBQYXJlbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgQ2hhbmdlLCBEZXNjZW5kYW50
c1RvUmVzb2x2ZSk7CkBAIC0xMDcsNiArMTA5LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc29sdXRp
b25Db250ZXh0IG1ha2VSZXNvbHV0aW9uQ29udGV4dCgpOwogICAgIFJlc29sdXRpb25Db250ZXh0
IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0
ZSYpOworICAgIGNvbnN0IFBhcmVudCogYm94R2VuZXJhdGluZ1BhcmVudCgpIGNvbnN0OwogICAg
IGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSgpIGNvbnN0OwogICAgIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZUZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVw
ZGF0ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVw
ZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5jcHAKaW5kZXggZGQ2
NjYyYzUxZjJmZDViNjM0ZTMwNWFmYWE5ZGYyOTY2ZWQzNzhmNi4uNzU3ZjI2NzI3NmIyNjI2Y2Y5
NTdkZDFlYWVjNjdhYTI1MzFiODhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVVcGRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNw
cApAQCAtODUsNiArODUsMjAgQEAgUmVuZGVyU3R5bGUqIFVwZGF0ZTo6ZWxlbWVudFN0eWxlKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuICZyZW5kZXJlci0+bXV0YWJsZVN0eWxl
KCk7CiB9CiAKK2NvbnN0IFJlbmRlclN0eWxlKiBVcGRhdGU6OnBzZXVkb0VsZW1lbnRTdHlsZShj
b25zdCBFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byogdXBkYXRlcyA9IGVsZW1lbnRVcGRhdGVzKGVsZW1lbnQpKSB7CisgICAgICAgIGF1
dG8gaXQgPSB1cGRhdGVzLT5wc2V1ZG9FbGVtZW50VXBkYXRlcy5maW5kKHBzZXVkb0lkKTsKKyAg
ICAgICAgaWYgKGl0ID09IHVwZGF0ZXMtPnBzZXVkb0VsZW1lbnRVcGRhdGVzLmVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBpdC0+dmFsdWUuc3R5bGUu
Z2V0KCk7CisgICAgfQorICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBy
ZW5kZXJlci0+c3R5bGUoKS5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCk7Cit9CisKIHZv
aWQgVXBkYXRlOjphZGRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIEVsZW1lbnQqIHBhcmVudCwg
RWxlbWVudFVwZGF0ZXMmJiBlbGVtZW50VXBkYXRlcykKIHsKICAgICBBU1NFUlQoIW1fZWxlbWVu
dHMuY29udGFpbnMoJmVsZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCmluZGV4
IGMwZDRkMDZlYThmOWE0ODNlYzFhOTk1OTEyMmVjM2Y3MDg4NTllZjUuLjQxNjQyYjU4MzA5YTM5
ZDJmMzVjZTY4YTg5NjU1MDAxODEyZjhhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUu
aApAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1l
bnRTdHlsZShjb25zdCBFbGVtZW50JikgY29uc3Q7CiAgICAgUmVuZGVyU3R5bGUqIGVsZW1lbnRT
dHlsZShjb25zdCBFbGVtZW50Jik7CiAKKyAgICBjb25zdCBSZW5kZXJTdHlsZSogcHNldWRvRWxl
bWVudFN0eWxlKGNvbnN0IEVsZW1lbnQmLCBQc2V1ZG9JZCkgY29uc3Q7CisKICAgICBjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453825</attachid>
            <date>2022-03-04 02:29:36 -0800</date>
            <delta_ts>2022-03-04 07:22:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220304122934.patch</filename>
            <type>text/plain</type>
            <size>14641</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM0Zjg2NWEzNWQxMzUx
OTgyM2RmNGFkY2EyY2IxNDhjZWNjOTNhZi4uZGRlY2RjOWU4MzViNjIwM2Y3YjcyNzc3ZTQwNzBh
ZjU3NWUzM2FjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTAyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpyZXNvbHZlRmlyc3RMaW5lUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpib3hHZW5lcmF0aW5nUGFyZW50IGNvbnN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0
eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VXBkYXRlOjpwc2V1ZG9FbGVtZW50U3R5bGUgY29uc3QpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjItMDMtMDMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJHTCBjb250ZXh0IGNvdW50IGlzIG5vdCBsaW1p
dGVkIGZvciBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCmluZGV4IGZhYzE4YmFjZGMwMDQ3MjIxMWRlNTVlMTYxZTMzNTc1MWNiZDFiMjEuLmQ2
NTcwMWU3YWZmZjc1MGZmMzJkYWYzYzg4ODk4NmZmMDM5YTZlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI2OSwxNyArMjY5LDI1IEBAIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6Y29tcHV0ZUZpcnN0TGluZVN0
eWxlKCkgY29uc3QKIAogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRlckVsZW1lbnQ6OmZpcnN0TGlu
ZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2VzRmlyc3RMaW5lUnVsZXMoKSkK
LSAgICAgICAgcmV0dXJuIHN0eWxlKCk7CisgICAgYXV0byByZW5kZXJlckZvckZpcnN0TGluZSA9
IFsmXSgpIC0+IGNvbnN0IFJlbmRlckVsZW1lbnQmIHsKKyAgICAgICAgaWYgKGlzQW5vbnltb3Vz
QmxvY2soKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgICAgICByZXR1cm4g
KnBhcmVudCgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfTsKIAotICAgIGlmICghbV9o
YXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7Ci0gICAgICAgIGF1dG8gZmlyc3RMaW5lU3R5
bGUgPSBjb21wdXRlRmlyc3RMaW5lU3R5bGUoKTsKLSAgICAgICAgaWYgKGZpcnN0TGluZVN0eWxl
IHx8IGhhc1JhcmVEYXRhKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlckVsZW1lbnQm
PigqdGhpcykuZW5zdXJlUmFyZURhdGEoKS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9IFdURk1vdmUo
Zmlyc3RMaW5lU3R5bGUpOwotICAgICAgICBtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RMaW5lU3R5bGUg
PSB0cnVlOwotICAgIH0KKyAgICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSByZW5kZXJlckZv
ckZpcnN0TGluZSgpLnN0eWxlKCkuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0
TGluZSkpCisgICAgICAgIHJldHVybiAqZmlyc3RMaW5lU3R5bGU7CisKKyAgICByZXR1cm4gc3R5
bGUoKTsKIAotICAgIHJldHVybiAoaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLmNhY2hlZEZp
cnN0TGluZVN0eWxlKSA/ICpyYXJlRGF0YSgpLmNhY2hlZEZpcnN0TGluZVN0eWxlIDogc3R5bGUo
KTsKKy8vICAgIGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7CisvLyAgICAg
ICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IGNvbXB1dGVGaXJzdExpbmVTdHlsZSgpOworLy8gICAg
ICAgIGlmIChmaXJzdExpbmVTdHlsZSB8fCBoYXNSYXJlRGF0YSgpKQorLy8gICAgICAgICAgICBj
b25zdF9jYXN0PFJlbmRlckVsZW1lbnQmPigqdGhpcykuZW5zdXJlUmFyZURhdGEoKS5jYWNoZWRG
aXJzdExpbmVTdHlsZSA9IFdURk1vdmUoZmlyc3RMaW5lU3R5bGUpOworLy8gICAgICAgIG1faGFz
VmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IHRydWU7CisvLyAgICB9CisvLworLy8gICAgcmV0
dXJuIChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUpID8g
KnJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUgOiBzdHlsZSgpOwogfQogCiBTdHlsZURp
ZmZlcmVuY2UgUmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3Bl
cnR5PiBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNjJlNzA2Mzc1MDgzYjE1MWRhMTEz
ZjVkOWY1YzdjYWI4YmJiMjdlOC4uZTc0YmVlODY1YWM4ODk4N2RiNjE3MmVlYjI0YThhMjMxNjdl
YjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
QEAgLTI0NzcsNCArMjQ3Nyw5IEBAIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUgJiYgc3R5
bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS0+Y29udGVudERhdGEo
KTsKIH0KIAoraW5saW5lIGJvb2wgZ2VuZXJhdGVzQm94KGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYm
IHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHM7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJl
ZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cAppbmRleCBhNDVmOWU2MjQ3M2YzMjMxYWJjNWY2NTQ3YjZlZWE3MjdmMTFhOWYzLi5kMTJmYmE4
NDdmMWY1NTYzMjMxYTdjM2RlMjU2OWQzMmU4ZjkxODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZXRlckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAi
SFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCkBAIC0yNTAsMTQgKzI1MSwxNSBAQCBhdXRvIFRyZWVS
ZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkgLT4gc3RkOjpwYWlyPEVs
ZW1lbnRVcGRhdGUsCiAgICAgfQogCiAgICAgYXV0byByZXNvbHZlQW5kQWRkUHNldWRvRWxlbWVu
dFN0eWxlID0gWyZdKFBzZXVkb0lkIHBzZXVkb0lkKSB7Ci0gICAgICAgIGF1dG8gcHNldWRvRWxl
bWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIHBzZXVkb0lk
KTsKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb0VsZW1l
bnQoZWxlbWVudCwgcHNldWRvSWQsIHVwZGF0ZSk7CiAgICAgICAgIGlmICghcHNldWRvRWxlbWVu
dFVwZGF0ZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBDaGFuZ2U6
Ok5vbmU7CiAgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50VXBkYXRlLT5jaGFuZ2UgIT0gQ2hhbmdl
OjpOb25lKQogICAgICAgICAgICAgdXBkYXRlLmNoYW5nZSA9IHN0ZDo6bWF4KHVwZGF0ZS5jaGFu
Z2UsIENoYW5nZTo6Tm9uSW5oZXJpdGVkKTsKICAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRVcGRh
dGUtPnJlY29tcG9zaXRlTGF5ZXIpCiAgICAgICAgICAgICB1cGRhdGUucmVjb21wb3NpdGVMYXll
ciA9IHRydWU7CiAgICAgICAgIHVwZGF0ZS5zdHlsZS0+YWRkQ2FjaGVkUHNldWRvU3R5bGUoV1RG
TW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlLT5zdHlsZSkpOworICAgICAgICByZXR1cm4gcHNldWRv
RWxlbWVudFVwZGF0ZS0+Y2hhbmdlOwogICAgIH07CiAKICAgICByZXNvbHZlQW5kQWRkUHNldWRv
RWxlbWVudFN0eWxlKFBzZXVkb0lkOjpNYXJrZXIpOwpAQCAtMjY1LDYgKzI2Nyw5IEBAIGF1dG8g
VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KSAtPiBzdGQ6OnBh
aXI8RWxlbWVudFVwZGF0ZSwKICAgICByZXNvbHZlQW5kQWRkUHNldWRvRWxlbWVudFN0eWxlKFBz
ZXVkb0lkOjpBZnRlcik7CiAgICAgcmVzb2x2ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1
ZG9JZDo6QmFja2Ryb3ApOwogCisgICAgaWYgKHJlc29sdmVBbmRBZGRQc2V1ZG9FbGVtZW50U3R5
bGUoUHNldWRvSWQ6OkZpcnN0TGluZSkgIT0gQ2hhbmdlOjpOb25lKQorICAgICAgICBkZXNjZW5k
YW50c1RvUmVzb2x2ZSA9IERlc2NlbmRhbnRzVG9SZXNvbHZlOjpBbGw7CisKICNpZiBFTkFCTEUo
VE9VQ0hfQUNUSU9OX1JFR0lPTlMpCiAgICAgLy8gRklYTUU6IFRyYWNrIHRoaXMgZXhhY3RseS4K
ICAgICBpZiAodXBkYXRlLnN0eWxlLT50b3VjaEFjdGlvbnMoKSAhPSBUb3VjaEFjdGlvbjo6QXV0
byAmJiAhbV9kb2N1bWVudC5xdWlya3MoKS5zaG91bGREaXNhYmxlUG9pbnRlckV2ZW50c1F1aXJr
KCkpCkBAIC0yNzgsNyArMjgzLDcgQEAgYXV0byBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQpIC0+IHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRlLAogICAgIHJldHVy
biB7IFdURk1vdmUodXBkYXRlKSwgZGVzY2VuZGFudHNUb1Jlc29sdmUgfTsKIH0KIAotc3RkOjpv
cHRpb25hbDxFbGVtZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1
ZG9JZCBwc2V1ZG9JZCkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVy
OjpyZXNvbHZlUHNldWRvRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9J
ZCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKIHsKICAgICBpZiAocHNldWRv
SWQgPT0gUHNldWRvSWQ6OkJhY2tkcm9wICYmICFlbGVtZW50LmlzSW5Ub3BMYXllcigpKQogICAg
ICAgICByZXR1cm4geyB9OwpAQCAtMjg2LDYgKzI5MSwxMCBAQCBzdGQ6Om9wdGlvbmFsPEVsZW1l
bnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1l
bnQsCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKGVsZW1lbnRVcGRhdGUuc3R5bGUtPmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Rmlyc3RMaW5lKQorICAgICAgICByZXR1cm4gcmVz
b2x2ZUZpcnN0TGluZVBzZXVkb0VsZW1lbnQoZWxlbWVudCwgZWxlbWVudFVwZGF0ZSk7CisgICAg
CiAgICAgaWYgKCFlbGVtZW50VXBkYXRlLnN0eWxlLT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTI5NCw3ICszMDMsNiBAQCBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQm
IGVsZW1lbnQsCiAgICAgYXV0byBwc2V1ZG9TdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVk
b1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sIHJlc29sdXRpb25Db250ZXh0
KTsKICAgICBpZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9OwotCiAgICAgYm9v
bCBoYXNBbmltYXRpb25zID0gcHNldWRvU3R5bGUtPmhhc0FuaW1hdGlvbnNPclRyYW5zaXRpb25z
KCkgfHwgZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMocHNldWRvSWQpOwogICAgIGlmICghcHNl
dWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkpICYmICFoYXNBbmlt
YXRpb25zKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMzAyLDYgKzMxMCw5NSBAQCBzdGQ6Om9w
dGlvbmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVs
ZW1lbnQmIGVsZW1lbnQsCiAgICAgcmV0dXJuIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShX
VEZNb3ZlKHBzZXVkb1N0eWxlKSwgeyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBlbGVtZW50VXBkYXRl
LmNoYW5nZSwgcmVzb2x1dGlvbkNvbnRleHQpOwogfQogCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRV
cGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUZpcnN0TGluZVBzZXVkb0VsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKK3sKKyAgICBp
ZiAoIXNjb3BlKCkucmVzb2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgYXV0byBpc0ZpcnN0TGluZUJsb2NrID0gW10oY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKSB7CisgICAgICAgIGF1dG8gZGlzcGxheSA9IHN0eWxlLmRpc3BsYXkoKTsKKyAg
ICAgICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrCisgICAgICAgICAgICB8
fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jaworICAgICAgICAgICAgfHwgZGlz
cGxheSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0KKyAgICAgICAgICAgIHx8IGRpc3BsYXkgPT0g
RGlzcGxheVR5cGU6OlRhYmxlQ2VsbDsKKyAgICB9OworCisgICAgYXV0byBpc0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHRSb290ID0gW10oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7CisgICAgICAg
IC8vIEZJWE1FOiBJbmNvbXBsZXRlLiBUaGVyZSBzaG91bGQgYmUgc2hhcmVkIGNvZGUgd2l0aCBs
YXlvdXQgZm9yIHRoaXMuCisgICAgICAgIGlmIChzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzdHlsZS5mbG9hdGluZygp
ICE9IEZsb2F0OjpOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkJsb2NrOworICAgIH07CisKKyAgICBh
dXRvIGZpcnN0TGluZUVsZW1lbnRGb3JCbG9jayA9IFsmXSgpIC0+IEVsZW1lbnQqIHsKKyAgICAg
ICAgaWYgKCFpc0ZpcnN0TGluZUJsb2NrKCplbGVtZW50VXBkYXRlLnN0eWxlKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+aGFz
UHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSkpCisgICAgICAgICAgICByZXR1cm4gJmVs
ZW1lbnQ7CisgICAgICAgIGlmIChpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290KCplbGVtZW50
VXBkYXRlLnN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8v
IDo6Zmlyc3QtbGluZSBpcyBvbmx5IHByb3BhZ2F0ZWQgdG8gdGhlIGZpcnN0IGJsb2NrLgorICAg
ICAgICBpZiAocGFyZW50KCkucmVzb2x2ZWRGaXJzdEJveEdlbmVyYXRpbmdDaGlsZCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGZvciAoYXV0byYgcGFyZW50IDogbWFr
ZVJldmVyc2VkUmFuZ2UobV9wYXJlbnRTdGFjaykpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnQu
c3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghaXNGaXJzdExpbmVCbG9jayhwYXJlbnQuc3R5
bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaWYgKHBh
cmVudC5zdHlsZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyZW50LmVsZW1lbnQ7CisgICAgICAgICAgICBpZiAoaXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Um9vdChwYXJlbnQuc3R5bGUpKQorICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH07CisK
KyAgICBpZiAoYXV0byBmaXJzdExpbmVFbGVtZW50ID0gZmlyc3RMaW5lRWxlbWVudEZvckJsb2Nr
KCkpIHsKKyAgICAgICAgYXV0byByZXNvbHV0aW9uQ29udGV4dCA9IG1ha2VSZXNvbHV0aW9uQ29u
dGV4dEZvclBzZXVkb0VsZW1lbnQoZWxlbWVudFVwZGF0ZSk7CisgICAgICAgIGlmIChmaXJzdExp
bmVFbGVtZW50ICE9ICZlbGVtZW50KQorICAgICAgICAgICAgcmVzb2x1dGlvbkNvbnRleHQuc2Vs
ZWN0b3JNYXRjaGluZ1N0YXRlID0gbnVsbHB0cjsKKworICAgICAgICBhdXRvIHBzZXVkb0VsZW1l
bnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudCgqZmlyc3RM
aW5lRWxlbWVudCwgeyBQc2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIHJlc29sdXRpb25Db250ZXh0KTsK
KyAgICAgICAgaWYgKCFwc2V1ZG9FbGVtZW50U3R5bGUpCisgICAgICAgICAgICByZXR1cm4geyB9
OworCisgICAgICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShw
c2V1ZG9FbGVtZW50U3R5bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpGaXJzdExpbmUgfSwgZWxl
bWVudFVwZGF0ZS5jaGFuZ2UsIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICB9CisKKyAgICBpZiAo
ZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpIHsK
KyAgICAgICAgYXV0byogcGFyZW50ID0gYm94R2VuZXJhdGluZ1BhcmVudCgpOworICAgICAgICBp
ZiAoIXBhcmVudCB8fCAhcGFyZW50LT5lbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgICAgICBhdXRvKiBwYXJlbnRTdHlsZSA9IG1fdXBkYXRlLT5lbGVtZW50U3R5bGUoKnBh
cmVudC0+ZWxlbWVudCk7CisgICAgICAgIGlmICghcGFyZW50U3R5bGUpCisgICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICBhdXRvIHBhcmVudEZpcnN0TGluZVN0eWxlID0gcGFyZW50U3R5
bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpOworICAgICAgICBp
ZiAoIXBhcmVudEZpcnN0TGluZVN0eWxlKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
ICAgICAvLyBGaXJzdCBsaW5lIHN0eWxlIGZvciBpbmxpbmVzIGlzIG1hZGUgYnkgaW5oZXJpdGlu
ZyBmcm9tIHBhcmVudCBmaXJzdCBsaW5lIHN0eWxlLgorICAgICAgICBhdXRvIHJlc29sdXRpb25D
b250ZXh0ID0gUmVzb2x1dGlvbkNvbnRleHQgeworICAgICAgICAgICAgcGFyZW50Rmlyc3RMaW5l
U3R5bGUsCisgICAgICAgICAgICBwYXJlbnRCb3hTdHlsZUZvclBzZXVkb0VsZW1lbnQoZWxlbWVu
dFVwZGF0ZSksCisgICAgICAgICAgICBtX2RvY3VtZW50RWxlbWVudFN0eWxlLmdldCgpLAorICAg
ICAgICAgICAgJnNjb3BlKCkuc2VsZWN0b3JNYXRjaGluZ1N0YXRlCisgICAgICAgIH07CisKKyAg
ICAgICAgYXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgpLnJlc29sdmVyLT5zdHlsZUZvckVsZW1l
bnQoZWxlbWVudCwgcmVzb2x1dGlvbkNvbnRleHQpOworICAgICAgICBhdXRvIGZpcnN0TGluZVN0
eWxlID0gV1RGTW92ZShlbGVtZW50U3R5bGUucmVuZGVyU3R5bGUpOworICAgICAgICBmaXJzdExp
bmVTdHlsZS0+c2V0U3R5bGVUeXBlKFBzZXVkb0lkOjpGaXJzdExpbmUpOworCisgICAgICAgIHJl
dHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShmaXJzdExpbmVTdHlsZSks
IHsgZWxlbWVudCwgUHNldWRvSWQ6OkZpcnN0TGluZSB9LCBlbGVtZW50VXBkYXRlLmNoYW5nZSwg
cmVzb2x1dGlvbkNvbnRleHQpOworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKIFJlc29s
dXRpb25Db250ZXh0IFRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdXRpb25Db250ZXh0KCkKIHsKICAg
ICByZXR1cm4gewpAQCAtMzIyLDIwICs0MTksMjUgQEAgUmVzb2x1dGlvbkNvbnRleHQgVHJlZVJl
c29sdmVyOjptYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW0K
ICAgICB9OwogfQogCi1jb25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hT
dHlsZSgpIGNvbnN0CithdXRvIFRyZWVSZXNvbHZlcjo6Ym94R2VuZXJhdGluZ1BhcmVudCgpIGNv
bnN0IC0+IGNvbnN0IFBhcmVudCoKIHsKICAgICAvLyAnZGlzcGxheTogY29udGVudHMnIGRvZXNu
J3QgZ2VuZXJhdGUgYm94ZXMuCi0gICAgZm9yIChhdXRvIGkgPSBtX3BhcmVudFN0YWNrLnNpemUo
KTsgaS0tOykgewotICAgICAgICBhdXRvJiBwYXJlbnQgPSBtX3BhcmVudFN0YWNrW2ldOworICAg
IGZvciAoYXV0byYgcGFyZW50IDogbWFrZVJldmVyc2VkUmFuZ2UobV9wYXJlbnRTdGFjaykpIHsK
ICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5k
aXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKQotICAgICAgICAgICAgcmV0dXJuICZw
YXJlbnQuc3R5bGU7CisgICAgICAgICAgICByZXR1cm4gJnBhcmVudDsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NvbnN0IFJlbmRl
clN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlKCkgY29uc3QKK3sKKyAgICBhdXRv
KiBwYXJlbnQgPSBib3hHZW5lcmF0aW5nUGFyZW50KCk7CisgICAgcmV0dXJuIHBhcmVudCA/ICZw
YXJlbnQtPnN0eWxlIDogbnVsbHB0cjsKK30KKwogY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNv
bHZlcjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUm
IGVsZW1lbnRVcGRhdGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChlbGVtZW50VXBkYXRlLnN0eWxl
LT5kaXNwbGF5KCkpIHsKQEAgLTU1Niw2ICs2NTgsOSBAQCB2b2lkIFRyZWVSZXNvbHZlcjo6cmVz
b2x2ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgICAgICAgICAgbV91cGRhdGUtPmFkZFRleHQodGV4
dCwgcGFyZW50LmVsZW1lbnQsIFdURk1vdmUodGV4dFVwZGF0ZSkpOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICBpZiAoIXRleHQuZGF0YSgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNI
VE1MU3BhY2U+KCkpCisgICAgICAgICAgICAgICAgcGFyZW50LnJlc29sdmVkRmlyc3RCb3hHZW5l
cmF0aW5nQ2hpbGQgPSB0cnVlOworCiAgICAgICAgICAgICB0ZXh0LnNldEhhc1ZhbGlkU3R5bGUo
KTsKICAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtNjEwLDYgKzcxNSw5IEBAIHZvaWQgVHJlZVJlc29sdmVyOjpy
ZXNvbHZlQ29tcG9zZWRUcmVlKCkKICAgICAgICAgaWYgKCFtX2RpZFNlZVBlbmRpbmdTdHlsZXNo
ZWV0KQogICAgICAgICAgICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IGhhc0xvYWRpbmdT
dHlsZXNoZWV0KG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLCBlbGVtZW50LCAhc2hvdWxkSXRlcmF0
ZUNoaWxkcmVuKTsKIAorICAgICAgICBpZiAoc3R5bGUgJiYgZ2VuZXJhdGVzQm94KCpzdHlsZSkp
CisgICAgICAgICAgICBwYXJlbnQucmVzb2x2ZWRGaXJzdEJveEdlbmVyYXRpbmdDaGlsZCA9IHRy
dWU7CisKICAgICAgICAgaWYgKCFzaG91bGRJdGVyYXRlQ2hpbGRyZW4pIHsKICAgICAgICAgICAg
IGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggZTgwYWIyNzMw
NWMyYWRmMTNhYmRlZmY0OTVlMTQ5MjQ3MGM2MDU0MC4uYjc3NmVjMjhlNzM5NzY2OTBiNDExZmFm
NTA0ZTI4YjdhM2VhYTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5oCkBAIC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPEVsZW1lbnRVcGRh
dGUsIERlc2NlbmRhbnRzVG9SZXNvbHZlPiByZXNvbHZlRWxlbWVudChFbGVtZW50Jik7CiAKICAg
ICBzdGF0aWMgRWxlbWVudFVwZGF0ZSBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgU3R5bGVhYmxlJiwgQ2hhbmdlLCBjb25zdCBS
ZXNvbHV0aW9uQ29udGV4dCYpOwotICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gcmVz
b2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmLCBjb25zdCBFbGVtZW50VXBkYXRlJiwgUHNldWRvSWQp
OworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gcmVzb2x2ZVBzZXVkb0VsZW1lbnQo
RWxlbWVudCYsIFBzZXVkb0lkLCBjb25zdCBFbGVtZW50VXBkYXRlJik7CisgICAgc3RkOjpvcHRp
b25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlRmlyc3RMaW5lUHNldWRvRWxlbWVudChFbGVtZW50
JiwgY29uc3QgRWxlbWVudFVwZGF0ZSYpOwogCiAgICAgc3RydWN0IFNjb3BlIDogUmVmQ291bnRl
ZDxTY29wZT4gewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURURfV0lUSF9I
RUFQX0lERU5USUZJRVIoVHJlZVJlc29sdmVyU2NvcGUpOwpAQCAtOTAsNiArOTEsNyBAQCBwcml2
YXRlOgogICAgICAgICBDaGFuZ2UgY2hhbmdlIHsgQ2hhbmdlOjpOb25lIH07CiAgICAgICAgIERl
c2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jl
c29sdmU6Ok5vbmUgfTsKICAgICAgICAgYm9vbCBkaWRQdXNoU2NvcGUgeyBmYWxzZSB9OworICAg
ICAgICBib29sIHJlc29sdmVkRmlyc3RCb3hHZW5lcmF0aW5nQ2hpbGQgeyBmYWxzZSB9OwogCiAg
ICAgICAgIFBhcmVudChEb2N1bWVudCYpOwogICAgICAgICBQYXJlbnQoRWxlbWVudCYsIGNvbnN0
IFJlbmRlclN0eWxlJiwgQ2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZSk7CkBAIC0xMTIsNiAr
MTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc29sdXRpb25Db250ZXh0IG1ha2VSZXNvbHV0aW9u
Q29udGV4dCgpOwogICAgIFJlc29sdXRpb25Db250ZXh0IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZv
clBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYpOworICAgIGNvbnN0IFBhcmVudCog
Ym94R2VuZXJhdGluZ1BhcmVudCgpIGNvbnN0OwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRCb3hTdHlsZSgpIGNvbnN0OwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHls
ZUZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453840</attachid>
            <date>2022-03-04 07:22:29 -0800</date>
            <delta_ts>2022-03-05 01:04:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220304172228.patch</filename>
            <type>text/plain</type>
            <size>23027</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM0Zjg2NWEzNWQxMzUx
OTgyM2RmNGFkY2EyY2IxNDhjZWNjOTNhZi4uZGRlY2RjOWU4MzViNjIwM2Y3YjcyNzc3ZTQwNzBh
ZjU3NWUzM2FjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAzLTAyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJl
c29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpyZXNvbHZlRmlyc3RMaW5lUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpib3hHZW5lcmF0aW5nUGFyZW50IGNvbnN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0
eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVVwZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VXBkYXRlOjpwc2V1ZG9FbGVtZW50U3R5bGUgY29uc3QpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjItMDMtMDMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJHTCBjb250ZXh0IGNvdW50IGlzIG5vdCBsaW1p
dGVkIGZvciBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCmluZGV4IGZhYzE4YmFjZGMwMDQ3MjIxMWRlNTVlMTYxZTMzNTc1MWNiZDFiMjEuLmQ2
NTcwMWU3YWZmZjc1MGZmMzJkYWYzYzg4ODk4NmZmMDM5YTZlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTI2OSwxNyArMjY5LDI1IEBAIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6Y29tcHV0ZUZpcnN0TGluZVN0
eWxlKCkgY29uc3QKIAogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRlckVsZW1lbnQ6OmZpcnN0TGlu
ZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2VzRmlyc3RMaW5lUnVsZXMoKSkK
LSAgICAgICAgcmV0dXJuIHN0eWxlKCk7CisgICAgYXV0byByZW5kZXJlckZvckZpcnN0TGluZSA9
IFsmXSgpIC0+IGNvbnN0IFJlbmRlckVsZW1lbnQmIHsKKyAgICAgICAgaWYgKGlzQW5vbnltb3Vz
QmxvY2soKSAmJiAhcHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpCisgICAgICAgICAgICByZXR1cm4g
KnBhcmVudCgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfTsKIAotICAgIGlmICghbV9o
YXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7Ci0gICAgICAgIGF1dG8gZmlyc3RMaW5lU3R5
bGUgPSBjb21wdXRlRmlyc3RMaW5lU3R5bGUoKTsKLSAgICAgICAgaWYgKGZpcnN0TGluZVN0eWxl
IHx8IGhhc1JhcmVEYXRhKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlckVsZW1lbnQm
PigqdGhpcykuZW5zdXJlUmFyZURhdGEoKS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9IFdURk1vdmUo
Zmlyc3RMaW5lU3R5bGUpOwotICAgICAgICBtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RMaW5lU3R5bGUg
PSB0cnVlOwotICAgIH0KKyAgICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSByZW5kZXJlckZv
ckZpcnN0TGluZSgpLnN0eWxlKCkuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0
TGluZSkpCisgICAgICAgIHJldHVybiAqZmlyc3RMaW5lU3R5bGU7CisKKyAgICByZXR1cm4gc3R5
bGUoKTsKIAotICAgIHJldHVybiAoaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLmNhY2hlZEZp
cnN0TGluZVN0eWxlKSA/ICpyYXJlRGF0YSgpLmNhY2hlZEZpcnN0TGluZVN0eWxlIDogc3R5bGUo
KTsKKy8vICAgIGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7CisvLyAgICAg
ICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IGNvbXB1dGVGaXJzdExpbmVTdHlsZSgpOworLy8gICAg
ICAgIGlmIChmaXJzdExpbmVTdHlsZSB8fCBoYXNSYXJlRGF0YSgpKQorLy8gICAgICAgICAgICBj
b25zdF9jYXN0PFJlbmRlckVsZW1lbnQmPigqdGhpcykuZW5zdXJlUmFyZURhdGEoKS5jYWNoZWRG
aXJzdExpbmVTdHlsZSA9IFdURk1vdmUoZmlyc3RMaW5lU3R5bGUpOworLy8gICAgICAgIG1faGFz
VmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IHRydWU7CisvLyAgICB9CisvLworLy8gICAgcmV0
dXJuIChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUpID8g
KnJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUgOiBzdHlsZSgpOwogfQogCiBTdHlsZURp
ZmZlcmVuY2UgUmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2ZVByb3Bl
cnR5PiBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDUxNmE0YjFiNmI3NDA1MDcx
MjE4ZTRkZmY3NTAwOWVlOWQ2YTRkYmQuLjU0MDk1ODBlMDYyNzViMzYwNTczYzJjNzI1MjY3OWQy
YWUwNjA5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtNDA1LDkgKzQwNSw2IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6Z2V0
Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcGlkKSBjb25zdAogICAgIGlmICghbV9jYWNoZWRQ
c2V1ZG9TdHlsZXMgfHwgIW1fY2FjaGVkUHNldWRvU3R5bGVzLT5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgaWYgKHN0eWxlVHlwZSgpICE9IFBzZXVkb0lkOjpOb25lKSAK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBmb3IgKGF1dG8mIHBzZXVkb1N0eWxlIDog
Km1fY2FjaGVkUHNldWRvU3R5bGVzKSB7CiAgICAgICAgIGlmIChwc2V1ZG9TdHlsZS0+c3R5bGVU
eXBlKCkgPT0gcGlkKQogICAgICAgICAgICAgcmV0dXJuIHBzZXVkb1N0eWxlLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA2MmU3MDYz
NzUwODNiMTUxZGExMTNmNWQ5ZjVjN2NhYjhiYmIyN2U4Li5lNzRiZWU4NjVhYzg4OTg3ZGI2MTcy
ZWViMjRhOGEyMzE2N2ViNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaApAQCAtMjQ3Nyw0ICsyNDc3LDkgQEAgaW5saW5lIGJvb2wgcHNldWRvRWxl
bWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIHJldHVy
biBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIHN0eWxl
LT5jb250ZW50RGF0YSgpOwogfQogCitpbmxpbmUgYm9vbCBnZW5lcmF0ZXNCb3goY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxh
eVR5cGU6Ok5vbmUgJiYgc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpDb250ZW50czsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5l
cmF0ZWRDb250ZW50LmNwcAppbmRleCBlOGI5ZWU1MmYwNzhlMTE4MTAxNTI5MGFhMzQ0NTM4ZGUz
OWI3NjY2Li5jMjk1NmViN2UwY2Q0M2NhM2NkNGNjOWMwYzBlZDM3YmJjODcwMDk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJH
ZW5lcmF0ZWRDb250ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcApAQCAtMTQ3LDEwICsxNDcs
MTEgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNl
dWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LAogCiAgICAgICAgIFN0eWxlOjpFbGVtZW50VXBk
YXRlIGNvbnRlbnRzVXBkYXRlIHsgV1RGTW92ZShjb250ZW50c1N0eWxlKSwgc3R5bGVDaGFuZ2Us
IGVsZW1lbnRVcGRhdGUucmVjb21wb3NpdGVMYXllciB9OwogICAgICAgICBtX3VwZGF0ZXIudXBk
YXRlRWxlbWVudFJlbmRlcmVyKCpwc2V1ZG9FbGVtZW50LCBXVEZNb3ZlKGNvbnRlbnRzVXBkYXRl
KSk7Ci0gICAgICAgIHBzZXVkb0VsZW1lbnQtPnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUoUmVu
ZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGVTdHlsZSkpOworICAgICAgICBhdXRvIHBzZXVkb0Vs
ZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZUluY2x1ZGluZ1BzZXVkb0VsZW1l
bnRzKCp1cGRhdGVTdHlsZSk7CisgICAgICAgIHBzZXVkb0VsZW1lbnQtPnN0b3JlRGlzcGxheUNv
bnRlbnRzU3R5bGUobWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShwc2V1ZG9FbGVtZW50
VXBkYXRlU3R5bGUpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50
VXBkYXRlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZVN0eWxlKTsKLSAgICAg
ICAgU3R5bGU6OkVsZW1lbnRVcGRhdGUgcHNldWRvRWxlbWVudFVwZGF0ZSB7IFdURk1vdmUocHNl
dWRvRWxlbWVudFVwZGF0ZVN0eWxlKSwgc3R5bGVDaGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21w
b3NpdGVMYXllciB9OworICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZUluY2x1ZGluZ1BzZXVkb0VsZW1lbnRzKCp1cGRhdGVTdHlsZSk7Cisg
ICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUgeyBtYWtlVW5p
cXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSkpLCBzdHls
ZUNoYW5nZSwgZWxlbWVudFVwZGF0ZS5yZWNvbXBvc2l0ZUxheWVyIH07CiAgICAgICAgIG1fdXBk
YXRlci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1vdmUocHNldWRv
RWxlbWVudFVwZGF0ZSkpOwogICAgICAgICBBU1NFUlQoIXBzZXVkb0VsZW1lbnQtPmhhc0Rpc3Bs
YXlDb250ZW50cygpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNv
bHZlci5jcHAKaW5kZXggYTQ1ZjllNjI0NzNmMzIzMWFiYzVmNjU0N2I2ZWVhNzI3ZjExYTlmMy4u
NjJmM2EwNTc2MjFjYWEzY2VlN2FmYmQ5MjFjZmRmNGRmMjVmYWFkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIkhUTUxQcm9ncmVzc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQu
aCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgpAQCAtMjUwLDIxICsyNTEsMjkgQEAgYXV0
byBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpIC0+IHN0ZDo6
cGFpcjxFbGVtZW50VXBkYXRlLAogICAgIH0KIAogICAgIGF1dG8gcmVzb2x2ZUFuZEFkZFBzZXVk
b0VsZW1lbnRTdHlsZSA9IFsmXShQc2V1ZG9JZCBwc2V1ZG9JZCkgewotICAgICAgICBhdXRvIHBz
ZXVkb0VsZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBw
c2V1ZG9JZCk7CisgICAgICAgIGF1dG8gcHNldWRvRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1
ZG9FbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkLCB1cGRhdGUpOwogICAgICAgICBpZiAoIXBzZXVk
b0VsZW1lbnRVcGRhdGUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4g
Q2hhbmdlOjpOb25lOwogICAgICAgICBpZiAocHNldWRvRWxlbWVudFVwZGF0ZS0+Y2hhbmdlICE9
IENoYW5nZTo6Tm9uZSkKICAgICAgICAgICAgIHVwZGF0ZS5jaGFuZ2UgPSBzdGQ6Om1heCh1cGRh
dGUuY2hhbmdlLCBDaGFuZ2U6Ok5vbkluaGVyaXRlZCk7CiAgICAgICAgIGlmIChwc2V1ZG9FbGVt
ZW50VXBkYXRlLT5yZWNvbXBvc2l0ZUxheWVyKQogICAgICAgICAgICAgdXBkYXRlLnJlY29tcG9z
aXRlTGF5ZXIgPSB0cnVlOwogICAgICAgICB1cGRhdGUuc3R5bGUtPmFkZENhY2hlZFBzZXVkb1N0
eWxlKFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZS0+c3R5bGUpKTsKKyAgICAgICAgcmV0dXJu
IHBzZXVkb0VsZW1lbnRVcGRhdGUtPmNoYW5nZTsKICAgICB9OworICAgIAorLy8gICAgbV9wYXJl
bnRTdGFjay5hcHBlbmQoeyBlbGVtZW50LCAqdXBkYXRlLnN0eWxlLCB1cGRhdGUuY2hhbmdlLCBk
ZXNjZW5kYW50c1RvUmVzb2x2ZSB9KTsKKworICAgIGlmIChyZXNvbHZlQW5kQWRkUHNldWRvRWxl
bWVudFN0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpICE9IENoYW5nZTo6Tm9uZSkKKyAgICAgICAg
ZGVzY2VuZGFudHNUb1Jlc29sdmUgPSBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6QWxsOwogCiAgICAg
cmVzb2x2ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6TWFya2VyKTsKICAgICBy
ZXNvbHZlQW5kQWRkUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkOjpCZWZvcmUpOwogICAgIHJl
c29sdmVBbmRBZGRQc2V1ZG9FbGVtZW50U3R5bGUoUHNldWRvSWQ6OkFmdGVyKTsKICAgICByZXNv
bHZlQW5kQWRkUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkOjpCYWNrZHJvcCk7CiAKKy8vICAg
IG1fcGFyZW50U3RhY2sucmVtb3ZlTGFzdCgpOworCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElPTl9S
RUdJT05TKQogICAgIC8vIEZJWE1FOiBUcmFjayB0aGlzIGV4YWN0bHkuCiAgICAgaWYgKHVwZGF0
ZS5zdHlsZS0+dG91Y2hBY3Rpb25zKCkgIT0gVG91Y2hBY3Rpb246OkF1dG8gJiYgIW1fZG9jdW1l
bnQucXVpcmtzKCkuc2hvdWxkRGlzYWJsZVBvaW50ZXJFdmVudHNRdWlyaygpKQpAQCAtMjc4LDcg
KzI4Nyw3IEBAIGF1dG8gVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50KSAtPiBzdGQ6OnBhaXI8RWxlbWVudFVwZGF0ZSwKICAgICByZXR1cm4geyBXVEZNb3ZlKHVw
ZGF0ZSksIGRlc2NlbmRhbnRzVG9SZXNvbHZlIH07CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RWxlbWVu
dFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQp
CitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVk
b0VsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQsIGNvbnN0IEVsZW1l
bnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUpCiB7CiAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lk
OjpCYWNrZHJvcCAmJiAhZWxlbWVudC5pc0luVG9wTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTI4Niw2ICsyOTUsMTAgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiBUcmVl
UmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LAogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIGlmIChlbGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAocHNldWRvSWQg
PT0gUHNldWRvSWQ6OkZpcnN0TGluZSkKKyAgICAgICAgcmV0dXJuIHJlc29sdmVGaXJzdExpbmVQ
c2V1ZG9FbGVtZW50KGVsZW1lbnQsIGVsZW1lbnRVcGRhdGUpOworICAgIAogICAgIGlmICghZWxl
bWVudFVwZGF0ZS5zdHlsZS0+aGFzUHNldWRvU3R5bGUocHNldWRvSWQpKQogICAgICAgICByZXR1
cm4geyB9OwogCkBAIC0yOTQsMTQgKzMwNywxMDAgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50VXBk
YXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LAog
ICAgIGF1dG8gcHNldWRvU3R5bGUgPSBzY29wZSgpLnJlc29sdmVyLT5wc2V1ZG9TdHlsZUZvckVs
ZW1lbnQoZWxlbWVudCwgeyBwc2V1ZG9JZCB9LCByZXNvbHV0aW9uQ29udGV4dCk7CiAgICAgaWYg
KCFwc2V1ZG9TdHlsZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLQogICAgIGJvb2wgaGFzQW5pbWF0
aW9ucyA9IHBzZXVkb1N0eWxlLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIHx8IGVsZW1l
bnQuaGFzS2V5ZnJhbWVFZmZlY3RzKHBzZXVkb0lkKTsKICAgICBpZiAoIXBzZXVkb0VsZW1lbnRS
ZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9ucykKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAorICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3Jl
IHx8IHBzZXVkb0lkID09IFBzZXVkb0lkOjpBZnRlcikgeworICAgICAgICBhdXRvIGZpcnN0TGlu
ZUNvbnRleHQgPSBtYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0ZWRGaXJzdExpbmUoZWxl
bWVudFVwZGF0ZSwgKmVsZW1lbnRVcGRhdGUuc3R5bGUpOworICAgICAgICBpZiAoZmlyc3RMaW5l
Q29udGV4dCkgeworICAgICAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IHNjb3BlKCkucmVz
b2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sICpmaXJz
dExpbmVDb250ZXh0KTsKKyAgICAgICAgICAgIGZpcnN0TGluZVN0eWxlLT5zZXRTdHlsZVR5cGUo
UHNldWRvSWQ6OkZpcnN0TGluZSk7CisgICAgICAgICAgICBwc2V1ZG9TdHlsZS0+YWRkQ2FjaGVk
UHNldWRvU3R5bGUoV1RGTW92ZShmaXJzdExpbmVTdHlsZSkpOworICAgICAgICB9CisgICAgfQor
CiAgICAgcmV0dXJuIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKHBzZXVkb1N0
eWxlKSwgeyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBlbGVtZW50VXBkYXRlLmNoYW5nZSwgcmVzb2x1
dGlvbkNvbnRleHQpOwogfQogCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNv
bHZlcjo6cmVzb2x2ZUZpcnN0TGluZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKK3sKKyAgICBpZiAoIXNjb3BlKCkucmVz
b2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
YXV0byBpc0ZpcnN0TGluZUJsb2NrID0gW10oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7Cisg
ICAgICAgIGF1dG8gZGlzcGxheSA9IHN0eWxlLmRpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuIGRp
c3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrCisgICAgICAgICAgICB8fCBkaXNwbGF5ID09IERp
c3BsYXlUeXBlOjpJbmxpbmVCbG9jaworICAgICAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5
VHlwZTo6TGlzdEl0ZW0KKyAgICAgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OlRh
YmxlQ2VsbDsKKyAgICB9OworCisgICAgYXV0byBpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290
ID0gW10oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbmNv
bXBsZXRlLiBUaGVyZSBzaG91bGQgYmUgc2hhcmVkIGNvZGUgd2l0aCBsYXlvdXQgZm9yIHRoaXMu
CisgICAgICAgIGlmIChzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzdHlsZS5mbG9hdGluZygpICE9IEZsb2F0OjpOb25l
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBzdHlsZS5kaXNwbGF5
KCkgIT0gRGlzcGxheVR5cGU6OkJsb2NrOworICAgIH07CisKKyAgICBhdXRvIGZpcnN0TGluZUVs
ZW1lbnRGb3JCbG9jayA9IFsmXSgpIC0+IEVsZW1lbnQqIHsKKyAgICAgICAgaWYgKCFpc0ZpcnN0
TGluZUJsb2NrKCplbGVtZW50VXBkYXRlLnN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+aGFzUHNldWRvU3R5bGUoUHNl
dWRvSWQ6OkZpcnN0TGluZSkpCisgICAgICAgICAgICByZXR1cm4gJmVsZW1lbnQ7CisgICAgICAg
IGlmIChpc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRSb290KCplbGVtZW50VXBkYXRlLnN0eWxlKSkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIDo6Zmlyc3QtbGluZSBp
cyBvbmx5IHByb3BhZ2F0ZWQgdG8gdGhlIGZpcnN0IGJsb2NrLgorICAgICAgICBpZiAocGFyZW50
KCkucmVzb2x2ZWRGaXJzdEJveEdlbmVyYXRpbmdDaGlsZCkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIGZvciAoYXV0byYgcGFyZW50IDogbWFrZVJldmVyc2VkUmFuZ2Uo
bV9wYXJlbnRTdGFjaykpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgp
ID09IERpc3BsYXlUeXBlOjpDb250ZW50cykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGlmICghaXNGaXJzdExpbmVCbG9jayhwYXJlbnQuc3R5bGUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5oYXNQ
c2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cGFyZW50LmVsZW1lbnQ7CisgICAgICAgICAgICBpZiAoaXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Um9vdChwYXJlbnQuc3R5bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH07CisKKyAgICBpZiAoYXV0byBm
aXJzdExpbmVFbGVtZW50ID0gZmlyc3RMaW5lRWxlbWVudEZvckJsb2NrKCkpIHsKKyAgICAgICAg
YXV0byByZXNvbHV0aW9uQ29udGV4dCA9IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0Vs
ZW1lbnQoZWxlbWVudFVwZGF0ZSk7CisgICAgICAgIGlmIChmaXJzdExpbmVFbGVtZW50ICE9ICZl
bGVtZW50KQorICAgICAgICAgICAgcmVzb2x1dGlvbkNvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0
YXRlID0gbnVsbHB0cjsKKworICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRTdHlsZSA9IHNjb3Bl
KCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudCgqZmlyc3RMaW5lRWxlbWVudCwgeyBQ
c2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICAgICAgaWYgKCFw
c2V1ZG9FbGVtZW50U3R5bGUpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJl
dHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9FbGVtZW50U3R5
bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpGaXJzdExpbmUgfSwgZWxlbWVudFVwZGF0ZS5jaGFu
Z2UsIHJlc29sdXRpb25Db250ZXh0KTsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudFVwZGF0ZS5z
dHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpIHsKKyAgICAgICAgYXV0byog
cGFyZW50ID0gYm94R2VuZXJhdGluZ1BhcmVudCgpOworICAgICAgICBpZiAoIXBhcmVudCkKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgYXV0byByZXNvbHV0aW9uQ29udGV4dCA9
IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvckluaGVyaXRlZEZpcnN0TGluZShlbGVtZW50VXBkYXRl
LCBwYXJlbnQtPnN0eWxlKTsKKyAgICAgICAgaWYgKCFyZXNvbHV0aW9uQ29udGV4dCkKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgYXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgp
LnJlc29sdmVyLT5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgKnJlc29sdXRpb25Db250ZXh0KTsK
KyAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IFdURk1vdmUoZWxlbWVudFN0eWxlLnJlbmRl
clN0eWxlKTsKKyAgICAgICAgZmlyc3RMaW5lU3R5bGUtPnNldFN0eWxlVHlwZShQc2V1ZG9JZDo6
Rmlyc3RMaW5lKTsKKworICAgICAgICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRl
KFdURk1vdmUoZmlyc3RMaW5lU3R5bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpGaXJzdExpbmUg
fSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UsICpyZXNvbHV0aW9uQ29udGV4dCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHsgfTsKK30KKwogUmVzb2x1dGlvbkNvbnRleHQgVHJlZVJlc29sdmVyOjptYWtl
UmVzb2x1dGlvbkNvbnRleHQoKQogewogICAgIHJldHVybiB7CkBAIC0zMjIsMjAgKzQyMSw0MCBA
QCBSZXNvbHV0aW9uQ29udGV4dCBUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHV0aW9uQ29udGV4dEZv
clBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbQogICAgIH07CiB9CiAKLWNvbnN0IFJlbmRlclN0eWxl
KiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UmVz
b2x1dGlvbkNvbnRleHQ+IFRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdXRpb25Db250ZXh0Rm9ySW5o
ZXJpdGVkRmlyc3RMaW5lKGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBpbmhlcml0U3R5bGUpCit7CisgICAgYXV0byBwYXJlbnRGaXJzdExpbmVT
dHlsZSA9IGluaGVyaXRTdHlsZS5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lKTsKKyAgICBpZiAoIXBhcmVudEZpcnN0TGluZVN0eWxlKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgLy8gRmlyc3QgbGluZSBzdHlsZSBmb3IgaW5saW5lcyBpcyBtYWRlIGJ5IGluaGVy
aXRpbmcgZnJvbSBwYXJlbnQgZmlyc3QgbGluZSBzdHlsZS4KKyAgICByZXR1cm4gUmVzb2x1dGlv
bkNvbnRleHQgeworICAgICAgICBwYXJlbnRGaXJzdExpbmVTdHlsZSwKKyAgICAgICAgcGFyZW50
Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50KGVsZW1lbnRVcGRhdGUpLAorICAgICAgICBtX2RvY3Vt
ZW50RWxlbWVudFN0eWxlLmdldCgpLAorICAgICAgICAmc2NvcGUoKS5zZWxlY3Rvck1hdGNoaW5n
U3RhdGUKKyAgICB9OworfQorCithdXRvIFRyZWVSZXNvbHZlcjo6Ym94R2VuZXJhdGluZ1BhcmVu
dCgpIGNvbnN0IC0+IGNvbnN0IFBhcmVudCoKIHsKICAgICAvLyAnZGlzcGxheTogY29udGVudHMn
IGRvZXNuJ3QgZ2VuZXJhdGUgYm94ZXMuCi0gICAgZm9yIChhdXRvIGkgPSBtX3BhcmVudFN0YWNr
LnNpemUoKTsgaS0tOykgewotICAgICAgICBhdXRvJiBwYXJlbnQgPSBtX3BhcmVudFN0YWNrW2ld
OworICAgIGZvciAoYXV0byYgcGFyZW50IDogbWFrZVJldmVyc2VkUmFuZ2UobV9wYXJlbnRTdGFj
aykpIHsKICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKHBhcmVudC5z
dHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKQotICAgICAgICAgICAgcmV0
dXJuICZwYXJlbnQuc3R5bGU7CisgICAgICAgICAgICByZXR1cm4gJnBhcmVudDsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NvbnN0
IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlKCkgY29uc3QKK3sKKyAg
ICBhdXRvKiBwYXJlbnQgPSBib3hHZW5lcmF0aW5nUGFyZW50KCk7CisgICAgcmV0dXJuIHBhcmVu
dCA/ICZwYXJlbnQtPnN0eWxlIDogbnVsbHB0cjsKK30KKwogY29uc3QgUmVuZGVyU3R5bGUqIFRy
ZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRV
cGRhdGUmIGVsZW1lbnRVcGRhdGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChlbGVtZW50VXBkYXRl
LnN0eWxlLT5kaXNwbGF5KCkpIHsKQEAgLTU1Niw2ICs2NzUsOSBAQCB2b2lkIFRyZWVSZXNvbHZl
cjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgICAgICAgICAgbV91cGRhdGUtPmFkZFRl
eHQodGV4dCwgcGFyZW50LmVsZW1lbnQsIFdURk1vdmUodGV4dFVwZGF0ZSkpOwogICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICBpZiAoIXRleHQuZGF0YSgpLmlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNIVE1MU3BhY2U+KCkpCisgICAgICAgICAgICAgICAgcGFyZW50LnJlc29sdmVkRmlyc3RC
b3hHZW5lcmF0aW5nQ2hpbGQgPSB0cnVlOworCiAgICAgICAgICAgICB0ZXh0LnNldEhhc1ZhbGlk
U3R5bGUoKTsKICAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjEwLDYgKzczMiw5IEBAIHZvaWQgVHJlZVJlc29s
dmVyOjpyZXNvbHZlQ29tcG9zZWRUcmVlKCkKICAgICAgICAgaWYgKCFtX2RpZFNlZVBlbmRpbmdT
dHlsZXNoZWV0KQogICAgICAgICAgICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IGhhc0xv
YWRpbmdTdHlsZXNoZWV0KG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLCBlbGVtZW50LCAhc2hvdWxk
SXRlcmF0ZUNoaWxkcmVuKTsKIAorICAgICAgICBpZiAoc3R5bGUgJiYgZ2VuZXJhdGVzQm94KCpz
dHlsZSkpCisgICAgICAgICAgICBwYXJlbnQucmVzb2x2ZWRGaXJzdEJveEdlbmVyYXRpbmdDaGls
ZCA9IHRydWU7CisKICAgICAgICAgaWYgKCFzaG91bGRJdGVyYXRlQ2hpbGRyZW4pIHsKICAgICAg
ICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggZTgw
YWIyNzMwNWMyYWRmMTNhYmRlZmY0OTVlMTQ5MjQ3MGM2MDU0MC4uOTZiOGIwYjVmNzE5MTcyMjBk
Mjg4YWJkYzAxNTFhOWViYTJlZDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5oCkBAIC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPEVsZW1l
bnRVcGRhdGUsIERlc2NlbmRhbnRzVG9SZXNvbHZlPiByZXNvbHZlRWxlbWVudChFbGVtZW50Jik7
CiAKICAgICBzdGF0aWMgRWxlbWVudFVwZGF0ZSBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUo
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgU3R5bGVhYmxlJiwgQ2hhbmdlLCBj
b25zdCBSZXNvbHV0aW9uQ29udGV4dCYpOwotICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0
ZT4gcmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmLCBjb25zdCBFbGVtZW50VXBkYXRlJiwgUHNl
dWRvSWQpOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gcmVzb2x2ZVBzZXVkb0Vs
ZW1lbnQoRWxlbWVudCYsIFBzZXVkb0lkLCBjb25zdCBFbGVtZW50VXBkYXRlJik7CisgICAgc3Rk
OjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlRmlyc3RMaW5lUHNldWRvRWxlbWVudChF
bGVtZW50JiwgY29uc3QgRWxlbWVudFVwZGF0ZSYpOwogCiAgICAgc3RydWN0IFNjb3BlIDogUmVm
Q291bnRlZDxTY29wZT4gewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURURf
V0lUSF9IRUFQX0lERU5USUZJRVIoVHJlZVJlc29sdmVyU2NvcGUpOwpAQCAtOTAsNiArOTEsNyBA
QCBwcml2YXRlOgogICAgICAgICBDaGFuZ2UgY2hhbmdlIHsgQ2hhbmdlOjpOb25lIH07CiAgICAg
ICAgIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFu
dHNUb1Jlc29sdmU6Ok5vbmUgfTsKICAgICAgICAgYm9vbCBkaWRQdXNoU2NvcGUgeyBmYWxzZSB9
OworICAgICAgICBib29sIHJlc29sdmVkRmlyc3RCb3hHZW5lcmF0aW5nQ2hpbGQgeyBmYWxzZSB9
OwogCiAgICAgICAgIFBhcmVudChEb2N1bWVudCYpOwogICAgICAgICBQYXJlbnQoRWxlbWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgQ2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZSk7CkBAIC0x
MTIsNiArMTE0LDggQEAgcHJpdmF0ZToKIAogICAgIFJlc29sdXRpb25Db250ZXh0IG1ha2VSZXNv
bHV0aW9uQ29udGV4dCgpOwogICAgIFJlc29sdXRpb25Db250ZXh0IG1ha2VSZXNvbHV0aW9uQ29u
dGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYpOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVzb2x1dGlvbkNvbnRleHQ+IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvckluaGVyaXRl
ZEZpcnN0TGluZShjb25zdCBFbGVtZW50VXBkYXRlJiwgY29uc3QgUmVuZGVyU3R5bGUmIGluaGVy
aXRTdHlsZSk7CisgICAgY29uc3QgUGFyZW50KiBib3hHZW5lcmF0aW5nUGFyZW50KCkgY29uc3Q7
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKCkgY29uc3Q7CiAgICAgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVt
ZW50VXBkYXRlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE1NWQyZmJjOGQxMzMw
NjMzN2M3NGQ0ZmY2Yzg1MDRhYzc0MjViZTAuLjdhNjA0NmM5MDNkYmNiNDNmZGRkNWMxYTlkYWE4
ZWM2NTRjNWY2ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDQwOSwxMSArNDQwOSw3IEBAIHdl
YmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXBzZXVkby9maXJzdC1sZXR0ZXItCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLWV4Y2x1ZGUtaW5s
aW5lLWNoaWxkLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmly
c3QtbGV0dGVyLWV4Y2x1ZGUtaW5saW5lLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLWxpc3QtaXRlbS1keW5hbWljLTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS1jaGFuZ2UtaW5saW5lLWNvbG9y
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLWNoYW5nZS1p
bmxpbmUtY29sb3ItbmVzdGVkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9m
aXJzdC1saW5lLW9wYWNpdHktMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVk
by9maXJzdC1saW5lLXdpdGgtYmVmb3JlLWFmdGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXBzZXVkby9maXJzdC1saW5lLXdpdGgtb3V0LW9mLWZsb3cuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHNldWRvL2dyYW1tYXItZXJyb3ItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8yMDQxNjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXBzZXVkby9tYXJrZXItY29udGVudC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIwNDE2MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtcHNldWRvL21hcmtlci1jb250ZW50LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCkBAIC00NDQwLDcgKzQ0MzYsNiBAQCB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vbWFya2VyLWxpc3Qtcwogd2Via2l0
Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNl
dWRvL21hcmtlci11bmljb2RlLWJpZGktZGVmYXVsdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wc2V1ZG8vbWFya2VyLXVuaWNvZGUtYmlkaS1ub3JtYWwuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHNldWRvL3NwZWxsaW5nLWVycm9yLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjMwOTY0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS1hbmQtcGxhY2Vob2xkZXIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjE0NDYyIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zY29waW5nL2hvc3QtY29udGV4dC1zcGVjaWZpY2l0eS0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2NvcGluZy9ob3N0LWNvbnRleHQtc3BlY2lm
aWNpdHktMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTQ5MDcsMTAgKzQ5MDIsNyBA
QCB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLQogd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxldHRlci1wdW5jdHVh
dGlvbi1keW5hbWljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAw
MDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1s
ZXR0ZXItc2tpcC1lbXB0eS1zcGFuLW5lc3RlZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wc2V1ZG8vZmlyc3QtbGV0dGVyLXNraXAtZW1wdHktc3Bhbi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS13aXRoLWlubGluZS1ibG9jay1iZWZvcmUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxpbmUtd2l0aC1pbmxpbmUt
YmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxpbmUtd2l0
aC1vdXQtb2YtZmxvdy1hbmQtbmVzdGVkLWRpdi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wc2V1ZG8vZmlyc3QtbGluZS13aXRoLW91dC1vZi1mbG93LWFuZC1uZXN0ZWQtc3Bhbi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZ3JhbW1hci1zcGVsbGluZy1lcnJvcnMt
MDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9ncmFtbWFyLXNwZWxsaW5n
LWVycm9ycy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDAw
NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2hpZ2hsaWdo
dC1wYWludGluZy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUt
ZXhwZWN0ZWQudHh0CmluZGV4IDk0YWVjNTAwOGIwNDM3ZmNlNTBhYzQyYmYyMmJiMGY5ZDliNzZl
NzUuLjQxYjgwZjhhNTgyNGNjYWEzZTZkOWY5ZWQxN2UwNWMyMjYxZjBjZjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LWJhc2VsaW5lLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1i
YXNlbGluZS1leHBlY3RlZC50eHQKQEAgLTEyLDEwICsxMiwxMCBAQCBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICAgICAgdGV4dCBydW4gYXQgKDE1MCwzOCkgd2lkdGggNDMxOiAiVGhp
cyB0ZXh0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlIGJvdHRvbSBvZiB0aGUgdGV4dCBpbiB0aGUg
dGV4dCBmaWVsZC4iCiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg1ODAsMzgpIHNpemUgMXgxOAog
ICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCw1OSkgc2l6ZSAweDE4Ci0gICAgICBSZW5kZXJUZXh0
Q29udHJvbCB7SU5QVVR9IGF0ICgyLDc5KSBzaXplIDE0N3gxMzIgW2JnY29sb3I9I0ZGRkZGRl0g
W2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMTUwLDE3MSkgc2l6ZSA0MzF4MTgKLSAgICAgICAgdGV4dCBydW4gYXQgKDE1MCwxNzEpIHdp
ZHRoIDQzMTogIlRoaXMgdGV4dCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZSBib3R0b20gb2YgdGhl
IHRleHQgaW4gdGhlIHRleHQgZmllbGQuIgorICAgICAgUmVuZGVyVGV4dENvbnRyb2wge0lOUFVU
fSBhdCAoMiw3OSkgc2l6ZSAxNDd4MTkgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBp
bnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTUwLDc5KSBzaXpl
IDQzMXgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMTUwLDc5KSB3aWR0aCA0MzE6ICJUaGlzIHRl
eHQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUgYm90dG9tIG9mIHRoZSB0ZXh0IGluIHRoZSB0ZXh0
IGZpZWxkLiIKIGxheWVyIGF0ICgxMyw0OSkgc2l6ZSAxNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDMsMykgc2l6ZSAxNDF4MTMKLWxheWVyIGF0ICgxMyw5MCkgc2l6ZSAxNDF4MTI2Ci0g
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTQxeDEyNgorbGF5ZXIgYXQgKDEzLDkw
KSBzaXplIDE0MXgxMworICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDE0MXgxMwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453904</attachid>
            <date>2022-03-05 01:04:25 -0800</date>
            <delta_ts>2022-03-05 02:18:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220305110423.patch</filename>
            <type>text/plain</type>
            <size>40340</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM0Zjg2NWEzNWQxMzUx
OTgyM2RmNGFkY2EyY2IxNDhjZWNjOTNhZi4uNWYxOTI0YTA4NTdjYjE5NzU0ZTY1MmU1MWI0OWI1
ZjNmYTFkMGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAzLTA1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDb21wdXRlIDo6Zmlyc3QtbGluZSBzdHlsZSBkdXJpbmcgc3R5bGUgcmVzb2x1
dGlvbiBpbnN0ZWFkIG9mIGxhemlseSBpbiByZW5kZXIgdHJlZS4KKyAgICAgICAgVGhpcyBmaXhl
cyBidWdzIGFuZCBjbGFyaWZpZXMgdGhlIGFyY2hpdGVjdHVyZSBpbiB3YXlzIHRoYXQgYSBoZWxw
ZnVsIGZvciBmZWF0dXJlcyBsaWtlCisgICAgICAgIGNvbnRhaW5lciBxdWVyaWVzLgorCisgICAg
ICAgIEFzIGEgc2lkZSBlZmZlY3QgaXQgYWxzbyBtYWtlcyA6OmZpcnN0LWxpbmUgc3R5bGUgYW5p
bWF0YWJsZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmxvY2sgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OlJlbmRl
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Zmlyc3RMaW5lU3R5
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVT
dHlsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpp
bnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0TGluZUJsb2NrIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UnVieVJ1bjo6Zmlyc3RMaW5lQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpmaXJzdExpbmVCbG9jayBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
ZmluZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldENh
Y2hlZFBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlc0JveCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1RleHQ6OmZpcnN0TGluZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToK
KyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlSW5oZXJpdGVkRmlyc3RMaW5lUHNl
dWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjptYWtl
UmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0ZWRGaXJzdExpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Ym94R2VuZXJhdGluZ1BhcmVudCBjb25zdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlQ29t
cG9zZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKwogMjAyMi0wMy0wMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYkdMIGNvbnRleHQgY291bnQgaXMgbm90IGxpbWl0ZWQgZm9yIEdQVSBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA1MmE1
YTU0YjJmNjczMTNmY2ExYzc1YzlkNDFiODcxMTMyOTYxZjViLi41ZTZkZjBiZDYwMGQzMGQ1ZGU5
NWMxM2ZkMDkxM2Q0YmQ1MTVlZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTI1NzEsMjcgKzI1NzEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW5k
ZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KQog
ICAgIHJldHVybiByZW5kZXJFbGVtZW50LmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgcmVuZGVyRWxl
bWVudC5pc1JlbmRlckJ1dHRvbigpOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmZp
cnN0TGluZUJsb2NrKCkgY29uc3QKLXsKLSAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2sg
PSBjb25zdF9jYXN0PFJlbmRlckJsb2NrKj4odGhpcyk7Ci0gICAgYm9vbCBoYXNQc2V1ZG8gPSBm
YWxzZTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBoYXNQc2V1ZG8gPSBmaXJzdExpbmVC
bG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKLSAgICAg
ICAgaWYgKGhhc1BzZXVkbykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5kZXJFbGVt
ZW50KiBwYXJlbnRCbG9jayA9IGZpcnN0TGluZUJsb2NrLT5wYXJlbnQoKTsKLSAgICAgICAgaWYg
KGZpcnN0TGluZUJsb2NrLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IGZpcnN0TGluZUJs
b2NrLT5pc0Zsb2F0aW5nKCkKLSAgICAgICAgICAgIHx8ICFwYXJlbnRCbG9jayB8fCBwYXJlbnRC
bG9jay0+Zmlyc3RDaGlsZCgpICE9IGZpcnN0TGluZUJsb2NrIHx8ICFpc1JlbmRlckJsb2NrRmxv
d09yUmVuZGVyQnV0dG9uKCpwYXJlbnRCbG9jaykpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZmlyc3RMaW5lQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4ocGFyZW50QmxvY2spOwot
ICAgIH0gCi0gICAgCi0gICAgaWYgKCFoYXNQc2V1ZG8pCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIHJldHVybiBmaXJzdExpbmVCbG9jazsKLX0KLQogc3RhdGljIGlubGluZSBS
ZW5kZXJCbG9jayogZmluZEZpcnN0TGV0dGVyQmxvY2soUmVuZGVyQmxvY2sqIHN0YXJ0KQogewog
ICAgIFJlbmRlckJsb2NrKiBmaXJzdExldHRlckJsb2NrID0gc3RhcnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDExZjdmZWM3MTY5Y2JiNGY4ZDZlMzc1YjJiNDM2
NTllODgzNjRiNWUuLjIyMGZkNzQxMzA3OTExNDAzODVkMGQyZDUwNmE2MzQ0MGVjZGNjMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zODMsOSArMzgzLDYgQEAg
cHVibGljOgogICAgIAogICAgIC8vIEFkanVzdCBmcm9tIHBhaW50aW5nIG9mZnNldHMgdG8gdGhl
IGxvY2FsIGNvb3JkcyBvZiB0aGlzIHJlbmRlcmVyCiAgICAgdm9pZCBvZmZzZXRGb3JDb250ZW50
cyhMYXlvdXRQb2ludCYpIGNvbnN0OwotICAgIC8vIE9idGFpbnMgdGhlIG5lYXJlc3QgZW5jbG9z
aW5nIGJsb2NrIChpbmNsdWRpbmcgdGhpcyBibG9jaykgdGhhdCBjb250cmlidXRlcyBhIGZpcnN0
LWxpbmUgc3R5bGUgdG8gb3VyIGlubGluZQotICAgIC8vIGNoaWxkcmVuLgotICAgIFJlbmRlckJs
b2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZW51bSBGaWVsZHNl
dEZpbmRMZWdlbmRPcHRpb24geyBGaWVsZHNldElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3csIEZp
ZWxkc2V0SW5jbHVkZUZsb2F0aW5nT3JPdXRPZkZsb3cgfTsKICAgICBSZW5kZXJCb3gqIGZpbmRG
aWVsZHNldExlZ2VuZChGaWVsZHNldEZpbmRMZWdlbmRPcHRpb24gPSBGaWVsZHNldElnbm9yZUZs
b2F0aW5nT3JPdXRPZkZsb3cpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IGZhYzE4YmFjZGMwMDQ3MjIxMWRlNTVlMTYxZTMzNTc1MWNiZDFi
MjEuLjA4NjY3OWMzMzI5NDk2MmM2ZGY1YWNkZGFkMzBjYjUyNDFkZjU5MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNiBAQCBp
bmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50
T3JEb2N1bWVudCwgUmVuZGVyU3R5bAogICAgICwgbV9oYXNDb250aW51YXRpb25DaGFpbk5vZGUo
ZmFsc2UpCiAgICAgLCBtX2lzQ29udGludWF0aW9uKGZhbHNlKQogICAgICwgbV9pc0ZpcnN0TGV0
dGVyKGZhbHNlKQotICAgICwgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKGZhbHNlKQog
ICAgICwgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkJlZm9yZVF1aXJrKGZhbHNlKQogICAgICwgbV9y
ZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsoZmFsc2UpCiAgICAgLCBtX3JlbmRlckJsb2Nr
U2hvdWxkRm9yY2VSZWxheW91dENoaWxkcmVuKGZhbHNlKQpAQCAtMjI0LDYyICsyMjMsMTcgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcihFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50Ojpjb21wdXRlRmlyc3RMaW5lU3R5
bGUoKSBjb25zdAotewotICAgIEFTU0VSVCh2aWV3KCkudXNlc0ZpcnN0TGluZVJ1bGVzKCkpOwot
Ci0gICAgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZSA9IGlzQmVmb3Jl
T3JBZnRlckNvbnRlbnQoKSA/ICpwYXJlbnQoKSA6IGNvbnN0X2Nhc3Q8UmVuZGVyRWxlbWVudCY+
KCp0aGlzKTsKLQotICAgIGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzUmVuZGVyQmxv
Y2tGbG93KCkgfHwgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc1JlbmRlckJ1dHRvbigpKSB7
Ci0gICAgICAgIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jayA9IHJlbmRlcmVyRm9yRmlyc3RM
aW5lU3R5bGUuZmlyc3RMaW5lQmxvY2soKTsKLSAgICAgICAgaWYgKCFmaXJzdExpbmVCbG9jaykK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHls
ZSA9IGZpcnN0TGluZUJsb2NrLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lLCAmc3R5bGUoKSk7Ci0gICAgICAgIGlmICghZmlyc3RMaW5lU3R5bGUpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
Zmlyc3RMaW5lU3R5bGUpOwotICAgIH0KLQotICAgIGlmICghcmVuZGVyZXJGb3JGaXJzdExpbmVT
dHlsZS5pc1JlbmRlcklubGluZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1
dG8mIHBhcmVudFN0eWxlID0gcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5wYXJlbnQoKS0+Zmly
c3RMaW5lU3R5bGUoKTsKLSAgICBpZiAoJnBhcmVudFN0eWxlID09ICZyZW5kZXJlckZvckZpcnN0
TGluZVN0eWxlLnBhcmVudCgpLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzQW5vbnltb3VzKCkpIHsKLSAgICAg
ICAgYXV0byogdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlDb250ZW50c1BhcmVudCA9IFJlbmRlclRl
eHQ6OmZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRhdGUocmVuZGVyZXJG
b3JGaXJzdExpbmVTdHlsZSk7Ci0gICAgICAgIGlmICghdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlD
b250ZW50c1BhcmVudCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRv
KiBjb21wb3NlZFRyZWVQYXJlbnRFbGVtZW50ID0gdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlDb250
ZW50c1BhcmVudC0+dGV4dE5vZGUoKS0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCk7Ci0g
ICAgICAgIGlmICghY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJlbnRFbGVt
ZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQYXJlbnRF
bGVtZW50LCB7ICZwYXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKLSAgICAgICAgQVNTRVJUKHN0
eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKTsKLQotICAgICAgICAvLyBX
ZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxzcGFuPiBhcm91bmQgdGhlIHRleHQg
bm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVyaXRhbmNlLgotICAgICAgICBhdXRv
IGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwotICAgICAgICBmaXJz
dExpbmVTdHlsZS0+aW5oZXJpdEZyb20oKnN0eWxlKTsKLSAgICAgICAgcmV0dXJuIGZpcnN0TGlu
ZVN0eWxlOwotICAgIH0KLQotICAgIHJldHVybiByZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmVs
ZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZWxlbWVudCgpLCB7ICZw
YXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKLX0KLQogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRl
ckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2Vz
Rmlyc3RMaW5lUnVsZXMoKSkKKyAgICBpZiAoaXNBbm9ueW1vdXNCbG9jaygpICYmIHByZXZpb3Vz
SW5GbG93U2libGluZygpKQogICAgICAgICByZXR1cm4gc3R5bGUoKTsKIAotICAgIGlmICghbV9o
YXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7Ci0gICAgICAgIGF1dG8gZmlyc3RMaW5lU3R5
bGUgPSBjb21wdXRlRmlyc3RMaW5lU3R5bGUoKTsKLSAgICAgICAgaWYgKGZpcnN0TGluZVN0eWxl
IHx8IGhhc1JhcmVEYXRhKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlckVsZW1lbnQm
PigqdGhpcykuZW5zdXJlUmFyZURhdGEoKS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9IFdURk1vdmUo
Zmlyc3RMaW5lU3R5bGUpOwotICAgICAgICBtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RMaW5lU3R5bGUg
PSB0cnVlOwotICAgIH0KKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGp1c3Qg
c2V0IGFub255bW91cyBibG9jayBmaXJzdC1saW5lIHN0eWxlcyBjb3JyZWN0bHkuCisgICAgYXV0
byYgcmVuZGVyZXJGb3JGaXJzdExpbmUgPSBpc0Fub255bW91c0Jsb2NrKCkgPyAqcGFyZW50KCkg
OiAqdGhpczsKKyAgICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSByZW5kZXJlckZvckZpcnN0
TGluZS5zdHlsZSgpLmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpKQor
ICAgICAgICByZXR1cm4gKmZpcnN0TGluZVN0eWxlOwogCi0gICAgcmV0dXJuIChoYXNSYXJlRGF0
YSgpICYmIHJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUpID8gKnJhcmVEYXRhKCkuY2Fj
aGVkRmlyc3RMaW5lU3R5bGUgOiBzdHlsZSgpOworICAgIHJldHVybiBzdHlsZSgpOwogfQogCiBT
dHlsZURpZmZlcmVuY2UgUmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnR5PiBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKQEAgLTgwMywxNiAr
NzU3LDYgQEAgc3RhdGljIGlubGluZSBib29sIHJlbmRlcmVySGFzQmFja2dyb3VuZChjb25zdCBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXIt
Pmhhc0JhY2tncm91bmQoKTsKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50OjppbnZhbGlkYXRlQ2Fj
aGVkRmlyc3RMaW5lU3R5bGUoKQotewotICAgIGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0TGlu
ZVN0eWxlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0
eWxlID0gZmFsc2U7Ci0gICAgLy8gSW52YWxpZGF0ZSB0aGUgc3VidHJlZSBhcyBkZXNjZW5kYW50
J3MgZmlyc3QgbGluZSBzdHlsZSBtYXkgZGVwZW5kIG9uIGFuY2VzdG9yJ3MuCi0gICAgZm9yIChh
dXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyRWxlbWVudD4oKnRoaXMp
KQotICAgICAgICBkZXNjZW5kYW50Lm1faGFzVmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IGZh
bHNlOwotfQotCiB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAgIEFTU0VSVChz
ZXR0aW5ncygpLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkgfHwgbmV3U3R5bGUuZm9u
dERlc2NyaXB0aW9uKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSA9PSBBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250czo6Tm8pOwpAQCAtODgzLDkgKzgyNyw2IEBAIHZvaWQgUmVuZGVyRWxl
bWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3CiAgICAgICAgICAgICBjbGVhclBvc2l0aW9uZWRTdGF0ZSgpOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKG5ld1N0eWxlLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExp
bmUpIHx8IG9sZFN0eWxlLT5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKLSAg
ICAgICAgICAgIGludmFsaWRhdGVDYWNoZWRGaXJzdExpbmVTdHlsZSgpOwotCiAgICAgICAgIHNl
dEhvcml6b250YWxXcml0aW5nTW9kZSh0cnVlKTsKICAgICAgICAgc2V0SGFzVmlzaWJsZUJveERl
Y29yYXRpb25zKGZhbHNlKTsKICAgICAgICAgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KGZhbHNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDZlOTc1ZDNk
MDcyOGM2NTk4MjE2NDlmMGY1NzgwYmYwNjBhZWFiMzYuLjUxYzU1MmNiZDllN2ZkMmI3Y2JlOWQx
MmRjZmEzZjEzMWZmN2RmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaApAQCAtMzUxLDggKzM1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTaGFwZUlt
YWdlKGNvbnN0IFNoYXBlVmFsdWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CiAKICAgICBTdHlsZURp
ZmZlcmVuY2UgYWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSwgT3B0aW9uU2V0
PFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eT4pIGNvbnN0OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY29tcHV0ZUZpcnN0TGluZVN0eWxlKCkgY29uc3Q7
Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5bGUoKTsKIAogICAgIGJvb2wg
Y2FuRGVzdHJveURlY29kZWREYXRhKCkgZmluYWwgeyByZXR1cm4gIWlzVmlzaWJsZUluVmlld3Bv
cnQoKTsgfQogICAgIFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShD
YWNoZWRJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJl
Y3QpIGZpbmFsOwpAQCAtMzgxLDcgKzM3OSw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDb250aW51YXRpb25DaGFpbk5vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb250aW51YXRp
b24gOiAxOwogICAgIHVuc2lnbmVkIG1faXNGaXJzdExldHRlciA6IDE7Ci0gICAgbXV0YWJsZSB1
bnNpZ25lZCBtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RMaW5lU3R5bGUgOiAxOwogCiAgICAgdW5zaWdu
ZWQgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkJlZm9yZVF1aXJrIDogMTsKICAgICB1bnNpZ25lZCBt
X3JlbmRlckJsb2NrSGFzTWFyZ2luQWZ0ZXJRdWlyayA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDEwYjBkM2NlYTY3NmE4OWQwYjFkZjExZTczMjdl
MzRiNTNhNDQ2ZmMuLmRjYTczZTg5NWQzZGFhYTVkNzAxOWJhNDU0Mjg1MmNiOTNhN2YxMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00OTEsMTEgKzQ5
MSw2IEBAIFJlbmRlckJveCogUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFp
bmVyRm9yU25hcHBpbmcoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLmRvY3VtZW50RWxl
bWVudCgpID8gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyQm94KCkgOiBudWxs
cHRyOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyT2JqZWN0OjpmaXJzdExpbmVCbG9jaygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBvYmpl
Y3RJc1JlbGF5b3V0Qm91bmRhcnkoY29uc3QgUmVuZGVyRWxlbWVudCogb2JqZWN0KQogewogICAg
IC8vIEZJWE1FOiBJbiBmdXR1cmUgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIGJyb2FkZW4gdGhlc2Ug
Y29uZGl0aW9ucyBpbiBvcmRlciB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGYwZWVhYWVjOTg0ZDgzYjZhZDZkMTlhZWU5
NjU5ZTNiMzYzZjRmZTcuLjNjZGQxODAxZDI2MDE5ODhlNDJlZDdiMmVhZmY4ZGYzOGUxM2YxZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTE3Myw5ICsxNzMs
NiBAQCBwdWJsaWM6CiAKICAgICAvLyBDcmVhdGVzIGEgc2NvcGUgd2hlcmUgdGhpcyBvYmplY3Qg
d2lsbCBhc3NlcnQgb24gY2FsbHMgdG8gc2V0TmVlZHNMYXlvdXQoKS4KICAgICBjbGFzcyBTZXRM
YXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZTsKLQotICAgIC8vIE9idGFpbnMgdGhlIG5lYXJlc3Qg
ZW5jbG9zaW5nIGJsb2NrIChpbmNsdWRpbmcgdGhpcyBibG9jaykgdGhhdCBjb250cmlidXRlcyBh
IGZpcnN0LWxpbmUgc3R5bGUgdG8gb3VyIGlubGluZSBjaGlsZHJlbi4KLSAgICB2aXJ0dWFsIFJl
bmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0OwogICAgIAogICAgIC8vIFJlbmRlck9i
amVjdCB0cmVlIG1hbmlwdWxhdGlvbgogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwpAQCAtOTQ2LDcgKzk0Myw2IEBAIHByaXZhdGU6CiAgICAgICAgIEFERF9C
T09MRUFOX0JJVEZJRUxEKHBhaW50Q29udGFpbm1lbnRBcHBsaWVzLCBQYWludENvbnRhaW5tZW50
QXBwbGllcyk7CiAKICAgICAgICAgLy8gRnJvbSBSZW5kZXJFbGVtZW50Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2FjaGVkRmlyc3RMaW5lU3R5bGU7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzPiByZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzOwogICAgICAgICBXZWFrUHRyPFJlbmRlckJsb2NrRmxvdz4gYmFja2Ryb3BSZW5kZXJlcjsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCmluZGV4
IDZiZGE2OGQwMWQ0YzE4ZjdjYzE0YWU3ZTE4ZTAwMzEyMzYwYjk2MGQuLjQ2MTE5YzU5ZjYyODJl
OTlmMjU1MTU4NjNkNDIzNzFlYTViNzc2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVJ1bi5jcHAKQEAgLTg1LDExICs4NSw2IEBAIFJlbmRlclJ1YnlCYXNlKiBSZW5k
ZXJSdWJ5UnVuOjpydWJ5QmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNoaWxkICYmIGNoaWxkLT5p
c1J1YnlCYXNlKCkgPyBzdGF0aWNfY2FzdDxSZW5kZXJSdWJ5QmFzZSo+KGNoaWxkKSA6IG51bGxw
dHI7CiB9CiAKLVJlbmRlckJsb2NrKiBSZW5kZXJSdWJ5UnVuOjpmaXJzdExpbmVCbG9jaygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgUmVuZGVyUnVieVJ1bjo6aXND
aGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdAogewogICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgpIHx8IGNoaWxkLmlzUnVieVRl
eHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCmluZGV4IGMyODY0
OWM2OTU1YWI1ODY0MjY2ZWEyZWIwZjIyZDE3ZWFiNzU3ZmMuLjM1ODUxOTc4YzI2OGJhYjA4Zjcy
YzI0NGY4ZmRhNTNmNGQwMzRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlSdW4uaApAQCAtNTcsOCArNTcsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ2hpbGRBbGxv
d2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBvdmVycmlkZTsK
LQogICAgIHZvaWQgZ2V0T3ZlcmhhbmcoYm9vbCBmaXJzdExpbmUsIFJlbmRlck9iamVjdCogc3Rh
cnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciwgZmxvYXQmIHN0YXJ0T3Zlcmhh
bmcsIGZsb2F0JiBlbmRPdmVyaGFuZykgY29uc3Q7CiAKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJl
bmRlclJ1YnlSdW4+IHN0YXRpY0NyZWF0ZVJ1YnlSdW4oY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJl
bnRSdWJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDdl
MzE4MTllYTRlNDgxNDYyN2NkOTY3OTE5MDE2NjJkZGIxM2U0YjUuLjU1MDdmZWViNjIyZWJjMzEz
MjJmYTlmZjZhNGEwNTdkODRlMzMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcApAQCAtMTQ4NiwxMSArMTQ4Niw2IEBAIFJlbmRlclRhYmxlQ2VsbCogUmVuZGVy
VGFibGU6OmNlbGxBZnRlcihjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0CiAgICAg
cmV0dXJuIGNlbGwtPnNlY3Rpb24oKS0+cHJpbWFyeUNlbGxBdChjZWxsLT5yb3dJbmRleCgpLCBl
ZmZDb2wpOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyVGFibGU6OmZpcnN0TGluZUJsb2NrKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogTGF5b3V0VW5pdCBSZW5kZXJUYWJs
ZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0
TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQ
b3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZhbHVlT3JDb21wdXRlKGZpcnN0TGlu
ZUJhc2VsaW5lKCksIFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmlu
ZGV4IDg3ZjBjN2FlZDAyYmQzNWY2NzY5NDI4OWY0NjI3ZTYwNzkwNGY1MzcuLmM1ZTJiNTkzZjI3
NmQ4YzAwZTZlODczMDcwZjEyMTA3ZWI5MGY2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5oCkBAIC0zMDcsOCArMzA3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFs
aWRhdGVDYWNoZWRDb2x1bW5zKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVDYWNoZWRDb2x1bW5P
ZmZzZXRzKCk7Ci0KLSAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBmaW5h
bDsKICAgICAKICAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggMzY1ZDJmOWEyOWMwZmFhN2E5ZjBh
YzAzODgyMWUwZjgxMDUzNDVlOS4uNDA4NzkyOTI1Y2Q5NTQ0NmRhMTlkNjUwY2E3MTE4NDY0Yzk2
N2Y5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTgyMSwx
OCArMTgyMSw0IEBAIHZvaWQgUmVuZGVyVGV4dDo6c2V0SW5saW5lV3JhcHBlckZvckRpc3BsYXlD
b250ZW50cyhSZW5kZXJJbmxpbmUqIHdyYXBwZXIpCiAgICAgbV9oYXNJbmxpbmVXcmFwcGVyRm9y
RGlzcGxheUNvbnRlbnRzID0gdHJ1ZTsKIH0KIAotUmVuZGVyVGV4dCogUmVuZGVyVGV4dDo6Zmlu
ZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlcikKLXsKLSAgICBhdXRvKiBmaXJzdENoaWxkID0gcmVuZGVyZXIuZmlyc3RDaGlsZCgp
OwotICAgIGlmICghaXM8UmVuZGVyVGV4dD4oZmlyc3RDaGlsZCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpm
aXJzdENoaWxkKTsKLSAgICBpZiAodGV4dFJlbmRlcmVyLmlubGluZVdyYXBwZXJGb3JEaXNwbGF5
Q29udGVudHMoKSAhPSAmcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEFT
U0VSVCh0ZXh0UmVuZGVyZXIudGV4dE5vZGUoKSk7Ci0gICAgQVNTRVJUKHJlbmRlcmVyLmZpcnN0
Q2hpbGQoKSA9PSByZW5kZXJlci5sYXN0Q2hpbGQoKSk7Ci0gICAgcmV0dXJuICZ0ZXh0UmVuZGVy
ZXI7Ci0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmgKaW5kZXggYWUyZTg0NmUyNTNlZmM3NDc5Zjc4NzQ3ZWE1OTk1Yzg4N2U1ZTNj
OS4uZjdhYzI2OTFhNDU3NmU2Y2Q4MmE1MjI4ZjZkOWJlOWI4ZmI3MWJkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0xODEsOCArMTgxLDYgQEAgcHVibGljOgogICAg
IFJlbmRlcklubGluZSogaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cygpOwogICAgIHZv
aWQgc2V0SW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyhSZW5kZXJJbmxpbmUqKTsKIAot
ICAgIHN0YXRpYyBSZW5kZXJUZXh0KiBmaW5kQnlEaXNwbGF5Q29udGVudHNJbmxpbmVXcmFwcGVy
Q2FuZGlkYXRlKFJlbmRlckVsZW1lbnQmKTsKLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNZWFz
dXJlVGV4dENhbGxiYWNrPgogICAgIHN0YXRpYyBmbG9hdCBtZWFzdXJlVGV4dENvbnNpZGVyaW5n
UG9zc2libGVUcmFpbGluZ1NwYWNlKGJvb2wgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIHVuc2ln
bmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW5ndGgsIFdvcmRUcmFpbGluZ1NwYWNlJiwg
SGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIE1lYXN1cmVUZXh0Q2FsbGJhY2sm
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IDUxNmE0YjFiNmI3NDA1MDcxMjE4ZTRkZmY3NTAwOWVlOWQ2YTRkYmQuLjU0MDk1ODBl
MDYyNzViMzYwNTczYzJjNzI1MjY3OWQyYWUwNjA5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNDA1LDkgKzQwNSw2IEBAIFJlbmRl
clN0eWxlKiBSZW5kZXJTdHlsZTo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcGlkKSBj
b25zdAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMgfHwgIW1fY2FjaGVkUHNldWRvU3R5
bGVzLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKHN0eWxlVHlw
ZSgpICE9IFBzZXVkb0lkOjpOb25lKSAKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBm
b3IgKGF1dG8mIHBzZXVkb1N0eWxlIDogKm1fY2FjaGVkUHNldWRvU3R5bGVzKSB7CiAgICAgICAg
IGlmIChwc2V1ZG9TdHlsZS0+c3R5bGVUeXBlKCkgPT0gcGlkKQogICAgICAgICAgICAgcmV0dXJu
IHBzZXVkb1N0eWxlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAppbmRleCA2MmU3MDYzNzUwODNiMTUxZGExMTNmNWQ5ZjVjN2NhYjhiYmIyN2U4
Li5lNzRiZWU4NjVhYzg4OTg3ZGI2MTcyZWViMjRhOGEyMzE2N2ViNjVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMjQ3Nyw0ICsyNDc3LDkg
QEAgaW5saW5lIGJvb2wgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKQogICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IERp
c3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLT5jb250ZW50RGF0YSgpOwogfQogCitpbmxpbmUgYm9v
bCBnZW5lcmF0ZXNCb3goY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBz
dHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgc3R5bGUuZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpDb250ZW50czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMWFl
MzEzMGVmZGJjODQzOTA1MWY2OTc3Y2RmZjA4Mjg4OTMzZDQxNS4uNTg4YWYxYTFmNzc3Mjk1MzEy
OTdlY2Q5MGJjNjBiNjUzMjdmMWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00ODgsMTEgKzQ4OCw0IEBAIEZsb2F0UmVjdCBSZW5k
ZXJTVkdUZXh0OjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0CiAgICAgcmV0
dXJuIHJlcGFpbnRSZWN0OwogfQogCi0vLyBGaXggZm9yIDxyZGFyOi8vcHJvYmxlbS84MDQ4ODc1
Pi4gV2Ugc2hvdWxkIG5vdCByZW5kZXIgOmZpcnN0LWxpbmUgQ1NTIFN0eWxlCi0vLyBpbiBhIFNW
RyB0ZXh0IGVsZW1lbnQgY29udGV4dC4KLVJlbmRlckJsb2NrKiBSZW5kZXJTVkdUZXh0OjpmaXJz
dExpbmVCbG9jaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggYmE3MTk0ODVlOTFiZDBj
OTJmMjAxZmExZDIxODViYWI3NzY2YWZiOS4uMzJjNmUxMjQ4MzY3YzU1NTM3MTcyNGQ0ZTczYzZh
YmIzMDhjM2QxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmgKQEAgLTgxLDggKzgxLDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xv
Y2FsVHJhbnNmb3JtOyB9CiAgICAgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogCi0gICAgUmVuZGVyQmxv
Y2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBib29sIHNob3VsZEhh
bmRsZVN1YnRyZWVNdXRhdGlvbnMoKSBjb25zdDsKIAogICAgIGJvb2wgbV9uZWVkc1Jlb3JkZXJp
bmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAppbmRl
eCBlOGI5ZWU1MmYwNzhlMTE4MTAxNTI5MGFhMzQ0NTM4ZGUzOWI3NjY2Li5jMjk1NmViN2UwY2Q0
M2NhM2NkNGNjOWMwYzBlZDM3YmJjODcwMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJH
ZW5lcmF0ZWRDb250ZW50LmNwcApAQCAtMTQ3LDEwICsxNDcsMTEgQEAgdm9pZCBSZW5kZXJUcmVl
VXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBj
dXJyZW50LAogCiAgICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIGNvbnRlbnRzVXBkYXRlIHsg
V1RGTW92ZShjb250ZW50c1N0eWxlKSwgc3R5bGVDaGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21w
b3NpdGVMYXllciB9OwogICAgICAgICBtX3VwZGF0ZXIudXBkYXRlRWxlbWVudFJlbmRlcmVyKCpw
c2V1ZG9FbGVtZW50LCBXVEZNb3ZlKGNvbnRlbnRzVXBkYXRlKSk7Ci0gICAgICAgIHBzZXVkb0Vs
ZW1lbnQtPnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1
cGRhdGVTdHlsZSkpOworICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZUluY2x1ZGluZ1BzZXVkb0VsZW1lbnRzKCp1cGRhdGVTdHlsZSk7Cisg
ICAgICAgIHBzZXVkb0VsZW1lbnQtPnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUobWFrZVVuaXF1
ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUpKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZVN0eWxlKTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRh
dGUgcHNldWRvRWxlbWVudFVwZGF0ZSB7IFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZVN0eWxl
KSwgc3R5bGVDaGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21wb3NpdGVMYXllciB9OworICAgICAg
ICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZUluY2x1
ZGluZ1BzZXVkb0VsZW1lbnRzKCp1cGRhdGVTdHlsZSk7CisgICAgICAgIFN0eWxlOjpFbGVtZW50
VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUgeyBtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihXVEZN
b3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSkpLCBzdHlsZUNoYW5nZSwgZWxlbWVudFVwZGF0
ZS5yZWNvbXBvc2l0ZUxheWVyIH07CiAgICAgICAgIG1fdXBkYXRlci51cGRhdGVFbGVtZW50UmVu
ZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZSkpOwogICAg
ICAgICBBU1NFUlQoIXBzZXVkb0VsZW1lbnQtPmhhc0Rpc3BsYXlDb250ZW50cygpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggYTQ1Zjll
NjI0NzNmMzIzMWFiYzVmNjU0N2I2ZWVhNzI3ZjExYTlmMy4uNTM3MmM0MTMwZTY3NzU2NDNjYmQy
YWMzMDIwYjM4OWM2OTlhNzg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2FkZXJT
dHJhdGVneS5oIgpAQCAtMjUwLDE1ICsyNTEsMTkgQEAgYXV0byBUcmVlUmVzb2x2ZXI6OnJlc29s
dmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpIC0+IHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRlLAog
ICAgIH0KIAogICAgIGF1dG8gcmVzb2x2ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZSA9IFsmXShQ
c2V1ZG9JZCBwc2V1ZG9JZCkgewotICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGUgPSBy
ZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBwc2V1ZG9JZCk7CisgICAgICAgIGF1
dG8gcHNldWRvRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHBz
ZXVkb0lkLCB1cGRhdGUpOwogICAgICAgICBpZiAoIXBzZXVkb0VsZW1lbnRVcGRhdGUpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gQ2hhbmdlOjpOb25lOwogICAgICAg
ICBpZiAocHNldWRvRWxlbWVudFVwZGF0ZS0+Y2hhbmdlICE9IENoYW5nZTo6Tm9uZSkKICAgICAg
ICAgICAgIHVwZGF0ZS5jaGFuZ2UgPSBzdGQ6Om1heCh1cGRhdGUuY2hhbmdlLCBDaGFuZ2U6Ok5v
bkluaGVyaXRlZCk7CiAgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50VXBkYXRlLT5yZWNvbXBvc2l0
ZUxheWVyKQogICAgICAgICAgICAgdXBkYXRlLnJlY29tcG9zaXRlTGF5ZXIgPSB0cnVlOwogICAg
ICAgICB1cGRhdGUuc3R5bGUtPmFkZENhY2hlZFBzZXVkb1N0eWxlKFdURk1vdmUocHNldWRvRWxl
bWVudFVwZGF0ZS0+c3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRVcGRhdGUt
PmNoYW5nZTsKICAgICB9OworICAgIAorICAgIGlmIChyZXNvbHZlQW5kQWRkUHNldWRvRWxlbWVu
dFN0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpICE9IENoYW5nZTo6Tm9uZSkKKyAgICAgICAgZGVz
Y2VuZGFudHNUb1Jlc29sdmUgPSBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6QWxsOwogCiAgICAgcmVz
b2x2ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6TWFya2VyKTsKICAgICByZXNv
bHZlQW5kQWRkUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkOjpCZWZvcmUpOwpAQCAtMjc4LDE2
ICsyODMsMjkgQEAgYXV0byBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpIC0+IHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRlLAogICAgIHJldHVybiB7IFdURk1vdmUo
dXBkYXRlKSwgZGVzY2VuZGFudHNUb1Jlc29sdmUgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxFbGVt
ZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9J
ZCkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNl
dWRvRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCwgY29uc3QgRWxl
bWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKIHsKICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRv
SWQ6OkJhY2tkcm9wICYmICFlbGVtZW50LmlzSW5Ub3BMYXllcigpKQogICAgICAgICByZXR1cm4g
eyB9OwogICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6TWFya2VyICYmIGVsZW1lbnRVcGRh
dGUuc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0pCiAgICAgICAgIHJl
dHVybiB7IH07CisgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpGaXJzdExpbmUgJiYgIXNj
b3BlKCkucmVzb2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQorICAgICAgICByZXR1cm4geyB9
OwogICAgIGlmIChlbGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgaWYgKCFlbGVtZW50VXBkYXRlLnN0eWxl
LT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpCisKKyAgICBpZiAoIWVsZW1lbnRVcGRhdGUuc3R5
bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkgeworICAgICAgICBpZiAocHNldWRvSWQgPT0g
UHNldWRvSWQ6OkZpcnN0TGluZSkgeworICAgICAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9
IHJlc29sdmVJbmhlcml0ZWRGaXJzdExpbmVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIGVsZW1lbnRV
cGRhdGUpOworICAgICAgICAgICAgaWYgKCFmaXJzdExpbmVTdHlsZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OworCisgICAgICAgICAgICBhdXRvKiBvbGRTdHlsZSA9IGVsZW1lbnQucmVu
ZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKKyAgICAgICAg
ICAgIGF1dG8gY2hhbmdlID0gb2xkU3R5bGUgPyBkZXRlcm1pbmVDaGFuZ2UoKm9sZFN0eWxlLCAq
Zmlyc3RMaW5lU3R5bGUpIDogQ2hhbmdlOjpSZW5kZXJlcjsKKyAgICAgICAgICAgIHJldHVybiBF
bGVtZW50VXBkYXRlIHsgV1RGTW92ZShmaXJzdExpbmVTdHlsZSksIGNoYW5nZSB9OworICAgICAg
ICB9CiAgICAgICAgIHJldHVybiB7IH07CisgICAgfQogCiAgICAgYXV0byByZXNvbHV0aW9uQ29u
dGV4dCA9IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoZWxlbWVudFVwZGF0
ZSk7CiAKQEAgLTI5NSwxMyArMzEzLDg0IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4g
VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwKICAgICBp
ZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9OwogCisgICAgLy8gRklYTUU6IFRo
aXMgdGVzdCBzaG91bGRuJ3QgYmUgbmVlZGVkLgogICAgIGJvb2wgaGFzQW5pbWF0aW9ucyA9IHBz
ZXVkb1N0eWxlLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIHx8IGVsZW1lbnQuaGFzS2V5
ZnJhbWVFZmZlY3RzKHBzZXVkb0lkKTsKLSAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklz
TmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9ucykKKyAgICBpZiAocHNl
dWRvSWQgIT0gUHNldWRvSWQ6OkZpcnN0TGluZSAmJiAhcHNldWRvRWxlbWVudFJlbmRlcmVySXNO
ZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkpICYmICFoYXNBbmltYXRpb25zKQogICAgICAgICByZXR1
cm4geyB9OwogCisgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgfHwgcHNldWRv
SWQgPT0gUHNldWRvSWQ6OkFmdGVyKSB7CisgICAgICAgIC8vIDo6Zmlyc3QtbGluZSBjYW4gaW5o
ZXJpdCB0byA6OmJlZm9yZS86OmFmdGVyCisgICAgICAgIGF1dG8gZmlyc3RMaW5lQ29udGV4dCA9
IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvckluaGVyaXRlZEZpcnN0TGluZShlbGVtZW50VXBkYXRl
LCAqZWxlbWVudFVwZGF0ZS5zdHlsZSk7CisgICAgICAgIGlmIChmaXJzdExpbmVDb250ZXh0KSB7
CisgICAgICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gc2NvcGUoKS5yZXNvbHZlci0+cHNl
dWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRvSWQgfSwgKmZpcnN0TGluZUNvbnRl
eHQpOworICAgICAgICAgICAgZmlyc3RMaW5lU3R5bGUtPnNldFN0eWxlVHlwZShQc2V1ZG9JZDo6
Rmlyc3RMaW5lKTsKKyAgICAgICAgICAgIHBzZXVkb1N0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHls
ZShXVEZNb3ZlKGZpcnN0TGluZVN0eWxlKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1
cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUocHNldWRvU3R5bGUpLCB7IGVs
ZW1lbnQsIHBzZXVkb0lkIH0sIGVsZW1lbnRVcGRhdGUuY2hhbmdlLCByZXNvbHV0aW9uQ29udGV4
dCk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gVHJlZVJlc29sdmVyOjpyZXNv
bHZlSW5oZXJpdGVkRmlyc3RMaW5lUHNldWRvRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQoreworICAgIGlmIChlbGVtZW50VXBkYXRl
LnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkgeworICAgICAgICBhdXRv
KiBwYXJlbnQgPSBib3hHZW5lcmF0aW5nUGFyZW50KCk7CisgICAgICAgIGlmICghcGFyZW50KQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIHJlc29sdXRpb25Db250ZXh0
ID0gbWFrZVJlc29sdXRpb25Db250ZXh0Rm9ySW5oZXJpdGVkRmlyc3RMaW5lKGVsZW1lbnRVcGRh
dGUsIHBhcmVudC0+c3R5bGUpOworICAgICAgICBpZiAoIXJlc29sdXRpb25Db250ZXh0KQorICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3Bl
KCkucmVzb2x2ZXItPnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAqcmVzb2x1dGlvbkNvbnRleHQp
OworICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gV1RGTW92ZShlbGVtZW50U3R5bGUucmVu
ZGVyU3R5bGUpOworICAgICAgICBmaXJzdExpbmVTdHlsZS0+c2V0U3R5bGVUeXBlKFBzZXVkb0lk
OjpGaXJzdExpbmUpOworCisgICAgICAgIHJldHVybiBmaXJzdExpbmVTdHlsZTsKKyAgICB9CisK
KyAgICBhdXRvIGlzQ2hpbGRJbkJsb2NrRm9ybWF0dGluZ0NvbnRleHQgPSBbXShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpIHsKKyAgICAgICAgLy8gRklYTUU6IEluY29tcGxldGUuIFRoZXJlIHNo
b3VsZCBiZSBzaGFyZWQgY29kZSB3aXRoIGxheW91dCBmb3IgdGhpcy4KKyAgICAgICAgaWYgKHN0
eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6QmxvY2spCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChzdHlsZS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3R5bGUuZmxvYXRpbmcoKSAhPSBGbG9h
dDo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHN0eWxlLm92
ZXJmbG93WCgpICE9IE92ZXJmbG93OjpWaXNpYmxlIHx8IHN0eWxlLm92ZXJmbG93WSgpICE9IE92
ZXJmbG93OjpWaXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9OworCisgICAgYXV0byBmaXJzdExpbmVFbGVtZW50Rm9yQmxvY2sgPSBb
Jl0oKSAtPiBFbGVtZW50KiB7CisgICAgICAgIGlmICghaXNDaGlsZEluQmxvY2tGb3JtYXR0aW5n
Q29udGV4dCgqZWxlbWVudFVwZGF0ZS5zdHlsZSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICAvLyA6OmZpcnN0LWxpbmUgaXMgb25seSBwcm9wYWdhdGVkIHRvIHRoZSBm
aXJzdCBibG9jay4KKyAgICAgICAgaWYgKHBhcmVudCgpLnJlc29sdmVkRmlyc3RCb3hHZW5lcmF0
aW5nQ2hpbGQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBmb3IgKGF1
dG8mIHBhcmVudCA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fcGFyZW50U3RhY2spKSB7CisgICAgICAg
ICAgICBpZiAocGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAocGFyZW50LnN0eWxl
Lmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBwYXJlbnQuZWxlbWVudDsKKyAgICAgICAgICAgIGlmICghaXNDaGlsZEluQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dChwYXJlbnQuc3R5bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH07CisKKyAgICBh
dXRvIGZpcnN0TGluZUVsZW1lbnQgPSBmaXJzdExpbmVFbGVtZW50Rm9yQmxvY2soKTsKKyAgICBp
ZiAoIWZpcnN0TGluZUVsZW1lbnQpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHJl
c29sdXRpb25Db250ZXh0ID0gbWFrZVJlc29sdXRpb25Db250ZXh0Rm9yUHNldWRvRWxlbWVudChl
bGVtZW50VXBkYXRlKTsKKyAgICByZXNvbHV0aW9uQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3Rh
dGUgPSBudWxscHRyOworCisgICAgcmV0dXJuIHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxl
Rm9yRWxlbWVudCgqZmlyc3RMaW5lRWxlbWVudCwgeyBQc2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIHJl
c29sdXRpb25Db250ZXh0KTsKK30KKwogUmVzb2x1dGlvbkNvbnRleHQgVHJlZVJlc29sdmVyOjpt
YWtlUmVzb2x1dGlvbkNvbnRleHQoKQogewogICAgIHJldHVybiB7CkBAIC0zMjIsMjAgKzQxMSw0
MyBAQCBSZXNvbHV0aW9uQ29udGV4dCBUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHV0aW9uQ29udGV4
dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbQogICAgIH07CiB9CiAKLWNvbnN0IFJlbmRlclN0
eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
UmVzb2x1dGlvbkNvbnRleHQ+IFRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdXRpb25Db250ZXh0Rm9y
SW5oZXJpdGVkRmlyc3RMaW5lKGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBpbmhlcml0U3R5bGUpCit7CisgICAgaWYgKCFzY29wZSgpLnJlc29s
dmVyLT51c2VzRmlyc3RMaW5lUnVsZXMoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8gcGFyZW50Rmlyc3RMaW5lU3R5bGUgPSBpbmhlcml0U3R5bGUuZ2V0Q2FjaGVkUHNldWRvU3R5
bGUoUHNldWRvSWQ6OkZpcnN0TGluZSk7CisgICAgaWYgKCFwYXJlbnRGaXJzdExpbmVTdHlsZSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIEZpcnN0IGxpbmUgc3R5bGUgZm9yIGlubGlu
ZXMgaXMgbWFkZSBieSBpbmhlcml0aW5nIGZyb20gcGFyZW50IGZpcnN0IGxpbmUgc3R5bGUuCisg
ICAgcmV0dXJuIFJlc29sdXRpb25Db250ZXh0IHsKKyAgICAgICAgcGFyZW50Rmlyc3RMaW5lU3R5
bGUsCisgICAgICAgIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChlbGVtZW50VXBkYXRl
KSwKKyAgICAgICAgbV9kb2N1bWVudEVsZW1lbnRTdHlsZS5nZXQoKSwKKyAgICAgICAgJnNjb3Bl
KCkuc2VsZWN0b3JNYXRjaGluZ1N0YXRlCisgICAgfTsKK30KKworYXV0byBUcmVlUmVzb2x2ZXI6
OmJveEdlbmVyYXRpbmdQYXJlbnQoKSBjb25zdCAtPiBjb25zdCBQYXJlbnQqCiB7CiAgICAgLy8g
J2Rpc3BsYXk6IGNvbnRlbnRzJyBkb2Vzbid0IGdlbmVyYXRlIGJveGVzLgotICAgIGZvciAoYXV0
byBpID0gbV9wYXJlbnRTdGFjay5zaXplKCk7IGktLTspIHsKLSAgICAgICAgYXV0byYgcGFyZW50
ID0gbV9wYXJlbnRTdGFja1tpXTsKKyAgICBmb3IgKGF1dG8mIHBhcmVudCA6IG1ha2VSZXZlcnNl
ZFJhbmdlKG1fcGFyZW50U3RhY2spKSB7CiAgICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpOb25lKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpDb250ZW50
cykKLSAgICAgICAgICAgIHJldHVybiAmcGFyZW50LnN0eWxlOworICAgICAgICAgICAgcmV0dXJu
ICZwYXJlbnQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCitjb25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hT
dHlsZSgpIGNvbnN0Cit7CisgICAgYXV0byogcGFyZW50ID0gYm94R2VuZXJhdGluZ1BhcmVudCgp
OworICAgIHJldHVybiBwYXJlbnQgPyAmcGFyZW50LT5zdHlsZSA6IG51bGxwdHI7Cit9CisKIGNv
bnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxl
bWVudChjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKSBjb25zdAogewogICAgIHN3
aXRjaCAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpKSB7CkBAIC01NTYsNiArNjY4LDkg
QEAgdm9pZCBUcmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUoKQogICAgICAgICAgICAg
ICAgIG1fdXBkYXRlLT5hZGRUZXh0KHRleHQsIHBhcmVudC5lbGVtZW50LCBXVEZNb3ZlKHRleHRV
cGRhdGUpKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCF0ZXh0LmRhdGEoKS5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpKQorICAgICAgICAgICAgICAgIHBh
cmVudC5yZXNvbHZlZEZpcnN0Qm94R2VuZXJhdGluZ0NoaWxkID0gdHJ1ZTsKKwogICAgICAgICAg
ICAgdGV4dC5zZXRIYXNWYWxpZFN0eWxlKCk7CiAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRT
a2lwcGluZ0NoaWxkcmVuKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTYxMCw2ICs3MjUs
OSBAQCB2b2lkIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgIGlm
ICghbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCkKICAgICAgICAgICAgIG1fZGlkU2VlUGVuZGlu
Z1N0eWxlc2hlZXQgPSBoYXNMb2FkaW5nU3R5bGVzaGVldChtX2RvY3VtZW50LnN0eWxlU2NvcGUo
KSwgZWxlbWVudCwgIXNob3VsZEl0ZXJhdGVDaGlsZHJlbik7CiAKKyAgICAgICAgaWYgKHN0eWxl
ICYmIGdlbmVyYXRlc0JveCgqc3R5bGUpKQorICAgICAgICAgICAgcGFyZW50LnJlc29sdmVkRmly
c3RCb3hHZW5lcmF0aW5nQ2hpbGQgPSB0cnVlOworCiAgICAgICAgIGlmICghc2hvdWxkSXRlcmF0
ZUNoaWxkcmVuKSB7CiAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVu
KCk7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVHJlZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5oCmluZGV4IGU4MGFiMjczMDVjMmFkZjEzYWJkZWZmNDk1ZTE0OTI0NzBjNjA1NDAu
LjgwNDVhYjExZTY2MzczNzM4MTA2NmUwMzM3ZjRkZWU2MTNhMTk1ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaApAQCAtNjksNyArNjksOCBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZT4gcmVzb2x2
ZUVsZW1lbnQoRWxlbWVudCYpOwogCiAgICAgc3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5p
bWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0
eWxlYWJsZSYsIENoYW5nZSwgY29uc3QgUmVzb2x1dGlvbkNvbnRleHQmKTsKLSAgICBzdGQ6Om9w
dGlvbmFsPEVsZW1lbnRVcGRhdGU+IHJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiwgY29uc3Qg
RWxlbWVudFVwZGF0ZSYsIFBzZXVkb0lkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRh
dGU+IHJlc29sdmVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmLCBQc2V1ZG9JZCwgY29uc3QgRWxlbWVu
dFVwZGF0ZSYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUluaGVy
aXRlZEZpcnN0TGluZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUm
KTsKIAogICAgIHN0cnVjdCBTY29wZSA6IFJlZkNvdW50ZWQ8U2NvcGU+IHsKICAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKFRyZWVSZXNv
bHZlclNjb3BlKTsKQEAgLTkwLDYgKzkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ2hhbmdlIGNo
YW5nZSB7IENoYW5nZTo6Tm9uZSB9OwogICAgICAgICBEZXNjZW5kYW50c1RvUmVzb2x2ZSBkZXNj
ZW5kYW50c1RvUmVzb2x2ZSB7IERlc2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lIH07CiAgICAgICAg
IGJvb2wgZGlkUHVzaFNjb3BlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCByZXNvbHZlZEZpcnN0
Qm94R2VuZXJhdGluZ0NoaWxkIHsgZmFsc2UgfTsKIAogICAgICAgICBQYXJlbnQoRG9jdW1lbnQm
KTsKICAgICAgICAgUGFyZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIENoYW5nZSwg
RGVzY2VuZGFudHNUb1Jlc29sdmUpOwpAQCAtMTEyLDYgKzExNCw4IEBAIHByaXZhdGU6CiAKICAg
ICBSZXNvbHV0aW9uQ29udGV4dCBtYWtlUmVzb2x1dGlvbkNvbnRleHQoKTsKICAgICBSZXNvbHV0
aW9uQ29udGV4dCBtYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVs
ZW1lbnRVcGRhdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc29sdXRpb25Db250ZXh0PiBtYWtl
UmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0ZWRGaXJzdExpbmUoY29uc3QgRWxlbWVudFVwZGF0
ZSYsIGNvbnN0IFJlbmRlclN0eWxlJiBpbmhlcml0U3R5bGUpOworICAgIGNvbnN0IFBhcmVudCog
Ym94R2VuZXJhdGluZ1BhcmVudCgpIGNvbnN0OwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnRCb3hTdHlsZSgpIGNvbnN0OwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHls
ZUZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OTJjYWEwZWRlMzFiN2YxMTkyMGQ5ZDY1NGExNDkxN2YxOGI5OGFhOC4uMTZiN2VmNGJiMWY0NmY5
ZGM4ZWRhYTJiNzdjYTFkM2I0NjZjNjJkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAz
LTA1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZl
IDo6Zmlyc3QtbGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAz
LTAzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
R0wgY29udGV4dCBjb3VudCBpcyBub3QgbGltaXRlZCBmb3IgR1BVIHByb2Nlc3MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDE1NWQyZmJjOGQxMzMwNjMzN2M3NGQ0ZmY2Yzg1MDRhYzc0MjViZTAuLjdh
NjA0NmM5MDNkYmNiNDNmZGRkNWMxYTlkYWE4ZWM2NTRjNWY2ZDcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtNDQwOSwxMSArNDQwOSw3IEBAIHdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1sZXR0ZXItCiB3ZWJraXQu
b3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1
ZG8vZmlyc3QtbGV0dGVyLWV4Y2x1ZGUtaW5saW5lLWNoaWxkLW1hcmtlci5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLWV4Y2x1ZGUtaW5saW5lLW1hcmtl
ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLWxpc3Qt
aXRlbS1keW5hbWljLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmly
c3QtbGluZS1jaGFuZ2UtaW5saW5lLWNvbG9yLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXBzZXVkby9maXJzdC1saW5lLWNoYW5nZS1pbmxpbmUtY29sb3ItbmVzdGVkLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLW9wYWNpdHktMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLXdpdGgtYmVmb3JlLWFmdGVy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLXdpdGgtb3V0
LW9mLWZsb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2dyYW1tYXItZXJy
b3ItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDQxNjMgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9tYXJrZXItY29udGVu
dC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDE2MyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL21hcmtlci1jb250ZW50
LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkBAIC00NDQwLDcgKzQ0MzYsNiBAQCB3ZWJr
aXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1w
c2V1ZG8vbWFya2VyLWxpc3Qtcwogd2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL21hcmtlci11bmljb2RlLWJpZGktZGVmYXVs
dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vbWFya2VyLXVuaWNvZGUtYmlk
aS1ub3JtYWwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL3NwZWxsaW5nLWVy
cm9yLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjMwOTY0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS1h
bmQtcGxhY2Vob2xkZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MjE0NDYyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY29waW5nL2hv
c3QtY29udGV4dC1zcGVjaWZpY2l0eS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzIxNDQ2MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
c2NvcGluZy9ob3N0LWNvbnRleHQtc3BlY2lmaWNpdHktMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KQEAgLTQ5MDcsMTAgKzQ5MDIsNyBAQCB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLQogd2Vi
a2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHNldWRvL2ZpcnN0LWxldHRlci1wdW5jdHVhdGlvbi1keW5hbWljLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1sZXR0ZXItc2tpcC1lbXB0eS1zcGFuLW5lc3RlZC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLXNraXAtZW1w
dHktc3Bhbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjMwMDA0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS13
aXRoLWlubGluZS1ibG9jay1iZWZvcmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzIzMDAwNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNl
dWRvL2ZpcnN0LWxpbmUtd2l0aC1pbmxpbmUtYmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtcHNldWRvL2ZpcnN0LWxpbmUtd2l0aC1vdXQtb2YtZmxvdy1hbmQtbmVzdGVkLWRpdi5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS13aXRoLW91dC1v
Zi1mbG93LWFuZC1uZXN0ZWQtc3Bhbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1
ZG8vZ3JhbW1hci1zcGVsbGluZy1lcnJvcnMtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXBzZXVkby9ncmFtbWFyLXNwZWxsaW5nLWVycm9ycy0wMDIuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHNldWRvL2hpZ2hsaWdodC1wYWludGluZy0wMDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9y
bXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0CmluZGV4IDI5NGFiNTg2NTBi
MWFiYWVmNjM5M2U1ZWQwMzFkNDNmMzhhOTYxMDcuLmUxMTA0ODAxMmU4M2M2NDBkOTE1ZTRmM2Mw
NTI3ZDhlZjAwNDFmZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L2Zvcm1zL2lucHV0LWJhc2VsaW5lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9mb3Jtcy9pbnB1dC1iYXNlbGluZS1leHBlY3RlZC50eHQKQEAgLTEyLDEw
ICsxMiwxMCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgdGV4dCBydW4g
YXQgKDE5Niw0MSkgd2lkdGggNDIwOiAiVGhpcyB0ZXh0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhl
IGJvdHRvbSBvZiB0aGUgdGV4dCBpbiB0aGUgdGV4dCBmaWVsZC4iCiAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICg2MTYsNDEpIHNpemUgMHgxNwogICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCw2NCkg
c2l6ZSAweDE3Ci0gICAgICBSZW5kZXJUZXh0Q29udHJvbCB7SU5QVVR9IGF0ICgyLDg0KSBzaXpl
IDE5MngxMzAgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0K
LSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTk2LDE3Mikgc2l6ZSA0MjB4MTcKLSAgICAg
ICAgdGV4dCBydW4gYXQgKDE5NiwxNzIpIHdpZHRoIDQyMDogIlRoaXMgdGV4dCBzaG91bGQgbGlu
ZSB1cCB3aXRoIHRoZSBib3R0b20gb2YgdGhlIHRleHQgaW4gdGhlIHRleHQgZmllbGQuIgorICAg
ICAgUmVuZGVyVGV4dENvbnRyb2wge0lOUFVUfSBhdCAoMiw4NCkgc2l6ZSAxOTJ4MjQgW2JnY29s
b3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMTk2LDg3KSBzaXplIDQyMHgxNworICAgICAgICB0ZXh0IHJ1biBhdCAo
MTk2LDg3KSB3aWR0aCA0MjA6ICJUaGlzIHRleHQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUgYm90
dG9tIG9mIHRoZSB0ZXh0IGluIHRoZSB0ZXh0IGZpZWxkLiIKIGxheWVyIGF0ICgxMyw0OSkgc2l6
ZSAxODZ4MTgKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxODZ4MTgKLWxheWVy
IGF0ICgxMyw5NSkgc2l6ZSAxODZ4MTI0Ci0gIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNp
emUgMTg2eDEyNAorbGF5ZXIgYXQgKDEzLDk1KSBzaXplIDE4NngxOAorICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMywzKSBzaXplIDE4NngxOApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDk0YWVjNTAwOGIwNDM3ZmNlNTBhYzQyYmYyMmJiMGY5ZDliNzZlNzUuLjQxYjgwZjhhNTgy
NGNjYWEzZTZkOWY5ZWQxN2UwNWMyMjYxZjBjZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LWJhc2VsaW5lLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1iYXNlbGluZS1leHBlY3Rl
ZC50eHQKQEAgLTEyLDEwICsxMiwxMCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
ICAgICAgdGV4dCBydW4gYXQgKDE1MCwzOCkgd2lkdGggNDMxOiAiVGhpcyB0ZXh0IHNob3VsZCBs
aW5lIHVwIHdpdGggdGhlIGJvdHRvbSBvZiB0aGUgdGV4dCBpbiB0aGUgdGV4dCBmaWVsZC4iCiAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg1ODAsMzgpIHNpemUgMXgxOAogICAgICAgUmVuZGVyQlIg
e0JSfSBhdCAoMCw1OSkgc2l6ZSAweDE4Ci0gICAgICBSZW5kZXJUZXh0Q29udHJvbCB7SU5QVVR9
IGF0ICgyLDc5KSBzaXplIDE0N3gxMzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBp
bnNldCAjMDAwMDAwKV0KLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTUwLDE3MSkgc2l6
ZSA0MzF4MTgKLSAgICAgICAgdGV4dCBydW4gYXQgKDE1MCwxNzEpIHdpZHRoIDQzMTogIlRoaXMg
dGV4dCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZSBib3R0b20gb2YgdGhlIHRleHQgaW4gdGhlIHRl
eHQgZmllbGQuIgorICAgICAgUmVuZGVyVGV4dENvbnRyb2wge0lOUFVUfSBhdCAoMiw3OSkgc2l6
ZSAxNDd4MTkgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0K
KyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTUwLDc5KSBzaXplIDQzMXgxOAorICAgICAg
ICB0ZXh0IHJ1biBhdCAoMTUwLDc5KSB3aWR0aCA0MzE6ICJUaGlzIHRleHQgc2hvdWxkIGxpbmUg
dXAgd2l0aCB0aGUgYm90dG9tIG9mIHRoZSB0ZXh0IGluIHRoZSB0ZXh0IGZpZWxkLiIKIGxheWVy
IGF0ICgxMyw0OSkgc2l6ZSAxNDF4MTMKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6
ZSAxNDF4MTMKLWxheWVyIGF0ICgxMyw5MCkgc2l6ZSAxNDF4MTI2Ci0gIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgzLDMpIHNpemUgMTQxeDEyNgorbGF5ZXIgYXQgKDEzLDkwKSBzaXplIDE0MXgxMwor
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDE0MXgxMwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453905</attachid>
            <date>2022-03-05 02:18:24 -0800</date>
            <delta_ts>2022-03-05 05:34:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220305121822.patch</filename>
            <type>text/plain</type>
            <size>40940</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM0Zjg2NWEzNWQxMzUx
OTgyM2RmNGFkY2EyY2IxNDhjZWNjOTNhZi4uNWYxOTI0YTA4NTdjYjE5NzU0ZTY1MmU1MWI0OWI1
ZjNmYTFkMGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAzLTA1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDb21wdXRlIDo6Zmlyc3QtbGluZSBzdHlsZSBkdXJpbmcgc3R5bGUgcmVzb2x1
dGlvbiBpbnN0ZWFkIG9mIGxhemlseSBpbiByZW5kZXIgdHJlZS4KKyAgICAgICAgVGhpcyBmaXhl
cyBidWdzIGFuZCBjbGFyaWZpZXMgdGhlIGFyY2hpdGVjdHVyZSBpbiB3YXlzIHRoYXQgYSBoZWxw
ZnVsIGZvciBmZWF0dXJlcyBsaWtlCisgICAgICAgIGNvbnRhaW5lciBxdWVyaWVzLgorCisgICAg
ICAgIEFzIGEgc2lkZSBlZmZlY3QgaXQgYWxzbyBtYWtlcyA6OmZpcnN0LWxpbmUgc3R5bGUgYW5p
bWF0YWJsZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmxvY2sgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OlJlbmRl
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Zmlyc3RMaW5lU3R5
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVT
dHlsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpp
bnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0TGluZUJsb2NrIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UnVieVJ1bjo6Zmlyc3RMaW5lQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpmaXJzdExpbmVCbG9jayBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
ZmluZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldENh
Y2hlZFBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlc0JveCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1RleHQ6OmZpcnN0TGluZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToK
KyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlSW5oZXJpdGVkRmlyc3RMaW5lUHNl
dWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjptYWtl
UmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0ZWRGaXJzdExpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Ym94R2VuZXJhdGluZ1BhcmVudCBjb25zdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlQ29t
cG9zZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKwogMjAyMi0wMy0wMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYkdMIGNvbnRleHQgY291bnQgaXMgbm90IGxpbWl0ZWQgZm9yIEdQVSBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA1MmE1
YTU0YjJmNjczMTNmY2ExYzc1YzlkNDFiODcxMTMyOTYxZjViLi41ZTZkZjBiZDYwMGQzMGQ1ZGU5
NWMxM2ZkMDkxM2Q0YmQ1MTVlZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTI1NzEsMjcgKzI1NzEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW5k
ZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KQog
ICAgIHJldHVybiByZW5kZXJFbGVtZW50LmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgcmVuZGVyRWxl
bWVudC5pc1JlbmRlckJ1dHRvbigpOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmZp
cnN0TGluZUJsb2NrKCkgY29uc3QKLXsKLSAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2sg
PSBjb25zdF9jYXN0PFJlbmRlckJsb2NrKj4odGhpcyk7Ci0gICAgYm9vbCBoYXNQc2V1ZG8gPSBm
YWxzZTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBoYXNQc2V1ZG8gPSBmaXJzdExpbmVC
bG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKLSAgICAg
ICAgaWYgKGhhc1BzZXVkbykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5kZXJFbGVt
ZW50KiBwYXJlbnRCbG9jayA9IGZpcnN0TGluZUJsb2NrLT5wYXJlbnQoKTsKLSAgICAgICAgaWYg
KGZpcnN0TGluZUJsb2NrLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IGZpcnN0TGluZUJs
b2NrLT5pc0Zsb2F0aW5nKCkKLSAgICAgICAgICAgIHx8ICFwYXJlbnRCbG9jayB8fCBwYXJlbnRC
bG9jay0+Zmlyc3RDaGlsZCgpICE9IGZpcnN0TGluZUJsb2NrIHx8ICFpc1JlbmRlckJsb2NrRmxv
d09yUmVuZGVyQnV0dG9uKCpwYXJlbnRCbG9jaykpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZmlyc3RMaW5lQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4ocGFyZW50QmxvY2spOwot
ICAgIH0gCi0gICAgCi0gICAgaWYgKCFoYXNQc2V1ZG8pCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIHJldHVybiBmaXJzdExpbmVCbG9jazsKLX0KLQogc3RhdGljIGlubGluZSBS
ZW5kZXJCbG9jayogZmluZEZpcnN0TGV0dGVyQmxvY2soUmVuZGVyQmxvY2sqIHN0YXJ0KQogewog
ICAgIFJlbmRlckJsb2NrKiBmaXJzdExldHRlckJsb2NrID0gc3RhcnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDExZjdmZWM3MTY5Y2JiNGY4ZDZlMzc1YjJiNDM2
NTllODgzNjRiNWUuLjIyMGZkNzQxMzA3OTExNDAzODVkMGQyZDUwNmE2MzQ0MGVjZGNjMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zODMsOSArMzgzLDYgQEAg
cHVibGljOgogICAgIAogICAgIC8vIEFkanVzdCBmcm9tIHBhaW50aW5nIG9mZnNldHMgdG8gdGhl
IGxvY2FsIGNvb3JkcyBvZiB0aGlzIHJlbmRlcmVyCiAgICAgdm9pZCBvZmZzZXRGb3JDb250ZW50
cyhMYXlvdXRQb2ludCYpIGNvbnN0OwotICAgIC8vIE9idGFpbnMgdGhlIG5lYXJlc3QgZW5jbG9z
aW5nIGJsb2NrIChpbmNsdWRpbmcgdGhpcyBibG9jaykgdGhhdCBjb250cmlidXRlcyBhIGZpcnN0
LWxpbmUgc3R5bGUgdG8gb3VyIGlubGluZQotICAgIC8vIGNoaWxkcmVuLgotICAgIFJlbmRlckJs
b2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZW51bSBGaWVsZHNl
dEZpbmRMZWdlbmRPcHRpb24geyBGaWVsZHNldElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3csIEZp
ZWxkc2V0SW5jbHVkZUZsb2F0aW5nT3JPdXRPZkZsb3cgfTsKICAgICBSZW5kZXJCb3gqIGZpbmRG
aWVsZHNldExlZ2VuZChGaWVsZHNldEZpbmRMZWdlbmRPcHRpb24gPSBGaWVsZHNldElnbm9yZUZs
b2F0aW5nT3JPdXRPZkZsb3cpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IGZhYzE4YmFjZGMwMDQ3MjIxMWRlNTVlMTYxZTMzNTc1MWNiZDFi
MjEuLjA4NjY3OWMzMzI5NDk2MmM2ZGY1YWNkZGFkMzBjYjUyNDFkZjU5MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNiBAQCBp
bmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50
T3JEb2N1bWVudCwgUmVuZGVyU3R5bAogICAgICwgbV9oYXNDb250aW51YXRpb25DaGFpbk5vZGUo
ZmFsc2UpCiAgICAgLCBtX2lzQ29udGludWF0aW9uKGZhbHNlKQogICAgICwgbV9pc0ZpcnN0TGV0
dGVyKGZhbHNlKQotICAgICwgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKGZhbHNlKQog
ICAgICwgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkJlZm9yZVF1aXJrKGZhbHNlKQogICAgICwgbV9y
ZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsoZmFsc2UpCiAgICAgLCBtX3JlbmRlckJsb2Nr
U2hvdWxkRm9yY2VSZWxheW91dENoaWxkcmVuKGZhbHNlKQpAQCAtMjI0LDYyICsyMjMsMTcgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcihFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50Ojpjb21wdXRlRmlyc3RMaW5lU3R5
bGUoKSBjb25zdAotewotICAgIEFTU0VSVCh2aWV3KCkudXNlc0ZpcnN0TGluZVJ1bGVzKCkpOwot
Ci0gICAgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZSA9IGlzQmVmb3Jl
T3JBZnRlckNvbnRlbnQoKSA/ICpwYXJlbnQoKSA6IGNvbnN0X2Nhc3Q8UmVuZGVyRWxlbWVudCY+
KCp0aGlzKTsKLQotICAgIGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzUmVuZGVyQmxv
Y2tGbG93KCkgfHwgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc1JlbmRlckJ1dHRvbigpKSB7
Ci0gICAgICAgIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jayA9IHJlbmRlcmVyRm9yRmlyc3RM
aW5lU3R5bGUuZmlyc3RMaW5lQmxvY2soKTsKLSAgICAgICAgaWYgKCFmaXJzdExpbmVCbG9jaykK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHls
ZSA9IGZpcnN0TGluZUJsb2NrLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lLCAmc3R5bGUoKSk7Ci0gICAgICAgIGlmICghZmlyc3RMaW5lU3R5bGUpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
Zmlyc3RMaW5lU3R5bGUpOwotICAgIH0KLQotICAgIGlmICghcmVuZGVyZXJGb3JGaXJzdExpbmVT
dHlsZS5pc1JlbmRlcklubGluZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1
dG8mIHBhcmVudFN0eWxlID0gcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5wYXJlbnQoKS0+Zmly
c3RMaW5lU3R5bGUoKTsKLSAgICBpZiAoJnBhcmVudFN0eWxlID09ICZyZW5kZXJlckZvckZpcnN0
TGluZVN0eWxlLnBhcmVudCgpLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzQW5vbnltb3VzKCkpIHsKLSAgICAg
ICAgYXV0byogdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlDb250ZW50c1BhcmVudCA9IFJlbmRlclRl
eHQ6OmZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRhdGUocmVuZGVyZXJG
b3JGaXJzdExpbmVTdHlsZSk7Ci0gICAgICAgIGlmICghdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlD
b250ZW50c1BhcmVudCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRv
KiBjb21wb3NlZFRyZWVQYXJlbnRFbGVtZW50ID0gdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlDb250
ZW50c1BhcmVudC0+dGV4dE5vZGUoKS0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCk7Ci0g
ICAgICAgIGlmICghY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJlbnRFbGVt
ZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQYXJlbnRF
bGVtZW50LCB7ICZwYXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKLSAgICAgICAgQVNTRVJUKHN0
eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKTsKLQotICAgICAgICAvLyBX
ZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxzcGFuPiBhcm91bmQgdGhlIHRleHQg
bm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVyaXRhbmNlLgotICAgICAgICBhdXRv
IGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwotICAgICAgICBmaXJz
dExpbmVTdHlsZS0+aW5oZXJpdEZyb20oKnN0eWxlKTsKLSAgICAgICAgcmV0dXJuIGZpcnN0TGlu
ZVN0eWxlOwotICAgIH0KLQotICAgIHJldHVybiByZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmVs
ZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZWxlbWVudCgpLCB7ICZw
YXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKLX0KLQogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRl
ckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2Vz
Rmlyc3RMaW5lUnVsZXMoKSkKKyAgICBpZiAoaXNBbm9ueW1vdXNCbG9jaygpICYmIHByZXZpb3Vz
SW5GbG93U2libGluZygpKQogICAgICAgICByZXR1cm4gc3R5bGUoKTsKIAotICAgIGlmICghbV9o
YXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKSB7Ci0gICAgICAgIGF1dG8gZmlyc3RMaW5lU3R5
bGUgPSBjb21wdXRlRmlyc3RMaW5lU3R5bGUoKTsKLSAgICAgICAgaWYgKGZpcnN0TGluZVN0eWxl
IHx8IGhhc1JhcmVEYXRhKCkpCi0gICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlckVsZW1lbnQm
PigqdGhpcykuZW5zdXJlUmFyZURhdGEoKS5jYWNoZWRGaXJzdExpbmVTdHlsZSA9IFdURk1vdmUo
Zmlyc3RMaW5lU3R5bGUpOwotICAgICAgICBtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RMaW5lU3R5bGUg
PSB0cnVlOwotICAgIH0KKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGp1c3Qg
c2V0IGFub255bW91cyBibG9jayBmaXJzdC1saW5lIHN0eWxlcyBjb3JyZWN0bHkuCisgICAgYXV0
byYgcmVuZGVyZXJGb3JGaXJzdExpbmUgPSBpc0Fub255bW91c0Jsb2NrKCkgPyAqcGFyZW50KCkg
OiAqdGhpczsKKyAgICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSByZW5kZXJlckZvckZpcnN0
TGluZS5zdHlsZSgpLmdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpKQor
ICAgICAgICByZXR1cm4gKmZpcnN0TGluZVN0eWxlOwogCi0gICAgcmV0dXJuIChoYXNSYXJlRGF0
YSgpICYmIHJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUpID8gKnJhcmVEYXRhKCkuY2Fj
aGVkRmlyc3RMaW5lU3R5bGUgOiBzdHlsZSgpOworICAgIHJldHVybiBzdHlsZSgpOwogfQogCiBT
dHlsZURpZmZlcmVuY2UgUmVuZGVyRWxlbWVudDo6YWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBPcHRpb25TZXQ8U3R5bGVEaWZmZXJlbmNlQ29udGV4dFNlbnNpdGl2
ZVByb3BlcnR5PiBjb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3QKQEAgLTgwMywxNiAr
NzU3LDYgQEAgc3RhdGljIGlubGluZSBib29sIHJlbmRlcmVySGFzQmFja2dyb3VuZChjb25zdCBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKICAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXIt
Pmhhc0JhY2tncm91bmQoKTsKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50OjppbnZhbGlkYXRlQ2Fj
aGVkRmlyc3RMaW5lU3R5bGUoKQotewotICAgIGlmICghbV9oYXNWYWxpZENhY2hlZEZpcnN0TGlu
ZVN0eWxlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0
eWxlID0gZmFsc2U7Ci0gICAgLy8gSW52YWxpZGF0ZSB0aGUgc3VidHJlZSBhcyBkZXNjZW5kYW50
J3MgZmlyc3QgbGluZSBzdHlsZSBtYXkgZGVwZW5kIG9uIGFuY2VzdG9yJ3MuCi0gICAgZm9yIChh
dXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8UmVuZGVyRWxlbWVudD4oKnRoaXMp
KQotICAgICAgICBkZXNjZW5kYW50Lm1faGFzVmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IGZh
bHNlOwotfQotCiB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAgIEFTU0VSVChz
ZXR0aW5ncygpLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkgfHwgbmV3U3R5bGUuZm9u
dERlc2NyaXB0aW9uKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSA9PSBBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250czo6Tm8pOwpAQCAtODgzLDkgKzgyNyw2IEBAIHZvaWQgUmVuZGVyRWxl
bWVudDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3CiAgICAgICAgICAgICBjbGVhclBvc2l0aW9uZWRTdGF0ZSgpOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKG5ld1N0eWxlLmhhc1BzZXVkb1N0eWxlKFBzZXVkb0lkOjpGaXJzdExp
bmUpIHx8IG9sZFN0eWxlLT5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKLSAg
ICAgICAgICAgIGludmFsaWRhdGVDYWNoZWRGaXJzdExpbmVTdHlsZSgpOwotCiAgICAgICAgIHNl
dEhvcml6b250YWxXcml0aW5nTW9kZSh0cnVlKTsKICAgICAgICAgc2V0SGFzVmlzaWJsZUJveERl
Y29yYXRpb25zKGZhbHNlKTsKICAgICAgICAgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KGZhbHNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDZlOTc1ZDNk
MDcyOGM2NTk4MjE2NDlmMGY1NzgwYmYwNjBhZWFiMzYuLjUxYzU1MmNiZDllN2ZkMmI3Y2JlOWQx
MmRjZmEzZjEzMWZmN2RmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaApAQCAtMzUxLDggKzM1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTaGFwZUlt
YWdlKGNvbnN0IFNoYXBlVmFsdWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CiAKICAgICBTdHlsZURp
ZmZlcmVuY2UgYWRqdXN0U3R5bGVEaWZmZXJlbmNlKFN0eWxlRGlmZmVyZW5jZSwgT3B0aW9uU2V0
PFN0eWxlRGlmZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eT4pIGNvbnN0OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY29tcHV0ZUZpcnN0TGluZVN0eWxlKCkgY29uc3Q7
Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5bGUoKTsKIAogICAgIGJvb2wg
Y2FuRGVzdHJveURlY29kZWREYXRhKCkgZmluYWwgeyByZXR1cm4gIWlzVmlzaWJsZUluVmlld3Bv
cnQoKTsgfQogICAgIFZpc2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShD
YWNoZWRJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJl
Y3QpIGZpbmFsOwpAQCAtMzgxLDcgKzM3OSw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9o
YXNDb250aW51YXRpb25DaGFpbk5vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb250aW51YXRp
b24gOiAxOwogICAgIHVuc2lnbmVkIG1faXNGaXJzdExldHRlciA6IDE7Ci0gICAgbXV0YWJsZSB1
bnNpZ25lZCBtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RMaW5lU3R5bGUgOiAxOwogCiAgICAgdW5zaWdu
ZWQgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkJlZm9yZVF1aXJrIDogMTsKICAgICB1bnNpZ25lZCBt
X3JlbmRlckJsb2NrSGFzTWFyZ2luQWZ0ZXJRdWlyayA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDEwYjBkM2NlYTY3NmE4OWQwYjFkZjExZTczMjdl
MzRiNTNhNDQ2ZmMuLmRjYTczZTg5NWQzZGFhYTVkNzAxOWJhNDU0Mjg1MmNiOTNhN2YxMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00OTEsMTEgKzQ5
MSw2IEBAIFJlbmRlckJveCogUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdTY3JvbGxhYmxlQ29udGFp
bmVyRm9yU25hcHBpbmcoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLmRvY3VtZW50RWxl
bWVudCgpID8gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyQm94KCkgOiBudWxs
cHRyOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyT2JqZWN0OjpmaXJzdExpbmVCbG9jaygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBvYmpl
Y3RJc1JlbGF5b3V0Qm91bmRhcnkoY29uc3QgUmVuZGVyRWxlbWVudCogb2JqZWN0KQogewogICAg
IC8vIEZJWE1FOiBJbiBmdXR1cmUgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIGJyb2FkZW4gdGhlc2Ug
Y29uZGl0aW9ucyBpbiBvcmRlciB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGYwZWVhYWVjOTg0ZDgzYjZhZDZkMTlhZWU5
NjU5ZTNiMzYzZjRmZTcuLjNjZGQxODAxZDI2MDE5ODhlNDJlZDdiMmVhZmY4ZGYzOGUxM2YxZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTE3Myw5ICsxNzMs
NiBAQCBwdWJsaWM6CiAKICAgICAvLyBDcmVhdGVzIGEgc2NvcGUgd2hlcmUgdGhpcyBvYmplY3Qg
d2lsbCBhc3NlcnQgb24gY2FsbHMgdG8gc2V0TmVlZHNMYXlvdXQoKS4KICAgICBjbGFzcyBTZXRM
YXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZTsKLQotICAgIC8vIE9idGFpbnMgdGhlIG5lYXJlc3Qg
ZW5jbG9zaW5nIGJsb2NrIChpbmNsdWRpbmcgdGhpcyBibG9jaykgdGhhdCBjb250cmlidXRlcyBh
IGZpcnN0LWxpbmUgc3R5bGUgdG8gb3VyIGlubGluZSBjaGlsZHJlbi4KLSAgICB2aXJ0dWFsIFJl
bmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0OwogICAgIAogICAgIC8vIFJlbmRlck9i
amVjdCB0cmVlIG1hbmlwdWxhdGlvbgogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwpAQCAtOTQ2LDcgKzk0Myw2IEBAIHByaXZhdGU6CiAgICAgICAgIEFERF9C
T09MRUFOX0JJVEZJRUxEKHBhaW50Q29udGFpbm1lbnRBcHBsaWVzLCBQYWludENvbnRhaW5tZW50
QXBwbGllcyk7CiAKICAgICAgICAgLy8gRnJvbSBSZW5kZXJFbGVtZW50Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY2FjaGVkRmlyc3RMaW5lU3R5bGU7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzPiByZWZlcmVuY2VkU1ZHUmVzb3Vy
Y2VzOwogICAgICAgICBXZWFrUHRyPFJlbmRlckJsb2NrRmxvdz4gYmFja2Ryb3BSZW5kZXJlcjsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlS
dW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCmluZGV4
IDZiZGE2OGQwMWQ0YzE4ZjdjYzE0YWU3ZTE4ZTAwMzEyMzYwYjk2MGQuLjQ2MTE5YzU5ZjYyODJl
OTlmMjU1MTU4NjNkNDIzNzFlYTViNzc2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUnVieVJ1bi5jcHAKQEAgLTg1LDExICs4NSw2IEBAIFJlbmRlclJ1YnlCYXNlKiBSZW5k
ZXJSdWJ5UnVuOjpydWJ5QmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNoaWxkICYmIGNoaWxkLT5p
c1J1YnlCYXNlKCkgPyBzdGF0aWNfY2FzdDxSZW5kZXJSdWJ5QmFzZSo+KGNoaWxkKSA6IG51bGxw
dHI7CiB9CiAKLVJlbmRlckJsb2NrKiBSZW5kZXJSdWJ5UnVuOjpmaXJzdExpbmVCbG9jaygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIGJvb2wgUmVuZGVyUnVieVJ1bjo6aXND
aGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdAogewogICAgIHJldHVybiBjaGlsZC5pc0lubGluZSgpIHx8IGNoaWxkLmlzUnVieVRl
eHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVu
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCmluZGV4IGMyODY0
OWM2OTU1YWI1ODY0MjY2ZWEyZWIwZjIyZDE3ZWFiNzU3ZmMuLjM1ODUxOTc4YzI2OGJhYjA4Zjcy
YzI0NGY4ZmRhNTNmNGQwMzRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlSdW4uaApAQCAtNTcsOCArNTcsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ2hpbGRBbGxv
d2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBvdmVycmlkZTsK
LQogICAgIHZvaWQgZ2V0T3ZlcmhhbmcoYm9vbCBmaXJzdExpbmUsIFJlbmRlck9iamVjdCogc3Rh
cnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciwgZmxvYXQmIHN0YXJ0T3Zlcmhh
bmcsIGZsb2F0JiBlbmRPdmVyaGFuZykgY29uc3Q7CiAKICAgICBzdGF0aWMgUmVuZGVyUHRyPFJl
bmRlclJ1YnlSdW4+IHN0YXRpY0NyZWF0ZVJ1YnlSdW4oY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJl
bnRSdWJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDdl
MzE4MTllYTRlNDgxNDYyN2NkOTY3OTE5MDE2NjJkZGIxM2U0YjUuLjU1MDdmZWViNjIyZWJjMzEz
MjJmYTlmZjZhNGEwNTdkODRlMzMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcApAQCAtMTQ4NiwxMSArMTQ4Niw2IEBAIFJlbmRlclRhYmxlQ2VsbCogUmVuZGVy
VGFibGU6OmNlbGxBZnRlcihjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0CiAgICAg
cmV0dXJuIGNlbGwtPnNlY3Rpb24oKS0+cHJpbWFyeUNlbGxBdChjZWxsLT5yb3dJbmRleCgpLCBl
ZmZDb2wpOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyVGFibGU6OmZpcnN0TGluZUJsb2NrKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogTGF5b3V0VW5pdCBSZW5kZXJUYWJs
ZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0
TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQ
b3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZhbHVlT3JDb21wdXRlKGZpcnN0TGlu
ZUJhc2VsaW5lKCksIFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmlu
ZGV4IDg3ZjBjN2FlZDAyYmQzNWY2NzY5NDI4OWY0NjI3ZTYwNzkwNGY1MzcuLmM1ZTJiNTkzZjI3
NmQ4YzAwZTZlODczMDcwZjEyMTA3ZWI5MGY2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5oCkBAIC0zMDcsOCArMzA3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFs
aWRhdGVDYWNoZWRDb2x1bW5zKCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVDYWNoZWRDb2x1bW5P
ZmZzZXRzKCk7Ci0KLSAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBmaW5h
bDsKICAgICAKICAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggMzY1ZDJmOWEyOWMwZmFhN2E5ZjBh
YzAzODgyMWUwZjgxMDUzNDVlOS4uNDA4NzkyOTI1Y2Q5NTQ0NmRhMTlkNjUwY2E3MTE4NDY0Yzk2
N2Y5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTgyMSwx
OCArMTgyMSw0IEBAIHZvaWQgUmVuZGVyVGV4dDo6c2V0SW5saW5lV3JhcHBlckZvckRpc3BsYXlD
b250ZW50cyhSZW5kZXJJbmxpbmUqIHdyYXBwZXIpCiAgICAgbV9oYXNJbmxpbmVXcmFwcGVyRm9y
RGlzcGxheUNvbnRlbnRzID0gdHJ1ZTsKIH0KIAotUmVuZGVyVGV4dCogUmVuZGVyVGV4dDo6Zmlu
ZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlcikKLXsKLSAgICBhdXRvKiBmaXJzdENoaWxkID0gcmVuZGVyZXIuZmlyc3RDaGlsZCgp
OwotICAgIGlmICghaXM8UmVuZGVyVGV4dD4oZmlyc3RDaGlsZCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGF1dG8mIHRleHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpm
aXJzdENoaWxkKTsKLSAgICBpZiAodGV4dFJlbmRlcmVyLmlubGluZVdyYXBwZXJGb3JEaXNwbGF5
Q29udGVudHMoKSAhPSAmcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEFT
U0VSVCh0ZXh0UmVuZGVyZXIudGV4dE5vZGUoKSk7Ci0gICAgQVNTRVJUKHJlbmRlcmVyLmZpcnN0
Q2hpbGQoKSA9PSByZW5kZXJlci5sYXN0Q2hpbGQoKSk7Ci0gICAgcmV0dXJuICZ0ZXh0UmVuZGVy
ZXI7Ci0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmgKaW5kZXggYWUyZTg0NmUyNTNlZmM3NDc5Zjc4NzQ3ZWE1OTk1Yzg4N2U1ZTNj
OS4uZjdhYzI2OTFhNDU3NmU2Y2Q4MmE1MjI4ZjZkOWJlOWI4ZmI3MWJkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0xODEsOCArMTgxLDYgQEAgcHVibGljOgogICAg
IFJlbmRlcklubGluZSogaW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cygpOwogICAgIHZv
aWQgc2V0SW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyhSZW5kZXJJbmxpbmUqKTsKIAot
ICAgIHN0YXRpYyBSZW5kZXJUZXh0KiBmaW5kQnlEaXNwbGF5Q29udGVudHNJbmxpbmVXcmFwcGVy
Q2FuZGlkYXRlKFJlbmRlckVsZW1lbnQmKTsKLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNZWFz
dXJlVGV4dENhbGxiYWNrPgogICAgIHN0YXRpYyBmbG9hdCBtZWFzdXJlVGV4dENvbnNpZGVyaW5n
UG9zc2libGVUcmFpbGluZ1NwYWNlKGJvb2wgY3VycmVudENoYXJhY3RlcklzU3BhY2UsIHVuc2ln
bmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIHdvcmRMZW5ndGgsIFdvcmRUcmFpbGluZ1NwYWNlJiwg
SGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIE1lYXN1cmVUZXh0Q2FsbGJhY2sm
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IDUxNmE0YjFiNmI3NDA1MDcxMjE4ZTRkZmY3NTAwOWVlOWQ2YTRkYmQuLjU0MDk1ODBl
MDYyNzViMzYwNTczYzJjNzI1MjY3OWQyYWUwNjA5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNDA1LDkgKzQwNSw2IEBAIFJlbmRl
clN0eWxlKiBSZW5kZXJTdHlsZTo6Z2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcGlkKSBj
b25zdAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMgfHwgIW1fY2FjaGVkUHNldWRvU3R5
bGVzLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKHN0eWxlVHlw
ZSgpICE9IFBzZXVkb0lkOjpOb25lKSAKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICBm
b3IgKGF1dG8mIHBzZXVkb1N0eWxlIDogKm1fY2FjaGVkUHNldWRvU3R5bGVzKSB7CiAgICAgICAg
IGlmIChwc2V1ZG9TdHlsZS0+c3R5bGVUeXBlKCkgPT0gcGlkKQogICAgICAgICAgICAgcmV0dXJu
IHBzZXVkb1N0eWxlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAppbmRleCA2MmU3MDYzNzUwODNiMTUxZGExMTNmNWQ5ZjVjN2NhYjhiYmIyN2U4
Li5lNzRiZWU4NjVhYzg4OTg3ZGI2MTcyZWViMjRhOGEyMzE2N2ViNjVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMjQ3Nyw0ICsyNDc3LDkg
QEAgaW5saW5lIGJvb2wgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKQogICAgIHJldHVybiBzdHlsZSAmJiBzdHlsZS0+ZGlzcGxheSgpICE9IERp
c3BsYXlUeXBlOjpOb25lICYmIHN0eWxlLT5jb250ZW50RGF0YSgpOwogfQogCitpbmxpbmUgYm9v
bCBnZW5lcmF0ZXNCb3goY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIHJldHVybiBz
dHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgc3R5bGUuZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpDb250ZW50czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMWFl
MzEzMGVmZGJjODQzOTA1MWY2OTc3Y2RmZjA4Mjg4OTMzZDQxNS4uNTg4YWYxYTFmNzc3Mjk1MzEy
OTdlY2Q5MGJjNjBiNjUzMjdmMWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00ODgsMTEgKzQ4OCw0IEBAIEZsb2F0UmVjdCBSZW5k
ZXJTVkdUZXh0OjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0CiAgICAgcmV0
dXJuIHJlcGFpbnRSZWN0OwogfQogCi0vLyBGaXggZm9yIDxyZGFyOi8vcHJvYmxlbS84MDQ4ODc1
Pi4gV2Ugc2hvdWxkIG5vdCByZW5kZXIgOmZpcnN0LWxpbmUgQ1NTIFN0eWxlCi0vLyBpbiBhIFNW
RyB0ZXh0IGVsZW1lbnQgY29udGV4dC4KLVJlbmRlckJsb2NrKiBSZW5kZXJTVkdUZXh0OjpmaXJz
dExpbmVCbG9jaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggYmE3MTk0ODVlOTFiZDBj
OTJmMjAxZmExZDIxODViYWI3NzY2YWZiOS4uMzJjNmUxMjQ4MzY3YzU1NTM3MTcyNGQ0ZTczYzZh
YmIzMDhjM2QxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmgKQEAgLTgxLDggKzgxLDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xv
Y2FsVHJhbnNmb3JtOyB9CiAgICAgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogCi0gICAgUmVuZGVyQmxv
Y2sqIGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBib29sIHNob3VsZEhh
bmRsZVN1YnRyZWVNdXRhdGlvbnMoKSBjb25zdDsKIAogICAgIGJvb2wgbV9uZWVkc1Jlb3JkZXJp
bmcgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAppbmRl
eCBlOGI5ZWU1MmYwNzhlMTE4MTAxNTI5MGFhMzQ0NTM4ZGUzOWI3NjY2Li5jMjk1NmViN2UwY2Q0
M2NhM2NkNGNjOWMwYzBlZDM3YmJjODcwMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJH
ZW5lcmF0ZWRDb250ZW50LmNwcApAQCAtMTQ3LDEwICsxNDcsMTEgQEAgdm9pZCBSZW5kZXJUcmVl
VXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBj
dXJyZW50LAogCiAgICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIGNvbnRlbnRzVXBkYXRlIHsg
V1RGTW92ZShjb250ZW50c1N0eWxlKSwgc3R5bGVDaGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21w
b3NpdGVMYXllciB9OwogICAgICAgICBtX3VwZGF0ZXIudXBkYXRlRWxlbWVudFJlbmRlcmVyKCpw
c2V1ZG9FbGVtZW50LCBXVEZNb3ZlKGNvbnRlbnRzVXBkYXRlKSk7Ci0gICAgICAgIHBzZXVkb0Vs
ZW1lbnQtPnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1
cGRhdGVTdHlsZSkpOworICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZUluY2x1ZGluZ1BzZXVkb0VsZW1lbnRzKCp1cGRhdGVTdHlsZSk7Cisg
ICAgICAgIHBzZXVkb0VsZW1lbnQtPnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUobWFrZVVuaXF1
ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUpKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZVN0eWxlKTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRh
dGUgcHNldWRvRWxlbWVudFVwZGF0ZSB7IFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZVN0eWxl
KSwgc3R5bGVDaGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21wb3NpdGVMYXllciB9OworICAgICAg
ICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZUluY2x1
ZGluZ1BzZXVkb0VsZW1lbnRzKCp1cGRhdGVTdHlsZSk7CisgICAgICAgIFN0eWxlOjpFbGVtZW50
VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUgeyBtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihXVEZN
b3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSkpLCBzdHlsZUNoYW5nZSwgZWxlbWVudFVwZGF0
ZS5yZWNvbXBvc2l0ZUxheWVyIH07CiAgICAgICAgIG1fdXBkYXRlci51cGRhdGVFbGVtZW50UmVu
ZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZSkpOwogICAg
ICAgICBBU1NFUlQoIXBzZXVkb0VsZW1lbnQtPmhhc0Rpc3BsYXlDb250ZW50cygpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggYTQ1Zjll
NjI0NzNmMzIzMWFiYzVmNjU0N2I2ZWVhNzI3ZjExYTlmMy4uNDc0MTFkM2UwZTg3NjZjYTU5YWVm
ZjNkMzFhM2NmNjgzNDRjODQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJMb2FkZXJT
dHJhdGVneS5oIgpAQCAtMjUwLDE1ICsyNTEsMTkgQEAgYXV0byBUcmVlUmVzb2x2ZXI6OnJlc29s
dmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpIC0+IHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRlLAog
ICAgIH0KIAogICAgIGF1dG8gcmVzb2x2ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZSA9IFsmXShQ
c2V1ZG9JZCBwc2V1ZG9JZCkgewotICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGUgPSBy
ZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBwc2V1ZG9JZCk7CisgICAgICAgIGF1
dG8gcHNldWRvRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHBz
ZXVkb0lkLCB1cGRhdGUpOwogICAgICAgICBpZiAoIXBzZXVkb0VsZW1lbnRVcGRhdGUpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gQ2hhbmdlOjpOb25lOwogICAgICAg
ICBpZiAocHNldWRvRWxlbWVudFVwZGF0ZS0+Y2hhbmdlICE9IENoYW5nZTo6Tm9uZSkKICAgICAg
ICAgICAgIHVwZGF0ZS5jaGFuZ2UgPSBzdGQ6Om1heCh1cGRhdGUuY2hhbmdlLCBDaGFuZ2U6Ok5v
bkluaGVyaXRlZCk7CiAgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50VXBkYXRlLT5yZWNvbXBvc2l0
ZUxheWVyKQogICAgICAgICAgICAgdXBkYXRlLnJlY29tcG9zaXRlTGF5ZXIgPSB0cnVlOwogICAg
ICAgICB1cGRhdGUuc3R5bGUtPmFkZENhY2hlZFBzZXVkb1N0eWxlKFdURk1vdmUocHNldWRvRWxl
bWVudFVwZGF0ZS0+c3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRVcGRhdGUt
PmNoYW5nZTsKICAgICB9OworICAgIAorICAgIGlmIChyZXNvbHZlQW5kQWRkUHNldWRvRWxlbWVu
dFN0eWxlKFBzZXVkb0lkOjpGaXJzdExpbmUpICE9IENoYW5nZTo6Tm9uZSkKKyAgICAgICAgZGVz
Y2VuZGFudHNUb1Jlc29sdmUgPSBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6QWxsOwogCiAgICAgcmVz
b2x2ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6TWFya2VyKTsKICAgICByZXNv
bHZlQW5kQWRkUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkOjpCZWZvcmUpOwpAQCAtMjc4LDE2
ICsyODMsMjkgQEAgYXV0byBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpIC0+IHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRlLAogICAgIHJldHVybiB7IFdURk1vdmUo
dXBkYXRlKSwgZGVzY2VuZGFudHNUb1Jlc29sdmUgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxFbGVt
ZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9J
ZCkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNl
dWRvRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCwgY29uc3QgRWxl
bWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKIHsKICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRv
SWQ6OkJhY2tkcm9wICYmICFlbGVtZW50LmlzSW5Ub3BMYXllcigpKQogICAgICAgICByZXR1cm4g
eyB9OwogICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6TWFya2VyICYmIGVsZW1lbnRVcGRh
dGUuc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0pCiAgICAgICAgIHJl
dHVybiB7IH07CisgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpGaXJzdExpbmUgJiYgIXNj
b3BlKCkucmVzb2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQorICAgICAgICByZXR1cm4geyB9
OwogICAgIGlmIChlbGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6
Ok5vbmUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgaWYgKCFlbGVtZW50VXBkYXRlLnN0eWxl
LT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpCisKKyAgICBpZiAoIWVsZW1lbnRVcGRhdGUuc3R5
bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkgeworICAgICAgICBpZiAocHNldWRvSWQgPT0g
UHNldWRvSWQ6OkZpcnN0TGluZSkgeworICAgICAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9
IHJlc29sdmVJbmhlcml0ZWRGaXJzdExpbmVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsIGVsZW1lbnRV
cGRhdGUpOworICAgICAgICAgICAgaWYgKCFmaXJzdExpbmVTdHlsZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OworCisgICAgICAgICAgICBhdXRvKiBvbGRTdHlsZSA9IGVsZW1lbnQucmVu
ZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKKyAgICAgICAg
ICAgIGF1dG8gY2hhbmdlID0gb2xkU3R5bGUgPyBkZXRlcm1pbmVDaGFuZ2UoKm9sZFN0eWxlLCAq
Zmlyc3RMaW5lU3R5bGUpIDogQ2hhbmdlOjpSZW5kZXJlcjsKKyAgICAgICAgICAgIHJldHVybiBF
bGVtZW50VXBkYXRlIHsgV1RGTW92ZShmaXJzdExpbmVTdHlsZSksIGNoYW5nZSB9OworICAgICAg
ICB9CiAgICAgICAgIHJldHVybiB7IH07CisgICAgfQogCiAgICAgYXV0byByZXNvbHV0aW9uQ29u
dGV4dCA9IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoZWxlbWVudFVwZGF0
ZSk7CiAKQEAgLTI5NSwxMyArMzEzLDk3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4g
VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYgZWxlbWVudCwKICAgICBp
ZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9OwogCisgICAgLy8gRklYTUU6IFRo
aXMgdGVzdCBzaG91bGRuJ3QgYmUgbmVlZGVkLgogICAgIGJvb2wgaGFzQW5pbWF0aW9ucyA9IHBz
ZXVkb1N0eWxlLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygpIHx8IGVsZW1lbnQuaGFzS2V5
ZnJhbWVFZmZlY3RzKHBzZXVkb0lkKTsKLSAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklz
TmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9ucykKKyAgICBpZiAocHNl
dWRvSWQgIT0gUHNldWRvSWQ6OkZpcnN0TGluZSAmJiAhcHNldWRvRWxlbWVudFJlbmRlcmVySXNO
ZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkpICYmICFoYXNBbmltYXRpb25zKQogICAgICAgICByZXR1
cm4geyB9OwogCisgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgfHwgcHNldWRv
SWQgPT0gUHNldWRvSWQ6OkFmdGVyKSB7CisgICAgICAgIC8vIDo6Zmlyc3QtbGluZSBjYW4gaW5o
ZXJpdCB0byA6OmJlZm9yZS86OmFmdGVyCisgICAgICAgIGF1dG8gZmlyc3RMaW5lQ29udGV4dCA9
IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvckluaGVyaXRlZEZpcnN0TGluZShlbGVtZW50VXBkYXRl
LCAqZWxlbWVudFVwZGF0ZS5zdHlsZSk7CisgICAgICAgIGlmIChmaXJzdExpbmVDb250ZXh0KSB7
CisgICAgICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gc2NvcGUoKS5yZXNvbHZlci0+cHNl
dWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRvSWQgfSwgKmZpcnN0TGluZUNvbnRl
eHQpOworICAgICAgICAgICAgZmlyc3RMaW5lU3R5bGUtPnNldFN0eWxlVHlwZShQc2V1ZG9JZDo6
Rmlyc3RMaW5lKTsKKyAgICAgICAgICAgIHBzZXVkb1N0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHls
ZShXVEZNb3ZlKGZpcnN0TGluZVN0eWxlKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1
cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUocHNldWRvU3R5bGUpLCB7IGVs
ZW1lbnQsIHBzZXVkb0lkIH0sIGVsZW1lbnRVcGRhdGUuY2hhbmdlLCByZXNvbHV0aW9uQ29udGV4
dCk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gVHJlZVJlc29sdmVyOjpyZXNv
bHZlSW5oZXJpdGVkRmlyc3RMaW5lUHNldWRvRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQoreworICAgIGlmIChlbGVtZW50VXBkYXRl
LnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkgeworICAgICAgICBhdXRv
KiBwYXJlbnQgPSBib3hHZW5lcmF0aW5nUGFyZW50KCk7CisgICAgICAgIGlmICghcGFyZW50KQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIHJlc29sdXRpb25Db250ZXh0
ID0gbWFrZVJlc29sdXRpb25Db250ZXh0Rm9ySW5oZXJpdGVkRmlyc3RMaW5lKGVsZW1lbnRVcGRh
dGUsIHBhcmVudC0+c3R5bGUpOworICAgICAgICBpZiAoIXJlc29sdXRpb25Db250ZXh0KQorICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIGVsZW1lbnRTdHlsZSA9IHNjb3Bl
KCkucmVzb2x2ZXItPnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAqcmVzb2x1dGlvbkNvbnRleHQp
OworICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gV1RGTW92ZShlbGVtZW50U3R5bGUucmVu
ZGVyU3R5bGUpOworICAgICAgICBmaXJzdExpbmVTdHlsZS0+c2V0U3R5bGVUeXBlKFBzZXVkb0lk
OjpGaXJzdExpbmUpOworCisgICAgICAgIHJldHVybiBmaXJzdExpbmVTdHlsZTsKKyAgICB9CisK
KyAgICBhdXRvIGNhbkluaGVyaXRGaXJzdExpbmVGcm9tID0gW10oY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKSB7CisgICAgICAgIGF1dG8gZGlzcGxheSA9IHN0eWxlLmRpc3BsYXkoKTsKKyAgICAg
ICAgcmV0dXJuIGRpc3BsYXkgPT0gRGlzcGxheVR5cGU6OkJsb2NrCisgICAgICAgICAgICB8fCBk
aXNwbGF5ID09IERpc3BsYXlUeXBlOjpMaXN0SXRlbQorICAgICAgICAgICAgfHwgZGlzcGxheSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2sKKyAgICAgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlz
cGxheVR5cGU6OlRhYmxlQ2VsbAorICAgICAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlw
ZTo6VGFibGVDYXB0aW9uCisgICAgICAgICAgICB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpG
bG93Um9vdDsKKyAgICB9OworCisgICAgYXV0byBpc0NoaWxkSW5CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0ID0gW10oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7CisgICAgICAgIC8vIEZJWE1FOiBJ
bmNvbXBsZXRlLiBUaGVyZSBzaG91bGQgYmUgc2hhcmVkIGNvZGUgd2l0aCBsYXlvdXQgZm9yIHRo
aXMuCisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OkJsb2NrKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3R5bGUuaGFzT3V0T2ZGbG93
UG9zaXRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHN0eWxl
LmZsb2F0aW5nKCkgIT0gRmxvYXQ6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChzdHlsZS5vdmVyZmxvd1goKSAhPSBPdmVyZmxvdzo6VmlzaWJsZSB8fCBzdHls
ZS5vdmVyZmxvd1koKSAhPSBPdmVyZmxvdzo6VmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIGF1dG8gZmlyc3RMaW5l
RWxlbWVudEZvckJsb2NrID0gWyZdKCkgLT4gRWxlbWVudCogeworICAgICAgICBpZiAoIWlzQ2hp
bGRJbkJsb2NrRm9ybWF0dGluZ0NvbnRleHQoKmVsZW1lbnRVcGRhdGUuc3R5bGUpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gOjpmaXJzdC1saW5lIGlzIG9ubHkg
cHJvcGFnYXRlZCB0byB0aGUgZmlyc3QgYmxvY2suCisgICAgICAgIGlmIChwYXJlbnQoKS5yZXNv
bHZlZEZpcnN0Qm94R2VuZXJhdGluZ0NoaWxkKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgZm9yIChhdXRvJiBwYXJlbnQgOiBtYWtlUmV2ZXJzZWRSYW5nZShtX3BhcmVu
dFN0YWNrKSkgeworICAgICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OkNvbnRlbnRzKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgaWYgKCFjYW5Jbmhlcml0Rmlyc3RMaW5lRnJvbShwYXJlbnQuc3R5bGUpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5oYXNQ
c2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cGFyZW50LmVsZW1lbnQ7CisgICAgICAgICAgICBpZiAoIWlzQ2hpbGRJbkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQocGFyZW50LnN0eWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9OworCisgICAgYXV0byBm
aXJzdExpbmVFbGVtZW50ID0gZmlyc3RMaW5lRWxlbWVudEZvckJsb2NrKCk7CisgICAgaWYgKCFm
aXJzdExpbmVFbGVtZW50KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byByZXNvbHV0
aW9uQ29udGV4dCA9IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoZWxlbWVu
dFVwZGF0ZSk7CisgICAgLy8gQ2FuJ3QgdXNlIHRoZSBjYWNoZWQgc3RhdGUgc2luY2UgdGhlIGVs
ZW1lbnQgYmVpbmcgcmVzb2x2ZWQgaXMgbm90IHRoZSBjdXJyZW50IG9uZS4KKyAgICByZXNvbHV0
aW9uQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUgPSBudWxscHRyOworCisgICAgcmV0dXJu
IHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudCgqZmlyc3RMaW5lRWxlbWVu
dCwgeyBQc2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIHJlc29sdXRpb25Db250ZXh0KTsKK30KKwogUmVz
b2x1dGlvbkNvbnRleHQgVHJlZVJlc29sdmVyOjptYWtlUmVzb2x1dGlvbkNvbnRleHQoKQogewog
ICAgIHJldHVybiB7CkBAIC0zMjIsMjAgKzQyNCw0MyBAQCBSZXNvbHV0aW9uQ29udGV4dCBUcmVl
UmVzb2x2ZXI6Om1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxl
bQogICAgIH07CiB9CiAKLWNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJv
eFN0eWxlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbkNvbnRleHQ+IFRyZWVSZXNv
bHZlcjo6bWFrZVJlc29sdXRpb25Db250ZXh0Rm9ySW5oZXJpdGVkRmlyc3RMaW5lKGNvbnN0IEVs
ZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUsIGNvbnN0IFJlbmRlclN0eWxlJiBpbmhlcml0U3R5
bGUpCit7CisgICAgaWYgKCFzY29wZSgpLnJlc29sdmVyLT51c2VzRmlyc3RMaW5lUnVsZXMoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gcGFyZW50Rmlyc3RMaW5lU3R5bGUgPSBp
bmhlcml0U3R5bGUuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSk7Cisg
ICAgaWYgKCFwYXJlbnRGaXJzdExpbmVTdHlsZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IC8vIEZpcnN0IGxpbmUgc3R5bGUgZm9yIGlubGluZXMgaXMgbWFkZSBieSBpbmhlcml0aW5nIGZy
b20gcGFyZW50IGZpcnN0IGxpbmUgc3R5bGUuCisgICAgcmV0dXJuIFJlc29sdXRpb25Db250ZXh0
IHsKKyAgICAgICAgcGFyZW50Rmlyc3RMaW5lU3R5bGUsCisgICAgICAgIHBhcmVudEJveFN0eWxl
Rm9yUHNldWRvRWxlbWVudChlbGVtZW50VXBkYXRlKSwKKyAgICAgICAgbV9kb2N1bWVudEVsZW1l
bnRTdHlsZS5nZXQoKSwKKyAgICAgICAgJnNjb3BlKCkuc2VsZWN0b3JNYXRjaGluZ1N0YXRlCisg
ICAgfTsKK30KKworYXV0byBUcmVlUmVzb2x2ZXI6OmJveEdlbmVyYXRpbmdQYXJlbnQoKSBjb25z
dCAtPiBjb25zdCBQYXJlbnQqCiB7CiAgICAgLy8gJ2Rpc3BsYXk6IGNvbnRlbnRzJyBkb2Vzbid0
IGdlbmVyYXRlIGJveGVzLgotICAgIGZvciAoYXV0byBpID0gbV9wYXJlbnRTdGFjay5zaXplKCk7
IGktLTspIHsKLSAgICAgICAgYXV0byYgcGFyZW50ID0gbV9wYXJlbnRTdGFja1tpXTsKKyAgICBm
b3IgKGF1dG8mIHBhcmVudCA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fcGFyZW50U3RhY2spKSB7CiAg
ICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlz
cGxheSgpICE9IERpc3BsYXlUeXBlOjpDb250ZW50cykKLSAgICAgICAgICAgIHJldHVybiAmcGFy
ZW50LnN0eWxlOworICAgICAgICAgICAgcmV0dXJuICZwYXJlbnQ7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCitjb25zdCBSZW5kZXJT
dHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSgpIGNvbnN0Cit7CisgICAgYXV0byog
cGFyZW50ID0gYm94R2VuZXJhdGluZ1BhcmVudCgpOworICAgIHJldHVybiBwYXJlbnQgPyAmcGFy
ZW50LT5zdHlsZSA6IG51bGxwdHI7Cit9CisKIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2
ZXI6OnBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBkYXRlJiBl
bGVtZW50VXBkYXRlKSBjb25zdAogewogICAgIHN3aXRjaCAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+
ZGlzcGxheSgpKSB7CkBAIC01NTYsNiArNjgxLDkgQEAgdm9pZCBUcmVlUmVzb2x2ZXI6OnJlc29s
dmVDb21wb3NlZFRyZWUoKQogICAgICAgICAgICAgICAgIG1fdXBkYXRlLT5hZGRUZXh0KHRleHQs
IHBhcmVudC5lbGVtZW50LCBXVEZNb3ZlKHRleHRVcGRhdGUpKTsKICAgICAgICAgICAgIH0KIAor
ICAgICAgICAgICAgaWYgKCF0ZXh0LmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRN
TFNwYWNlPigpKQorICAgICAgICAgICAgICAgIHBhcmVudC5yZXNvbHZlZEZpcnN0Qm94R2VuZXJh
dGluZ0NoaWxkID0gdHJ1ZTsKKwogICAgICAgICAgICAgdGV4dC5zZXRIYXNWYWxpZFN0eWxlKCk7
CiAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTYxMCw2ICs3MzgsOSBAQCB2b2lkIFRyZWVSZXNvbHZlcjo6cmVz
b2x2ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgIGlmICghbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVl
dCkKICAgICAgICAgICAgIG1fZGlkU2VlUGVuZGluZ1N0eWxlc2hlZXQgPSBoYXNMb2FkaW5nU3R5
bGVzaGVldChtX2RvY3VtZW50LnN0eWxlU2NvcGUoKSwgZWxlbWVudCwgIXNob3VsZEl0ZXJhdGVD
aGlsZHJlbik7CiAKKyAgICAgICAgaWYgKHN0eWxlICYmIGdlbmVyYXRlc0JveCgqc3R5bGUpKQor
ICAgICAgICAgICAgcGFyZW50LnJlc29sdmVkRmlyc3RCb3hHZW5lcmF0aW5nQ2hpbGQgPSB0cnVl
OworCiAgICAgICAgIGlmICghc2hvdWxkSXRlcmF0ZUNoaWxkcmVuKSB7CiAgICAgICAgICAgICBp
dC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCmluZGV4IGU4MGFiMjczMDVj
MmFkZjEzYWJkZWZmNDk1ZTE0OTI0NzBjNjA1NDAuLjgwNDVhYjExZTY2MzczNzM4MTA2NmUwMzM3
ZjRkZWU2MTNhMTk1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJl
ZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
aApAQCAtNjksNyArNjksOCBAQCBwcml2YXRlOgogICAgIHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRl
LCBEZXNjZW5kYW50c1RvUmVzb2x2ZT4gcmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYpOwogCiAgICAg
c3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0eWxlYWJsZSYsIENoYW5nZSwgY29uc3QgUmVz
b2x1dGlvbkNvbnRleHQmKTsKLSAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IHJlc29s
dmVQc2V1ZG9TdHlsZShFbGVtZW50JiwgY29uc3QgRWxlbWVudFVwZGF0ZSYsIFBzZXVkb0lkKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IHJlc29sdmVQc2V1ZG9FbGVtZW50KEVs
ZW1lbnQmLCBQc2V1ZG9JZCwgY29uc3QgRWxlbWVudFVwZGF0ZSYpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUluaGVyaXRlZEZpcnN0TGluZVBzZXVkb0VsZW1lbnQo
RWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUmKTsKIAogICAgIHN0cnVjdCBTY29wZSA6IFJl
ZkNvdW50ZWQ8U2NvcGU+IHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
X1dJVEhfSEVBUF9JREVOVElGSUVSKFRyZWVSZXNvbHZlclNjb3BlKTsKQEAgLTkwLDYgKzkxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgQ2hhbmdlIGNoYW5nZSB7IENoYW5nZTo6Tm9uZSB9OwogICAg
ICAgICBEZXNjZW5kYW50c1RvUmVzb2x2ZSBkZXNjZW5kYW50c1RvUmVzb2x2ZSB7IERlc2NlbmRh
bnRzVG9SZXNvbHZlOjpOb25lIH07CiAgICAgICAgIGJvb2wgZGlkUHVzaFNjb3BlIHsgZmFsc2Ug
fTsKKyAgICAgICAgYm9vbCByZXNvbHZlZEZpcnN0Qm94R2VuZXJhdGluZ0NoaWxkIHsgZmFsc2Ug
fTsKIAogICAgICAgICBQYXJlbnQoRG9jdW1lbnQmKTsKICAgICAgICAgUGFyZW50KEVsZW1lbnQm
LCBjb25zdCBSZW5kZXJTdHlsZSYsIENoYW5nZSwgRGVzY2VuZGFudHNUb1Jlc29sdmUpOwpAQCAt
MTEyLDYgKzExNCw4IEBAIHByaXZhdGU6CiAKICAgICBSZXNvbHV0aW9uQ29udGV4dCBtYWtlUmVz
b2x1dGlvbkNvbnRleHQoKTsKICAgICBSZXNvbHV0aW9uQ29udGV4dCBtYWtlUmVzb2x1dGlvbkNv
bnRleHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUmKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlc29sdXRpb25Db250ZXh0PiBtYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0
ZWRGaXJzdExpbmUoY29uc3QgRWxlbWVudFVwZGF0ZSYsIGNvbnN0IFJlbmRlclN0eWxlJiBpbmhl
cml0U3R5bGUpOworICAgIGNvbnN0IFBhcmVudCogYm94R2VuZXJhdGluZ1BhcmVudCgpIGNvbnN0
OwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSgpIGNvbnN0OwogICAgIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZUZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxl
bWVudFVwZGF0ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTJjYWEwZWRlMzFiN2YxMTkyMGQ5ZDY1NGEx
NDkxN2YxOGI5OGFhOC4uMTZiN2VmNGJiMWY0NmY5ZGM4ZWRhYTJiNzdjYTFkM2I0NjZjNjJkYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTA1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3QtbGluZSBzdHlsZSBlYWdlcmx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzczNjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYmFz
ZWxpbmUtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAzLTAzICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViR0wgY29udGV4dCBjb3VudCBpcyBub3QgbGlt
aXRlZCBmb3IgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE1NWQyZmJjOGQxMzMw
NjMzN2M3NGQ0ZmY2Yzg1MDRhYzc0MjViZTAuLjdhNjA0NmM5MDNkYmNiNDNmZGRkNWMxYTlkYWE4
ZWM2NTRjNWY2ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDQwOSwxMSArNDQwOSw3IEBAIHdl
YmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXBzZXVkby9maXJzdC1sZXR0ZXItCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLWV4Y2x1ZGUtaW5s
aW5lLWNoaWxkLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmly
c3QtbGV0dGVyLWV4Y2x1ZGUtaW5saW5lLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLWxpc3QtaXRlbS1keW5hbWljLTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS1jaGFuZ2UtaW5saW5lLWNvbG9y
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLWNoYW5nZS1p
bmxpbmUtY29sb3ItbmVzdGVkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9m
aXJzdC1saW5lLW9wYWNpdHktMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVk
by9maXJzdC1saW5lLXdpdGgtYmVmb3JlLWFmdGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXBzZXVkby9maXJzdC1saW5lLXdpdGgtb3V0LW9mLWZsb3cuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHNldWRvL2dyYW1tYXItZXJyb3ItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8yMDQxNjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXBzZXVkby9tYXJrZXItY29udGVudC0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIwNDE2MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtcHNldWRvL21hcmtlci1jb250ZW50LTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCkBAIC00NDQwLDcgKzQ0MzYsNiBAQCB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vbWFya2VyLWxpc3Qtcwogd2Via2l0
Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNl
dWRvL21hcmtlci11bmljb2RlLWJpZGktZGVmYXVsdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wc2V1ZG8vbWFya2VyLXVuaWNvZGUtYmlkaS1ub3JtYWwuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHNldWRvL3NwZWxsaW5nLWVycm9yLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjMwOTY0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS1hbmQtcGxhY2Vob2xkZXIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjE0NDYyIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zY29waW5nL2hvc3QtY29udGV4dC1zcGVjaWZpY2l0eS0wMDEu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2NvcGluZy9ob3N0LWNvbnRleHQtc3BlY2lm
aWNpdHktMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTQ5MDcsMTAgKzQ5MDIsNyBA
QCB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLQogd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxldHRlci1wdW5jdHVh
dGlvbi1keW5hbWljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAw
MDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1s
ZXR0ZXItc2tpcC1lbXB0eS1zcGFuLW5lc3RlZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wc2V1ZG8vZmlyc3QtbGV0dGVyLXNraXAtZW1wdHktc3Bhbi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS13aXRoLWlubGluZS1ibG9jay1iZWZvcmUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxpbmUtd2l0aC1pbmxpbmUt
YmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxpbmUtd2l0
aC1vdXQtb2YtZmxvdy1hbmQtbmVzdGVkLWRpdi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wc2V1ZG8vZmlyc3QtbGluZS13aXRoLW91dC1vZi1mbG93LWFuZC1uZXN0ZWQtc3Bhbi5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZ3JhbW1hci1zcGVsbGluZy1lcnJvcnMt
MDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9ncmFtbWFyLXNwZWxsaW5n
LWVycm9ycy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDAw
NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2hpZ2hsaWdo
dC1wYWludGluZy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUt
ZXhwZWN0ZWQudHh0CmluZGV4IDI5NGFiNTg2NTBiMWFiYWVmNjM5M2U1ZWQwMzFkNDNmMzhhOTYx
MDcuLmUxMTA0ODAxMmU4M2M2NDBkOTE1ZTRmM2MwNTI3ZDhlZjAwNDFmZjcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2lucHV0LWJhc2VsaW5lLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9pbnB1dC1i
YXNlbGluZS1leHBlY3RlZC50eHQKQEAgLTEyLDEwICsxMiwxMCBAQCBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICAgICAgdGV4dCBydW4gYXQgKDE5Niw0MSkgd2lkdGggNDIwOiAiVGhp
cyB0ZXh0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlIGJvdHRvbSBvZiB0aGUgdGV4dCBpbiB0aGUg
dGV4dCBmaWVsZC4iCiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg2MTYsNDEpIHNpemUgMHgxNwog
ICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCw2NCkgc2l6ZSAweDE3Ci0gICAgICBSZW5kZXJUZXh0
Q29udHJvbCB7SU5QVVR9IGF0ICgyLDg0KSBzaXplIDE5MngxMzAgW2JnY29sb3I9I0ZGRkZGRl0g
W2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMTk2LDE3Mikgc2l6ZSA0MjB4MTcKLSAgICAgICAgdGV4dCBydW4gYXQgKDE5NiwxNzIpIHdp
ZHRoIDQyMDogIlRoaXMgdGV4dCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZSBib3R0b20gb2YgdGhl
IHRleHQgaW4gdGhlIHRleHQgZmllbGQuIgorICAgICAgUmVuZGVyVGV4dENvbnRyb2wge0lOUFVU
fSBhdCAoMiw4NCkgc2l6ZSAxOTJ4MjQgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBp
bnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTk2LDg3KSBzaXpl
IDQyMHgxNworICAgICAgICB0ZXh0IHJ1biBhdCAoMTk2LDg3KSB3aWR0aCA0MjA6ICJUaGlzIHRl
eHQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUgYm90dG9tIG9mIHRoZSB0ZXh0IGluIHRoZSB0ZXh0
IGZpZWxkLiIKIGxheWVyIGF0ICgxMyw0OSkgc2l6ZSAxODZ4MTgKICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDMsMykgc2l6ZSAxODZ4MTgKLWxheWVyIGF0ICgxMyw5NSkgc2l6ZSAxODZ4MTI0Ci0g
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTg2eDEyNAorbGF5ZXIgYXQgKDEzLDk1
KSBzaXplIDE4NngxOAorICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDE4NngxOApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYmFz
ZWxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMv
aW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0CmluZGV4IDk0YWVjNTAwOGIwNDM3ZmNlNTBhYzQy
YmYyMmJiMGY5ZDliNzZlNzUuLjQxYjgwZjhhNTgyNGNjYWEzZTZkOWY5ZWQxN2UwNWMyMjYxZjBj
ZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0
LWJhc2VsaW5lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9mb3Jtcy9pbnB1dC1iYXNlbGluZS1leHBlY3RlZC50eHQKQEAgLTEyLDEwICsxMiwxMCBAQCBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgdGV4dCBydW4gYXQgKDE1MCwzOCkg
d2lkdGggNDMxOiAiVGhpcyB0ZXh0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlIGJvdHRvbSBvZiB0
aGUgdGV4dCBpbiB0aGUgdGV4dCBmaWVsZC4iCiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg1ODAs
MzgpIHNpemUgMXgxOAogICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCw1OSkgc2l6ZSAweDE4Ci0g
ICAgICBSZW5kZXJUZXh0Q29udHJvbCB7SU5QVVR9IGF0ICgyLDc5KSBzaXplIDE0N3gxMzIgW2Jn
Y29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KLSAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMTUwLDE3MSkgc2l6ZSA0MzF4MTgKLSAgICAgICAgdGV4dCBydW4g
YXQgKDE1MCwxNzEpIHdpZHRoIDQzMTogIlRoaXMgdGV4dCBzaG91bGQgbGluZSB1cCB3aXRoIHRo
ZSBib3R0b20gb2YgdGhlIHRleHQgaW4gdGhlIHRleHQgZmllbGQuIgorICAgICAgUmVuZGVyVGV4
dENvbnRyb2wge0lOUFVUfSBhdCAoMiw3OSkgc2l6ZSAxNDd4MTkgW2JnY29sb3I9I0ZGRkZGRl0g
W2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMTUwLDc5KSBzaXplIDQzMXgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMTUwLDc5KSB3aWR0
aCA0MzE6ICJUaGlzIHRleHQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUgYm90dG9tIG9mIHRoZSB0
ZXh0IGluIHRoZSB0ZXh0IGZpZWxkLiIKIGxheWVyIGF0ICgxMyw0OSkgc2l6ZSAxNDF4MTMKICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxNDF4MTMKLWxheWVyIGF0ICgxMyw5MCkg
c2l6ZSAxNDF4MTI2Ci0gIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTQxeDEyNgor
bGF5ZXIgYXQgKDEzLDkwKSBzaXplIDE0MXgxMworICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywz
KSBzaXplIDE0MXgxMwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453907</attachid>
            <date>2022-03-05 05:34:21 -0800</date>
            <delta_ts>2022-03-05 05:49:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220305153420.patch</filename>
            <type>text/plain</type>
            <size>41117</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM0Zjg2NWEzNWQxMzUx
OTgyM2RmNGFkY2EyY2IxNDhjZWNjOTNhZi4uNWYxOTI0YTA4NTdjYjE5NzU0ZTY1MmU1MWI0OWI1
ZjNmYTFkMGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAzLTA1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDb21wdXRlIDo6Zmlyc3QtbGluZSBzdHlsZSBkdXJpbmcgc3R5bGUgcmVzb2x1
dGlvbiBpbnN0ZWFkIG9mIGxhemlseSBpbiByZW5kZXIgdHJlZS4KKyAgICAgICAgVGhpcyBmaXhl
cyBidWdzIGFuZCBjbGFyaWZpZXMgdGhlIGFyY2hpdGVjdHVyZSBpbiB3YXlzIHRoYXQgYSBoZWxw
ZnVsIGZvciBmZWF0dXJlcyBsaWtlCisgICAgICAgIGNvbnRhaW5lciBxdWVyaWVzLgorCisgICAg
ICAgIEFzIGEgc2lkZSBlZmZlY3QgaXQgYWxzbyBtYWtlcyA6OmZpcnN0LWxpbmUgc3R5bGUgYW5p
bWF0YWJsZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmxvY2sgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OlJlbmRl
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Zmlyc3RMaW5lU3R5
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVT
dHlsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpp
bnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0TGluZUJsb2NrIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UnVieVJ1bjo6Zmlyc3RMaW5lQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpmaXJzdExpbmVCbG9jayBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
ZmluZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldENh
Y2hlZFBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlc0JveCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1RleHQ6OmZpcnN0TGluZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToK
KyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlSW5oZXJpdGVkRmlyc3RMaW5lUHNl
dWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjptYWtl
UmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0ZWRGaXJzdExpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Ym94R2VuZXJhdGluZ1BhcmVudCBjb25zdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlQ29t
cG9zZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKwogMjAyMi0wMy0wMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYkdMIGNvbnRleHQgY291bnQgaXMgbm90IGxpbWl0ZWQgZm9yIEdQVSBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA1MmE1
YTU0YjJmNjczMTNmY2ExYzc1YzlkNDFiODcxMTMyOTYxZjViLi41ZTZkZjBiZDYwMGQzMGQ1ZGU5
NWMxM2ZkMDkxM2Q0YmQ1MTVlZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTI1NzEsMjcgKzI1NzEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW5k
ZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KQog
ICAgIHJldHVybiByZW5kZXJFbGVtZW50LmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgcmVuZGVyRWxl
bWVudC5pc1JlbmRlckJ1dHRvbigpOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmZp
cnN0TGluZUJsb2NrKCkgY29uc3QKLXsKLSAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2sg
PSBjb25zdF9jYXN0PFJlbmRlckJsb2NrKj4odGhpcyk7Ci0gICAgYm9vbCBoYXNQc2V1ZG8gPSBm
YWxzZTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBoYXNQc2V1ZG8gPSBmaXJzdExpbmVC
bG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKLSAgICAg
ICAgaWYgKGhhc1BzZXVkbykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5kZXJFbGVt
ZW50KiBwYXJlbnRCbG9jayA9IGZpcnN0TGluZUJsb2NrLT5wYXJlbnQoKTsKLSAgICAgICAgaWYg
KGZpcnN0TGluZUJsb2NrLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IGZpcnN0TGluZUJs
b2NrLT5pc0Zsb2F0aW5nKCkKLSAgICAgICAgICAgIHx8ICFwYXJlbnRCbG9jayB8fCBwYXJlbnRC
bG9jay0+Zmlyc3RDaGlsZCgpICE9IGZpcnN0TGluZUJsb2NrIHx8ICFpc1JlbmRlckJsb2NrRmxv
d09yUmVuZGVyQnV0dG9uKCpwYXJlbnRCbG9jaykpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZmlyc3RMaW5lQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4ocGFyZW50QmxvY2spOwot
ICAgIH0gCi0gICAgCi0gICAgaWYgKCFoYXNQc2V1ZG8pCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIHJldHVybiBmaXJzdExpbmVCbG9jazsKLX0KLQogc3RhdGljIGlubGluZSBS
ZW5kZXJCbG9jayogZmluZEZpcnN0TGV0dGVyQmxvY2soUmVuZGVyQmxvY2sqIHN0YXJ0KQogewog
ICAgIFJlbmRlckJsb2NrKiBmaXJzdExldHRlckJsb2NrID0gc3RhcnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDExZjdmZWM3MTY5Y2JiNGY4ZDZlMzc1YjJiNDM2
NTllODgzNjRiNWUuLjIyMGZkNzQxMzA3OTExNDAzODVkMGQyZDUwNmE2MzQ0MGVjZGNjMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zODMsOSArMzgzLDYgQEAg
cHVibGljOgogICAgIAogICAgIC8vIEFkanVzdCBmcm9tIHBhaW50aW5nIG9mZnNldHMgdG8gdGhl
IGxvY2FsIGNvb3JkcyBvZiB0aGlzIHJlbmRlcmVyCiAgICAgdm9pZCBvZmZzZXRGb3JDb250ZW50
cyhMYXlvdXRQb2ludCYpIGNvbnN0OwotICAgIC8vIE9idGFpbnMgdGhlIG5lYXJlc3QgZW5jbG9z
aW5nIGJsb2NrIChpbmNsdWRpbmcgdGhpcyBibG9jaykgdGhhdCBjb250cmlidXRlcyBhIGZpcnN0
LWxpbmUgc3R5bGUgdG8gb3VyIGlubGluZQotICAgIC8vIGNoaWxkcmVuLgotICAgIFJlbmRlckJs
b2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZW51bSBGaWVsZHNl
dEZpbmRMZWdlbmRPcHRpb24geyBGaWVsZHNldElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3csIEZp
ZWxkc2V0SW5jbHVkZUZsb2F0aW5nT3JPdXRPZkZsb3cgfTsKICAgICBSZW5kZXJCb3gqIGZpbmRG
aWVsZHNldExlZ2VuZChGaWVsZHNldEZpbmRMZWdlbmRPcHRpb24gPSBGaWVsZHNldElnbm9yZUZs
b2F0aW5nT3JPdXRPZkZsb3cpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IGZhYzE4YmFjZGMwMDQ3MjIxMWRlNTVlMTYxZTMzNTc1MWNiZDFi
MjEuLmQyNmYzNDgxODA2NmI3OWE5YjdhY2M5YTk2OGI1ZjNjODJkZWZlZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNiBAQCBp
bmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50
T3JEb2N1bWVudCwgUmVuZGVyU3R5bAogICAgICwgbV9oYXNDb250aW51YXRpb25DaGFpbk5vZGUo
ZmFsc2UpCiAgICAgLCBtX2lzQ29udGludWF0aW9uKGZhbHNlKQogICAgICwgbV9pc0ZpcnN0TGV0
dGVyKGZhbHNlKQotICAgICwgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKGZhbHNlKQog
ICAgICwgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkJlZm9yZVF1aXJrKGZhbHNlKQogICAgICwgbV9y
ZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsoZmFsc2UpCiAgICAgLCBtX3JlbmRlckJsb2Nr
U2hvdWxkRm9yY2VSZWxheW91dENoaWxkcmVuKGZhbHNlKQpAQCAtMjI0LDYyICsyMjMsMjEgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcihFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50Ojpjb21wdXRlRmlyc3RMaW5lU3R5
bGUoKSBjb25zdAotewotICAgIEFTU0VSVCh2aWV3KCkudXNlc0ZpcnN0TGluZVJ1bGVzKCkpOwot
Ci0gICAgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZSA9IGlzQmVmb3Jl
T3JBZnRlckNvbnRlbnQoKSA/ICpwYXJlbnQoKSA6IGNvbnN0X2Nhc3Q8UmVuZGVyRWxlbWVudCY+
KCp0aGlzKTsKLQotICAgIGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzUmVuZGVyQmxv
Y2tGbG93KCkgfHwgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc1JlbmRlckJ1dHRvbigpKSB7
Ci0gICAgICAgIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jayA9IHJlbmRlcmVyRm9yRmlyc3RM
aW5lU3R5bGUuZmlyc3RMaW5lQmxvY2soKTsKLSAgICAgICAgaWYgKCFmaXJzdExpbmVCbG9jaykK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHls
ZSA9IGZpcnN0TGluZUJsb2NrLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lLCAmc3R5bGUoKSk7Ci0gICAgICAgIGlmICghZmlyc3RMaW5lU3R5bGUpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
Zmlyc3RMaW5lU3R5bGUpOwotICAgIH0KLQotICAgIGlmICghcmVuZGVyZXJGb3JGaXJzdExpbmVT
dHlsZS5pc1JlbmRlcklubGluZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1
dG8mIHBhcmVudFN0eWxlID0gcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5wYXJlbnQoKS0+Zmly
c3RMaW5lU3R5bGUoKTsKLSAgICBpZiAoJnBhcmVudFN0eWxlID09ICZyZW5kZXJlckZvckZpcnN0
TGluZVN0eWxlLnBhcmVudCgpLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzQW5vbnltb3VzKCkpIHsKLSAgICAg
ICAgYXV0byogdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlDb250ZW50c1BhcmVudCA9IFJlbmRlclRl
eHQ6OmZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRhdGUocmVuZGVyZXJG
b3JGaXJzdExpbmVTdHlsZSk7Ci0gICAgICAgIGlmICghdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlD
b250ZW50c1BhcmVudCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRv
KiBjb21wb3NlZFRyZWVQYXJlbnRFbGVtZW50ID0gdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlDb250
ZW50c1BhcmVudC0+dGV4dE5vZGUoKS0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCk7Ci0g
ICAgICAgIGlmICghY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJlbnRFbGVt
ZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQYXJlbnRF
bGVtZW50LCB7ICZwYXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKLSAgICAgICAgQVNTRVJUKHN0
eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKTsKLQotICAgICAgICAvLyBX
ZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxzcGFuPiBhcm91bmQgdGhlIHRleHQg
bm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVyaXRhbmNlLgotICAgICAgICBhdXRv
IGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwotICAgICAgICBmaXJz
dExpbmVTdHlsZS0+aW5oZXJpdEZyb20oKnN0eWxlKTsKLSAgICAgICAgcmV0dXJuIGZpcnN0TGlu
ZVN0eWxlOwotICAgIH0KLQotICAgIHJldHVybiByZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmVs
ZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZWxlbWVudCgpLCB7ICZw
YXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKLX0KLQogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRl
ckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2Vz
Rmlyc3RMaW5lUnVsZXMoKSkKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGp1
c3Qgc2V0IGFub255bW91cyBibG9jayBmaXJzdC1saW5lIHN0eWxlcyBjb3JyZWN0bHkuCisgICAg
aWYgKGlzQW5vbnltb3VzQmxvY2soKSkgeworICAgICAgICBpZiAoIXByZXZpb3VzSW5GbG93U2li
bGluZygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSBwYXJlbnQo
KS0+c3R5bGUoKS5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gKmZpcnN0TGluZVN0eWxlOworICAgICAgICB9CiAgICAgICAg
IHJldHVybiBzdHlsZSgpOwotCi0gICAgaWYgKCFtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RMaW5lU3R5
bGUpIHsKLSAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IGNvbXB1dGVGaXJzdExpbmVTdHls
ZSgpOwotICAgICAgICBpZiAoZmlyc3RMaW5lU3R5bGUgfHwgaGFzUmFyZURhdGEoKSkKLSAgICAg
ICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyRWxlbWVudCY+KCp0aGlzKS5lbnN1cmVSYXJlRGF0YSgp
LmNhY2hlZEZpcnN0TGluZVN0eWxlID0gV1RGTW92ZShmaXJzdExpbmVTdHlsZSk7Ci0gICAgICAg
IG1faGFzVmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IHRydWU7CiAgICAgfQogCi0gICAgcmV0
dXJuIChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUpID8g
KnJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUgOiBzdHlsZSgpOworICAgIGlmIChhdXRv
KiBmaXJzdExpbmVTdHlsZSA9IHN0eWxlKCkuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6
OkZpcnN0TGluZSkpCisgICAgICAgIHJldHVybiAqZmlyc3RMaW5lU3R5bGU7CisKKyAgICByZXR1
cm4gc3R5bGUoKTsKIH0KIAogU3R5bGVEaWZmZXJlbmNlIFJlbmRlckVsZW1lbnQ6OmFkanVzdFN0
eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgT3B0aW9uU2V0PFN0eWxlRGlmZmVy
ZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eT4gY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMp
IGNvbnN0CkBAIC04MDMsMTYgKzc2MSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZW5kZXJlckhh
c0JhY2tncm91bmQoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIHJl
bmRlcmVyICYmIHJlbmRlcmVyLT5oYXNCYWNrZ3JvdW5kKCk7CiB9CiAKLXZvaWQgUmVuZGVyRWxl
bWVudDo6aW52YWxpZGF0ZUNhY2hlZEZpcnN0TGluZVN0eWxlKCkKLXsKLSAgICBpZiAoIW1faGFz
VmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faGFzVmFs
aWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IGZhbHNlOwotICAgIC8vIEludmFsaWRhdGUgdGhlIHN1
YnRyZWUgYXMgZGVzY2VuZGFudCdzIGZpcnN0IGxpbmUgc3R5bGUgbWF5IGRlcGVuZCBvbiBhbmNl
c3RvcidzLgotICAgIGZvciAoYXV0byYgZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJl
bmRlckVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgZGVzY2VuZGFudC5tX2hhc1ZhbGlkQ2FjaGVk
Rmlyc3RMaW5lU3R5bGUgPSBmYWxzZTsKLX0KLQogdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdp
bGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MoKS5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250
cygpIHx8IG5ld1N0eWxlLmZvbnREZXNjcmlwdGlvbigpLnNob3VsZEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKCkgPT0gQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vKTsKQEAgLTg4Myw5ICs4MzEs
NiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ldwogICAgICAgICAgICAgY2xlYXJQb3NpdGlvbmVk
U3RhdGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChuZXdTdHlsZS5oYXNQc2V1ZG9TdHls
ZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSB8fCBvbGRTdHlsZS0+aGFzUHNldWRvU3R5bGUoUHNldWRv
SWQ6OkZpcnN0TGluZSkpCi0gICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5
bGUoKTsKLQogICAgICAgICBzZXRIb3Jpem9udGFsV3JpdGluZ01vZGUodHJ1ZSk7CiAgICAgICAg
IHNldEhhc1Zpc2libGVCb3hEZWNvcmF0aW9ucyhmYWxzZSk7CiAgICAgICAgIHNldEhhc05vblZp
c2libGVPdmVyZmxvdyhmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAppbmRleCA2ZTk3NWQzZDA3MjhjNjU5ODIxNjQ5ZjBmNTc4MGJmMDYwYWVhYjM2Li41MWM1
NTJjYmQ5ZTdmZDJiN2NiZTlkMTJkY2ZhM2YxMzFmZjdkZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTM1MSw4ICszNTEsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiwgY29uc3QgU2hhcGVWYWx1
ZSopOwogCiAgICAgU3R5bGVEaWZmZXJlbmNlIGFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURp
ZmZlcmVuY2UsIE9wdGlvblNldDxTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dHk+KSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNvbXB1dGVGaXJz
dExpbmVTdHlsZSgpIGNvbnN0OwotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlZEZpcnN0TGluZVN0
eWxlKCk7CiAKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsIHsgcmV0dXJu
ICFpc1Zpc2libGVJblZpZXdwb3J0KCk7IH0KICAgICBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIGlt
YWdlRnJhbWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0KSBmaW5hbDsKQEAgLTM4MSw3ICszNzksNiBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1faGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlIDogMTsKICAgICB1bnNp
Z25lZCBtX2lzQ29udGludWF0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2lzRmlyc3RMZXR0ZXIg
OiAxOwotICAgIG11dGFibGUgdW5zaWduZWQgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxl
IDogMTsKIAogICAgIHVuc2lnbmVkIG1fcmVuZGVyQmxvY2tIYXNNYXJnaW5CZWZvcmVRdWlyayA6
IDE7CiAgICAgdW5zaWduZWQgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsgOiAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAxMGIwZDNjZWE2
NzZhODlkMGIxZGYxMWU3MzI3ZTM0YjUzYTQ0NmZjLi5kY2E3M2U4OTVkM2RhYWE1ZDcwMTliYTQ1
NDI4NTJjYjkzYTdmMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtNDkxLDExICs0OTEsNiBAQCBSZW5kZXJCb3gqIFJlbmRlck9iamVjdDo6ZW5jbG9z
aW5nU2Nyb2xsYWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCkgY29uc3QKICAgICByZXR1cm4gZG9j
dW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkt
PnJlbmRlckJveCgpIDogbnVsbHB0cjsKIH0KIAotUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6
Zmlyc3RMaW5lQmxvY2soKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwotfQotCiBzdGF0
aWMgaW5saW5lIGJvb2wgb2JqZWN0SXNSZWxheW91dEJvdW5kYXJ5KGNvbnN0IFJlbmRlckVsZW1l
bnQqIG9iamVjdCkKIHsKICAgICAvLyBGSVhNRTogSW4gZnV0dXJlIGl0IG1heSBiZSBwb3NzaWJs
ZSB0byBicm9hZGVuIHRoZXNlIGNvbmRpdGlvbnMgaW4gb3JkZXIgdG8gaW1wcm92ZSBwZXJmb3Jt
YW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBmMGVlYWFl
Yzk4NGQ4M2I2YWQ2ZDE5YWVlOTY1OWUzYjM2M2Y0ZmU3Li4zY2RkMTgwMWQyNjAxOTg4ZTQyZWQ3
YjJlYWZmOGRmMzhlMTNmMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCkBAIC0xNzMsOSArMTczLDYgQEAgcHVibGljOgogCiAgICAgLy8gQ3JlYXRlcyBhIHNjb3Bl
IHdoZXJlIHRoaXMgb2JqZWN0IHdpbGwgYXNzZXJ0IG9uIGNhbGxzIHRvIHNldE5lZWRzTGF5b3V0
KCkuCiAgICAgY2xhc3MgU2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVuU2NvcGU7Ci0KLSAgICAvLyBP
YnRhaW5zIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBibG9jayAoaW5jbHVkaW5nIHRoaXMgYmxvY2sp
IHRoYXQgY29udHJpYnV0ZXMgYSBmaXJzdC1saW5lIHN0eWxlIHRvIG91ciBpbmxpbmUgY2hpbGRy
ZW4uCi0gICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdDsKICAg
ICAKICAgICAvLyBSZW5kZXJPYmplY3QgdHJlZSBtYW5pcHVsYXRpb24KICAgICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTk0Niw3ICs5NDMsNiBAQCBwcml2
YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChwYWludENvbnRhaW5tZW50QXBwbGll
cywgUGFpbnRDb250YWlubWVudEFwcGxpZXMpOwogCiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxl
bWVudAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNhY2hlZEZpcnN0TGlu
ZVN0eWxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4g
cmVmZXJlbmNlZFNWR1Jlc291cmNlczsKICAgICAgICAgV2Vha1B0cjxSZW5kZXJCbG9ja0Zsb3c+
IGJhY2tkcm9wUmVuZGVyZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5UnVuLmNwcAppbmRleCA2YmRhNjhkMDFkNGMxOGY3Y2MxNGFlN2UxOGUwMDMxMjM2MGI5
NjBkLi40NjExOWM1OWY2MjgyZTk5ZjI1NTE1ODYzZDQyMzcxZWE1Yjc3NjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCkBAIC04NSwxMSArODUsNiBAQCBS
ZW5kZXJSdWJ5QmFzZSogUmVuZGVyUnVieVJ1bjo6cnVieUJhc2UoKSBjb25zdAogICAgIHJldHVy
biBjaGlsZCAmJiBjaGlsZC0+aXNSdWJ5QmFzZSgpID8gc3RhdGljX2Nhc3Q8UmVuZGVyUnVieUJh
c2UqPihjaGlsZCkgOiBudWxscHRyOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyUnVieVJ1bjo6
Zmlyc3RMaW5lQmxvY2soKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwotfQotCiBib29s
IFJlbmRlclJ1YnlSdW46OmlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQs
IGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QKIHsKICAgICByZXR1cm4gY2hpbGQuaXNJbmxpbmUo
KSB8fCBjaGlsZC5pc1J1YnlUZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlSdW4uaAppbmRleCBjMjg2NDljNjk1NWFiNTg2NDI2NmVhMmViMGYyMmQxN2VhYjc1N2ZjLi4z
NTg1MTk3OGMyNjhiYWIwOGY3MmMyNDRmOGZkYTUzZjRkMDM0ZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTU3LDggKzU3LDYgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGdldE92ZXJoYW5nKGJvb2wgZmlyc3RMaW5l
LCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIs
IGZsb2F0JiBzdGFydE92ZXJoYW5nLCBmbG9hdCYgZW5kT3ZlcmhhbmcpIGNvbnN0OwogCiAgICAg
c3RhdGljIFJlbmRlclB0cjxSZW5kZXJSdWJ5UnVuPiBzdGF0aWNDcmVhdGVSdWJ5UnVuKGNvbnN0
IFJlbmRlck9iamVjdCogcGFyZW50UnVieSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcAppbmRleCA3ZTMxODE5ZWE0ZTQ4MTQ2MjdjZDk2NzkxOTAxNjYyZGRiMTNlNGI1
Li41NTA3ZmVlYjYyMmViYzMxMzIyZmE5ZmY2YTRhMDU3ZDg0ZTMzMTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTE0ODYsMTEgKzE0ODYsNiBAQCBSZW5k
ZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQWZ0ZXIoY29uc3QgUmVuZGVyVGFibGVDZWxs
KiBjZWxsKSBjb25zdAogICAgIHJldHVybiBjZWxsLT5zZWN0aW9uKCktPnByaW1hcnlDZWxsQXQo
Y2VsbC0+cm93SW5kZXgoKSwgZWZmQ29sKTsKIH0KIAotUmVuZGVyQmxvY2sqIFJlbmRlclRhYmxl
OjpmaXJzdExpbmVCbG9jaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIExh
eW91dFVuaXQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2Vs
aW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGlu
ZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1
ZU9yQ29tcHV0ZShmaXJzdExpbmVCYXNlbGluZSgpLCBbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuaAppbmRleCA4N2YwYzdhZWQwMmJkMzVmNjc2OTQyODlmNDYyN2U2MDc5
MDRmNTM3Li5jNWUyYjU5M2YyNzZkOGMwMGU2ZTg3MzA3MGYxMjEwN2ViOTBmNjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMzA3LDggKzMwNyw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVkQ29sdW1ucygpOwogCiAgICAgdm9pZCBpbnZh
bGlkYXRlQ2FjaGVkQ29sdW1uT2Zmc2V0cygpOwotCi0gICAgUmVuZGVyQmxvY2sqIGZpcnN0TGlu
ZUJsb2NrKCkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgo
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDM2
NWQyZjlhMjljMGZhYTdhOWYwYWMwMzg4MjFlMGY4MTA1MzQ1ZTkuLjQwODc5MjkyNWNkOTU0NDZk
YTE5ZDY1MGNhNzExODQ2NGM5NjdmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKQEAgLTE4MjEsMTggKzE4MjEsNCBAQCB2b2lkIFJlbmRlclRleHQ6OnNldElubGlu
ZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoUmVuZGVySW5saW5lKiB3cmFwcGVyKQogICAgIG1f
aGFzSW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyA9IHRydWU7CiB9CiAKLVJlbmRlclRl
eHQqIFJlbmRlclRleHQ6OmZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRh
dGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCi17Ci0gICAgYXV0byogZmlyc3RDaGlsZCA9IHJl
bmRlcmVyLmZpcnN0Q2hpbGQoKTsKLSAgICBpZiAoIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0PigqZmlyc3RDaGlsZCk7Ci0gICAgaWYgKHRleHRSZW5kZXJlci5pbmxp
bmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzKCkgIT0gJnJlbmRlcmVyKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBBU1NFUlQodGV4dFJlbmRlcmVyLnRleHROb2RlKCkpOwotICAgIEFT
U0VSVChyZW5kZXJlci5maXJzdENoaWxkKCkgPT0gcmVuZGVyZXIubGFzdENoaWxkKCkpOwotICAg
IHJldHVybiAmdGV4dFJlbmRlcmVyOwotCi19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGFlMmU4NDZlMjUzZWZjNzQ3OWY3
ODc0N2VhNTk5NWM4ODdlNWUzYzkuLmY3YWMyNjkxYTQ1NzZlNmNkODJhNTIyOGY2ZDliZTliOGZi
NzFiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMTgxLDggKzE4
MSw2IEBAIHB1YmxpYzoKICAgICBSZW5kZXJJbmxpbmUqIGlubGluZVdyYXBwZXJGb3JEaXNwbGF5
Q29udGVudHMoKTsKICAgICB2b2lkIHNldElubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMo
UmVuZGVySW5saW5lKik7CiAKLSAgICBzdGF0aWMgUmVuZGVyVGV4dCogZmluZEJ5RGlzcGxheUNv
bnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZShSZW5kZXJFbGVtZW50Jik7Ci0KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWVhc3VyZVRleHRDYWxsYmFjaz4KICAgICBzdGF0aWMgZmxvYXQgbWVh
c3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShib29sIGN1cnJlbnRDaGFy
YWN0ZXJJc1NwYWNlLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCB3b3JkTGVuZ3RoLCBX
b3JkVHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBN
ZWFzdXJlVGV4dENhbGxiYWNrJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA1MTZhNGIxYjZiNzQwNTA3MTIxOGU0ZGZmNzUwMDll
ZTlkNmE0ZGJkLi41NDA5NTgwZTA2Mjc1YjM2MDU3M2MyYzcyNTI2NzlkMmFlMDYwOTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTQw
NSw5ICs0MDUsNiBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmdldENhY2hlZFBzZXVkb1N0
eWxlKFBzZXVkb0lkIHBpZCkgY29uc3QKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzIHx8
ICFtX2NhY2hlZFBzZXVkb1N0eWxlcy0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGlmIChzdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6Tm9uZSkgCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCiAgICAgZm9yIChhdXRvJiBwc2V1ZG9TdHlsZSA6ICptX2NhY2hlZFBzZXVk
b1N0eWxlcykgewogICAgICAgICBpZiAocHNldWRvU3R5bGUtPnN0eWxlVHlwZSgpID09IHBpZCkK
ICAgICAgICAgICAgIHJldHVybiBwc2V1ZG9TdHlsZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNjJlNzA2Mzc1MDgzYjE1MWRhMTEz
ZjVkOWY1YzdjYWI4YmJiMjdlOC4uZTc0YmVlODY1YWM4ODk4N2RiNjE3MmVlYjI0YThhMjMxNjdl
YjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
QEAgLTI0NzcsNCArMjQ3Nyw5IEBAIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUgJiYgc3R5
bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS0+Y29udGVudERhdGEo
KTsKIH0KIAoraW5saW5lIGJvb2wgZ2VuZXJhdGVzQm94KGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYm
IHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHM7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCmluZGV4IDFhZTMxMzBlZmRiYzg0MzkwNTFmNjk3N2NkZmYwODI4ODkzM2Q0MTUu
LjU4OGFmMWExZjc3NzI5NTMxMjk3ZWNkOTBiYzYwYjY1MzI3ZjFlYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDg4LDExICs0ODgs
NCBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHVGV4dDo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSBjb25zdAogICAgIHJldHVybiByZXBhaW50UmVjdDsKIH0KIAotLy8gRml4IGZvciA8cmRh
cjovL3Byb2JsZW0vODA0ODg3NT4uIFdlIHNob3VsZCBub3QgcmVuZGVyIDpmaXJzdC1saW5lIENT
UyBTdHlsZQotLy8gaW4gYSBTVkcgdGV4dCBlbGVtZW50IGNvbnRleHQuCi1SZW5kZXJCbG9jayog
UmVuZGVyU1ZHVGV4dDo6Zmlyc3RMaW5lQmxvY2soKSBjb25zdAotewotICAgIHJldHVybiAwOwot
fQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmlu
ZGV4IGJhNzE5NDg1ZTkxYmQwYzkyZjIwMWZhMWQyMTg1YmFiNzc2NmFmYjkuLjMyYzZlMTI0ODM2
N2M1NTUzNzE3MjRkNGU3M2M2YWJiMzA4YzNkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC04MSw4ICs4MSw2IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogICAgIEFmZmluZVRyYW5zZm9ybSBs
b2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0KIAotICAgIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOwot
CiAgICAgYm9vbCBzaG91bGRIYW5kbGVTdWJ0cmVlTXV0YXRpb25zKCkgY29uc3Q7CiAKICAgICBi
b29sIG1fbmVlZHNSZW9yZGVyaW5nIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJh
dGVkQ29udGVudC5jcHAKaW5kZXggZThiOWVlNTJmMDc4ZTExODEwMTUyOTBhYTM0NDUzOGRlMzli
NzY2Ni4uYzI5NTZlYjdlMGNkNDNjYTNjZDRjYzljMGMwZWQzN2JiYzg3MDA5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAKQEAgLTE0NywxMCArMTQ3LDEx
IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVk
b0VsZW1lbnQoRWxlbWVudCYgY3VycmVudCwKIAogICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0
ZSBjb250ZW50c1VwZGF0ZSB7IFdURk1vdmUoY29udGVudHNTdHlsZSksIHN0eWxlQ2hhbmdlLCBl
bGVtZW50VXBkYXRlLnJlY29tcG9zaXRlTGF5ZXIgfTsKICAgICAgICAgbV91cGRhdGVyLnVwZGF0
ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShjb250ZW50c1VwZGF0ZSkp
OwotICAgICAgICBwc2V1ZG9FbGVtZW50LT5zdG9yZURpc3BsYXlDb250ZW50c1N0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZVB0cigqdXBkYXRlU3R5bGUpKTsKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVt
ZW50VXBkYXRlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVJbmNsdWRpbmdQc2V1ZG9FbGVtZW50
cygqdXBkYXRlU3R5bGUpOworICAgICAgICBwc2V1ZG9FbGVtZW50LT5zdG9yZURpc3BsYXlDb250
ZW50c1N0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUocHNldWRvRWxlbWVudFVw
ZGF0ZVN0eWxlKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gcHNldWRvRWxlbWVudFVw
ZGF0ZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGVTdHlsZSk7Ci0gICAgICAg
IFN0eWxlOjpFbGVtZW50VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUgeyBXVEZNb3ZlKHBzZXVk
b0VsZW1lbnRVcGRhdGVTdHlsZSksIHN0eWxlQ2hhbmdlLCBlbGVtZW50VXBkYXRlLnJlY29tcG9z
aXRlTGF5ZXIgfTsKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y2xvbmVJbmNsdWRpbmdQc2V1ZG9FbGVtZW50cygqdXBkYXRlU3R5bGUpOworICAg
ICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBwc2V1ZG9FbGVtZW50VXBkYXRlIHsgbWFrZVVuaXF1
ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUpKSwgc3R5bGVD
aGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21wb3NpdGVMYXllciB9OwogICAgICAgICBtX3VwZGF0
ZXIudXBkYXRlRWxlbWVudFJlbmRlcmVyKCpwc2V1ZG9FbGVtZW50LCBXVEZNb3ZlKHBzZXVkb0Vs
ZW1lbnRVcGRhdGUpKTsKICAgICAgICAgQVNTRVJUKCFwc2V1ZG9FbGVtZW50LT5oYXNEaXNwbGF5
Q29udGVudHMoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwCmluZGV4IGE0NWY5ZTYyNDczZjMyMzFhYmM1ZjY1NDdiNmVlYTcyN2YxMWE5ZjMuLjQ4
NjZiOTgxNTZiYjVmMTVhOTc5MGIzYmE2MDVlOGJiYzBhNzQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1ldGVyRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNs
dWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKQEAgLTI1MCwxNSArMjUxLDE5IEBAIGF1dG8g
VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KSAtPiBzdGQ6OnBh
aXI8RWxlbWVudFVwZGF0ZSwKICAgICB9CiAKICAgICBhdXRvIHJlc29sdmVBbmRBZGRQc2V1ZG9F
bGVtZW50U3R5bGUgPSBbJl0oUHNldWRvSWQgcHNldWRvSWQpIHsKLSAgICAgICAgYXV0byBwc2V1
ZG9FbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgcHNl
dWRvSWQpOworICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRv
RWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgdXBkYXRlKTsKICAgICAgICAgaWYgKCFwc2V1ZG9F
bGVtZW50VXBkYXRlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIENo
YW5nZTo6Tm9uZTsKICAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRVcGRhdGUtPmNoYW5nZSAhPSBD
aGFuZ2U6Ok5vbmUpCiAgICAgICAgICAgICB1cGRhdGUuY2hhbmdlID0gc3RkOjptYXgodXBkYXRl
LmNoYW5nZSwgQ2hhbmdlOjpOb25Jbmhlcml0ZWQpOwogICAgICAgICBpZiAocHNldWRvRWxlbWVu
dFVwZGF0ZS0+cmVjb21wb3NpdGVMYXllcikKICAgICAgICAgICAgIHVwZGF0ZS5yZWNvbXBvc2l0
ZUxheWVyID0gdHJ1ZTsKICAgICAgICAgdXBkYXRlLnN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHls
ZShXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGUtPnN0eWxlKSk7CisgICAgICAgIHJldHVybiBw
c2V1ZG9FbGVtZW50VXBkYXRlLT5jaGFuZ2U7CiAgICAgfTsKKyAgICAKKyAgICBpZiAocmVzb2x2
ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSAhPSBDaGFuZ2U6
Ok5vbmUpCisgICAgICAgIGRlc2NlbmRhbnRzVG9SZXNvbHZlID0gRGVzY2VuZGFudHNUb1Jlc29s
dmU6OkFsbDsKIAogICAgIHJlc29sdmVBbmRBZGRQc2V1ZG9FbGVtZW50U3R5bGUoUHNldWRvSWQ6
Ok1hcmtlcik7CiAgICAgcmVzb2x2ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6
QmVmb3JlKTsKQEAgLTI3OCwxNSArMjgzLDQyIEBAIGF1dG8gVHJlZVJlc29sdmVyOjpyZXNvbHZl
RWxlbWVudChFbGVtZW50JiBlbGVtZW50KSAtPiBzdGQ6OnBhaXI8RWxlbWVudFVwZGF0ZSwKICAg
ICByZXR1cm4geyBXVEZNb3ZlKHVwZGF0ZSksIGRlc2NlbmRhbnRzVG9SZXNvbHZlIH07CiB9CiAK
LXN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRv
U3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0
ZSwgUHNldWRvSWQgcHNldWRvSWQpCitpbmxpbmUgYm9vbCBzdXBwb3J0c0ZpcnN0TGluZVBzZXVk
b0VsZW1lbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8gZGlzcGxheSA9
IHN0eWxlLmRpc3BsYXkoKTsKKyAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6Qmxv
Y2sKKyAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0KKyAgICAgICAg
fHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2sKKyAgICAgICAgfHwgZGlzcGxh
eSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsCisgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxh
eVR5cGU6OlRhYmxlQ2FwdGlvbgorICAgICAgICB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpG
bG93Um9vdDsKK307CisKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVy
OjpyZXNvbHZlUHNldWRvRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9J
ZCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKIHsKICAgICBpZiAocHNldWRv
SWQgPT0gUHNldWRvSWQ6OkJhY2tkcm9wICYmICFlbGVtZW50LmlzSW5Ub3BMYXllcigpKQogICAg
ICAgICByZXR1cm4geyB9OwogICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6TWFya2VyICYm
IGVsZW1lbnRVcGRhdGUuc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0p
CiAgICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpGaXJz
dExpbmUgJiYgIXNjb3BlKCkucmVzb2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQorICAgICAg
ICByZXR1cm4geyB9OwogICAgIGlmIChlbGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgaWYgKCFlbGVtZW50
VXBkYXRlLnN0eWxlLT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpCisKKyAgICBpZiAoIWVsZW1l
bnRVcGRhdGUuc3R5bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkgeworICAgICAgICBpZiAo
cHNldWRvSWQgPT0gUHNldWRvSWQ6OkZpcnN0TGluZSkgeworICAgICAgICAgICAgYXV0byBmaXJz
dExpbmVTdHlsZSA9IHJlc29sdmVJbmhlcml0ZWRGaXJzdExpbmVQc2V1ZG9FbGVtZW50KGVsZW1l
bnQsIGVsZW1lbnRVcGRhdGUpOworICAgICAgICAgICAgaWYgKCFmaXJzdExpbmVTdHlsZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgICAgICBhdXRvKiBvbGRTdHlsZSA9
IGVsZW1lbnQucmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5l
KTsKKyAgICAgICAgICAgIGF1dG8gY2hhbmdlID0gb2xkU3R5bGUgPyBkZXRlcm1pbmVDaGFuZ2Uo
Km9sZFN0eWxlLCAqZmlyc3RMaW5lU3R5bGUpIDogQ2hhbmdlOjpSZW5kZXJlcjsKKyAgICAgICAg
ICAgIHJldHVybiBFbGVtZW50VXBkYXRlIHsgV1RGTW92ZShmaXJzdExpbmVTdHlsZSksIGNoYW5n
ZSB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaWYgKHBz
ZXVkb0lkID09IFBzZXVkb0lkOjpGaXJzdExpbmUgJiYgIXN1cHBvcnRzRmlyc3RMaW5lUHNldWRv
RWxlbWVudCgqZWxlbWVudFVwZGF0ZS5zdHlsZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBhdXRvIHJlc29sdXRpb25Db250ZXh0ID0gbWFrZVJlc29sdXRpb25Db250ZXh0Rm9yUHNldWRv
RWxlbWVudChlbGVtZW50VXBkYXRlKTsKQEAgLTI5NSwxMyArMzI3LDg3IEBAIHN0ZDo6b3B0aW9u
YWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVu
dCYgZWxlbWVudCwKICAgICBpZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9Owog
CisgICAgLy8gRklYTUU6IFRoaXMgdGVzdCBzaG91bGRuJ3QgYmUgbmVlZGVkLgogICAgIGJvb2wg
aGFzQW5pbWF0aW9ucyA9IHBzZXVkb1N0eWxlLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygp
IHx8IGVsZW1lbnQuaGFzS2V5ZnJhbWVFZmZlY3RzKHBzZXVkb0lkKTsKLSAgICBpZiAoIXBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0
aW9ucykKKyAgICBpZiAocHNldWRvSWQgIT0gUHNldWRvSWQ6OkZpcnN0TGluZSAmJiAhcHNldWRv
RWxlbWVudFJlbmRlcmVySXNOZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkpICYmICFoYXNBbmltYXRp
b25zKQogICAgICAgICByZXR1cm4geyB9OwogCisgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lk
OjpCZWZvcmUgfHwgcHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKSB7CisgICAgICAgIC8vIDo6
Zmlyc3QtbGluZSBjYW4gaW5oZXJpdCB0byA6OmJlZm9yZS86OmFmdGVyCisgICAgICAgIGF1dG8g
Zmlyc3RMaW5lQ29udGV4dCA9IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvckluaGVyaXRlZEZpcnN0
TGluZShlbGVtZW50VXBkYXRlLCAqZWxlbWVudFVwZGF0ZS5zdHlsZSk7CisgICAgICAgIGlmIChm
aXJzdExpbmVDb250ZXh0KSB7CisgICAgICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gc2Nv
cGUoKS5yZXNvbHZlci0+cHNldWRvU3R5bGVGb3JFbGVtZW50KGVsZW1lbnQsIHsgcHNldWRvSWQg
fSwgKmZpcnN0TGluZUNvbnRleHQpOworICAgICAgICAgICAgZmlyc3RMaW5lU3R5bGUtPnNldFN0
eWxlVHlwZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKKyAgICAgICAgICAgIHBzZXVkb1N0eWxlLT5h
ZGRDYWNoZWRQc2V1ZG9TdHlsZShXVEZNb3ZlKGZpcnN0TGluZVN0eWxlKSk7CisgICAgICAgIH0K
KyAgICB9CisKICAgICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUo
cHNldWRvU3R5bGUpLCB7IGVsZW1lbnQsIHBzZXVkb0lkIH0sIGVsZW1lbnRVcGRhdGUuY2hhbmdl
LCByZXNvbHV0aW9uQ29udGV4dCk7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
VHJlZVJlc29sdmVyOjpyZXNvbHZlSW5oZXJpdGVkRmlyc3RMaW5lUHNldWRvRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQoreworICAg
IGlmIChlbGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZSkgeworICAgICAgICBhdXRvKiBwYXJlbnQgPSBib3hHZW5lcmF0aW5nUGFyZW50KCk7CisgICAg
ICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRv
IHJlc29sdXRpb25Db250ZXh0ID0gbWFrZVJlc29sdXRpb25Db250ZXh0Rm9ySW5oZXJpdGVkRmly
c3RMaW5lKGVsZW1lbnRVcGRhdGUsIHBhcmVudC0+c3R5bGUpOworICAgICAgICBpZiAoIXJlc29s
dXRpb25Db250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICBhdXRvIGVs
ZW1lbnRTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXItPnN0eWxlRm9yRWxlbWVudChlbGVtZW50LCAq
cmVzb2x1dGlvbkNvbnRleHQpOworICAgICAgICBhdXRvIGZpcnN0TGluZVN0eWxlID0gV1RGTW92
ZShlbGVtZW50U3R5bGUucmVuZGVyU3R5bGUpOworICAgICAgICBmaXJzdExpbmVTdHlsZS0+c2V0
U3R5bGVUeXBlKFBzZXVkb0lkOjpGaXJzdExpbmUpOworCisgICAgICAgIHJldHVybiBmaXJzdExp
bmVTdHlsZTsKKyAgICB9CisKKyAgICBhdXRvIGlzQ2hpbGRJbkJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQgPSBbXShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIHsKKyAgICAgICAgLy8gRklYTUU6IElu
Y29tcGxldGUuIFRoZXJlIHNob3VsZCBiZSBzaGFyZWQgY29kZSB3aXRoIGxheW91dCBmb3IgdGhp
cy4KKyAgICAgICAgaWYgKHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6QmxvY2spCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChzdHlsZS5oYXNPdXRPZkZsb3dQ
b3NpdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3R5bGUu
ZmxvYXRpbmcoKSAhPSBGbG9hdDo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKHN0eWxlLm92ZXJmbG93WCgpICE9IE92ZXJmbG93OjpWaXNpYmxlIHx8IHN0eWxl
Lm92ZXJmbG93WSgpICE9IE92ZXJmbG93OjpWaXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgYXV0byBmaXJzdExpbmVF
bGVtZW50Rm9yQmxvY2sgPSBbJl0oKSAtPiBFbGVtZW50KiB7CisgICAgICAgIGlmICghaXNDaGls
ZEluQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgqZWxlbWVudFVwZGF0ZS5zdHlsZSkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyA6OmZpcnN0LWxpbmUgaXMgb25seSBw
cm9wYWdhdGVkIHRvIHRoZSBmaXJzdCBibG9jay4KKyAgICAgICAgaWYgKHBhcmVudCgpLnJlc29s
dmVkRmlyc3RCb3hHZW5lcmF0aW5nQ2hpbGQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICBmb3IgKGF1dG8mIHBhcmVudCA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fcGFyZW50
U3RhY2spKSB7CisgICAgICAgICAgICBpZiAocGFyZW50LnN0eWxlLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6Q29udGVudHMpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpZiAoIXN1cHBvcnRzRmlyc3RMaW5lUHNldWRvRWxlbWVudChwYXJlbnQuc3R5bGUpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgaWYgKHBhcmVudC5zdHls
ZS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFyZW50LmVsZW1lbnQ7CisgICAgICAgICAgICBpZiAoIWlzQ2hpbGRJbkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQocGFyZW50LnN0eWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9OworCisgICAg
YXV0byBmaXJzdExpbmVFbGVtZW50ID0gZmlyc3RMaW5lRWxlbWVudEZvckJsb2NrKCk7CisgICAg
aWYgKCFmaXJzdExpbmVFbGVtZW50KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBy
ZXNvbHV0aW9uQ29udGV4dCA9IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQo
ZWxlbWVudFVwZGF0ZSk7CisgICAgLy8gQ2FuJ3QgdXNlIHRoZSBjYWNoZWQgc3RhdGUgc2luY2Ug
dGhlIGVsZW1lbnQgYmVpbmcgcmVzb2x2ZWQgaXMgbm90IHRoZSBjdXJyZW50IG9uZS4KKyAgICBy
ZXNvbHV0aW9uQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUgPSBudWxscHRyOworCisgICAg
cmV0dXJuIHNjb3BlKCkucmVzb2x2ZXItPnBzZXVkb1N0eWxlRm9yRWxlbWVudCgqZmlyc3RMaW5l
RWxlbWVudCwgeyBQc2V1ZG9JZDo6Rmlyc3RMaW5lIH0sIHJlc29sdXRpb25Db250ZXh0KTsKK30K
KwogUmVzb2x1dGlvbkNvbnRleHQgVHJlZVJlc29sdmVyOjptYWtlUmVzb2x1dGlvbkNvbnRleHQo
KQogewogICAgIHJldHVybiB7CkBAIC0zMjIsMjAgKzQyOCw0MyBAQCBSZXNvbHV0aW9uQ29udGV4
dCBUcmVlUmVzb2x2ZXI6Om1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoY29u
c3QgRWxlbQogICAgIH07CiB9CiAKLWNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBh
cmVudEJveFN0eWxlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbkNvbnRleHQ+IFRy
ZWVSZXNvbHZlcjo6bWFrZVJlc29sdXRpb25Db250ZXh0Rm9ySW5oZXJpdGVkRmlyc3RMaW5lKGNv
bnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUsIGNvbnN0IFJlbmRlclN0eWxlJiBpbmhl
cml0U3R5bGUpCit7CisgICAgaWYgKCFzY29wZSgpLnJlc29sdmVyLT51c2VzRmlyc3RMaW5lUnVs
ZXMoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gcGFyZW50Rmlyc3RMaW5lU3R5
bGUgPSBpbmhlcml0U3R5bGUuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGlu
ZSk7CisgICAgaWYgKCFwYXJlbnRGaXJzdExpbmVTdHlsZSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIC8vIEZpcnN0IGxpbmUgc3R5bGUgZm9yIGlubGluZXMgaXMgbWFkZSBieSBpbmhlcml0
aW5nIGZyb20gcGFyZW50IGZpcnN0IGxpbmUgc3R5bGUuCisgICAgcmV0dXJuIFJlc29sdXRpb25D
b250ZXh0IHsKKyAgICAgICAgcGFyZW50Rmlyc3RMaW5lU3R5bGUsCisgICAgICAgIHBhcmVudEJv
eFN0eWxlRm9yUHNldWRvRWxlbWVudChlbGVtZW50VXBkYXRlKSwKKyAgICAgICAgbV9kb2N1bWVu
dEVsZW1lbnRTdHlsZS5nZXQoKSwKKyAgICAgICAgJnNjb3BlKCkuc2VsZWN0b3JNYXRjaGluZ1N0
YXRlCisgICAgfTsKK30KKworYXV0byBUcmVlUmVzb2x2ZXI6OmJveEdlbmVyYXRpbmdQYXJlbnQo
KSBjb25zdCAtPiBjb25zdCBQYXJlbnQqCiB7CiAgICAgLy8gJ2Rpc3BsYXk6IGNvbnRlbnRzJyBk
b2Vzbid0IGdlbmVyYXRlIGJveGVzLgotICAgIGZvciAoYXV0byBpID0gbV9wYXJlbnRTdGFjay5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgYXV0byYgcGFyZW50ID0gbV9wYXJlbnRTdGFja1tpXTsK
KyAgICBmb3IgKGF1dG8mIHBhcmVudCA6IG1ha2VSZXZlcnNlZFJhbmdlKG1fcGFyZW50U3RhY2sp
KSB7CiAgICAgICAgIGlmIChwYXJlbnQuc3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpO
b25lKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChwYXJlbnQuc3R5
bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpDb250ZW50cykKLSAgICAgICAgICAgIHJldHVy
biAmcGFyZW50LnN0eWxlOworICAgICAgICAgICAgcmV0dXJuICZwYXJlbnQ7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCitjb25zdCBS
ZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSgpIGNvbnN0Cit7CisgICAg
YXV0byogcGFyZW50ID0gYm94R2VuZXJhdGluZ1BhcmVudCgpOworICAgIHJldHVybiBwYXJlbnQg
PyAmcGFyZW50LT5zdHlsZSA6IG51bGxwdHI7Cit9CisKIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVl
UmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVtZW50VXBk
YXRlJiBlbGVtZW50VXBkYXRlKSBjb25zdAogewogICAgIHN3aXRjaCAoZWxlbWVudFVwZGF0ZS5z
dHlsZS0+ZGlzcGxheSgpKSB7CkBAIC01NTYsNiArNjg1LDkgQEAgdm9pZCBUcmVlUmVzb2x2ZXI6
OnJlc29sdmVDb21wb3NlZFRyZWUoKQogICAgICAgICAgICAgICAgIG1fdXBkYXRlLT5hZGRUZXh0
KHRleHQsIHBhcmVudC5lbGVtZW50LCBXVEZNb3ZlKHRleHRVcGRhdGUpKTsKICAgICAgICAgICAg
IH0KIAorICAgICAgICAgICAgaWYgKCF0ZXh0LmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
PGlzSFRNTFNwYWNlPigpKQorICAgICAgICAgICAgICAgIHBhcmVudC5yZXNvbHZlZEZpcnN0Qm94
R2VuZXJhdGluZ0NoaWxkID0gdHJ1ZTsKKwogICAgICAgICAgICAgdGV4dC5zZXRIYXNWYWxpZFN0
eWxlKCk7CiAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTYxMCw2ICs3NDIsOSBAQCB2b2lkIFRyZWVSZXNvbHZl
cjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgIGlmICghbV9kaWRTZWVQZW5kaW5nU3R5
bGVzaGVldCkKICAgICAgICAgICAgIG1fZGlkU2VlUGVuZGluZ1N0eWxlc2hlZXQgPSBoYXNMb2Fk
aW5nU3R5bGVzaGVldChtX2RvY3VtZW50LnN0eWxlU2NvcGUoKSwgZWxlbWVudCwgIXNob3VsZEl0
ZXJhdGVDaGlsZHJlbik7CiAKKyAgICAgICAgaWYgKHN0eWxlICYmIGdlbmVyYXRlc0JveCgqc3R5
bGUpKQorICAgICAgICAgICAgcGFyZW50LnJlc29sdmVkRmlyc3RCb3hHZW5lcmF0aW5nQ2hpbGQg
PSB0cnVlOworCiAgICAgICAgIGlmICghc2hvdWxkSXRlcmF0ZUNoaWxkcmVuKSB7CiAgICAgICAg
ICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAgICAgICAgICAgICBjb250
aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCmluZGV4IGU4MGFi
MjczMDVjMmFkZjEzYWJkZWZmNDk1ZTE0OTI0NzBjNjA1NDAuLjgwNDVhYjExZTY2MzczNzM4MTA2
NmUwMzM3ZjRkZWU2MTNhMTk1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVz
b2x2ZXIuaApAQCAtNjksNyArNjksOCBAQCBwcml2YXRlOgogICAgIHN0ZDo6cGFpcjxFbGVtZW50
VXBkYXRlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZT4gcmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYpOwog
CiAgICAgc3RhdGljIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0eWxlYWJsZSYsIENoYW5nZSwgY29u
c3QgUmVzb2x1dGlvbkNvbnRleHQmKTsKLSAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+
IHJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiwgY29uc3QgRWxlbWVudFVwZGF0ZSYsIFBzZXVk
b0lkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IHJlc29sdmVQc2V1ZG9FbGVt
ZW50KEVsZW1lbnQmLCBQc2V1ZG9JZCwgY29uc3QgRWxlbWVudFVwZGF0ZSYpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUluaGVyaXRlZEZpcnN0TGluZVBzZXVkb0Vs
ZW1lbnQoRWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUmKTsKIAogICAgIHN0cnVjdCBTY29w
ZSA6IFJlZkNvdW50ZWQ8U2NvcGU+IHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKFRyZWVSZXNvbHZlclNjb3BlKTsKQEAgLTkwLDYg
KzkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ2hhbmdlIGNoYW5nZSB7IENoYW5nZTo6Tm9uZSB9
OwogICAgICAgICBEZXNjZW5kYW50c1RvUmVzb2x2ZSBkZXNjZW5kYW50c1RvUmVzb2x2ZSB7IERl
c2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lIH07CiAgICAgICAgIGJvb2wgZGlkUHVzaFNjb3BlIHsg
ZmFsc2UgfTsKKyAgICAgICAgYm9vbCByZXNvbHZlZEZpcnN0Qm94R2VuZXJhdGluZ0NoaWxkIHsg
ZmFsc2UgfTsKIAogICAgICAgICBQYXJlbnQoRG9jdW1lbnQmKTsKICAgICAgICAgUGFyZW50KEVs
ZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIENoYW5nZSwgRGVzY2VuZGFudHNUb1Jlc29sdmUp
OwpAQCAtMTEyLDYgKzExNCw4IEBAIHByaXZhdGU6CiAKICAgICBSZXNvbHV0aW9uQ29udGV4dCBt
YWtlUmVzb2x1dGlvbkNvbnRleHQoKTsKICAgICBSZXNvbHV0aW9uQ29udGV4dCBtYWtlUmVzb2x1
dGlvbkNvbnRleHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlc29sdXRpb25Db250ZXh0PiBtYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JJ
bmhlcml0ZWRGaXJzdExpbmUoY29uc3QgRWxlbWVudFVwZGF0ZSYsIGNvbnN0IFJlbmRlclN0eWxl
JiBpbmhlcml0U3R5bGUpOworICAgIGNvbnN0IFBhcmVudCogYm94R2VuZXJhdGluZ1BhcmVudCgp
IGNvbnN0OwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSgpIGNvbnN0Owog
ICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZUZvclBzZXVkb0VsZW1lbnQoY29u
c3QgRWxlbWVudFVwZGF0ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTJjYWEwZWRlMzFiN2YxMTkyMGQ5
ZDY1NGExNDkxN2YxOGI5OGFhOC4uMTZiN2VmNGJiMWY0NmY5ZGM4ZWRhYTJiNzdjYTFkM2I0NjZj
NjJkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTA1ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3QtbGluZSBzdHlsZSBl
YWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5w
dXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAzLTAzICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViR0wgY29udGV4dCBjb3VudCBpcyBu
b3QgbGltaXRlZCBmb3IgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDE1NWQyZmJj
OGQxMzMwNjMzN2M3NGQ0ZmY2Yzg1MDRhYzc0MjViZTAuLjdhNjA0NmM5MDNkYmNiNDNmZGRkNWMx
YTlkYWE4ZWM2NTRjNWY2ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDQwOSwxMSArNDQwOSw3
IEBAIHdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXBzZXVkby9maXJzdC1sZXR0ZXItCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLWV4Y2x1
ZGUtaW5saW5lLWNoaWxkLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1
ZG8vZmlyc3QtbGV0dGVyLWV4Y2x1ZGUtaW5saW5lLW1hcmtlci5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLWxpc3QtaXRlbS1keW5hbWljLTAwMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS1jaGFuZ2UtaW5saW5l
LWNvbG9yLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLWNo
YW5nZS1pbmxpbmUtY29sb3ItbmVzdGVkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBz
ZXVkby9maXJzdC1saW5lLW9wYWNpdHktMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXBzZXVkby9maXJzdC1saW5lLXdpdGgtYmVmb3JlLWFmdGVyLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLXdpdGgtb3V0LW9mLWZsb3cuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2dyYW1tYXItZXJyb3ItMDAxLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMDQxNjMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXBzZXVkby9tYXJrZXItY29udGVudC0wMDIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDE2MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtcHNldWRvL21hcmtlci1jb250ZW50LTAwMy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCkBAIC00NDQwLDcgKzQ0MzYsNiBAQCB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vbWFya2VyLWxpc3Qtcwog
d2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtcHNldWRvL21hcmtlci11bmljb2RlLWJpZGktZGVmYXVsdC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vbWFya2VyLXVuaWNvZGUtYmlkaS1ub3JtYWwuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL3NwZWxsaW5nLWVycm9yLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjMwOTY0IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS1hbmQtcGxhY2Vob2xkZXIuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMjE0NDYyIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY29waW5nL2hvc3QtY29udGV4dC1zcGVjaWZpY2l0
eS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDQ2MiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2NvcGluZy9ob3N0LWNvbnRleHQt
c3BlY2lmaWNpdHktMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KQEAgLTQ5MDcsMTAgKzQ5
MDIsNyBAQCB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLQogd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxldHRlci1w
dW5jdHVhdGlvbi1keW5hbWljLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMzAwMDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9m
aXJzdC1sZXR0ZXItc2tpcC1lbXB0eS1zcGFuLW5lc3RlZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLXNraXAtZW1wdHktc3Bhbi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS13aXRoLWlubGluZS1ibG9jay1iZWZv
cmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxpbmUtd2l0aC1p
bmxpbmUtYmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIzMDAw
NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxp
bmUtd2l0aC1vdXQtb2YtZmxvdy1hbmQtbmVzdGVkLWRpdi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS13aXRoLW91dC1vZi1mbG93LWFuZC1uZXN0ZWQtc3Bh
bi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZ3JhbW1hci1zcGVsbGluZy1l
cnJvcnMtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAwMDQg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9ncmFtbWFyLXNw
ZWxsaW5nLWVycm9ycy0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzIzMDAwNCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2hp
Z2hsaWdodC1wYWludGluZy0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvaW5wdXQtYmFz
ZWxpbmUtZXhwZWN0ZWQudHh0CmluZGV4IDI5NGFiNTg2NTBiMWFiYWVmNjM5M2U1ZWQwMzFkNDNm
MzhhOTYxMDcuLmUxMTA0ODAxMmU4M2M2NDBkOTE1ZTRmM2MwNTI3ZDhlZjAwNDFmZjcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2lucHV0LWJhc2VsaW5l
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9p
bnB1dC1iYXNlbGluZS1leHBlY3RlZC50eHQKQEAgLTEyLDEwICsxMiwxMCBAQCBsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgdGV4dCBydW4gYXQgKDE5Niw0MSkgd2lkdGggNDIw
OiAiVGhpcyB0ZXh0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlIGJvdHRvbSBvZiB0aGUgdGV4dCBp
biB0aGUgdGV4dCBmaWVsZC4iCiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg2MTYsNDEpIHNpemUg
MHgxNwogICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCw2NCkgc2l6ZSAweDE3Ci0gICAgICBSZW5k
ZXJUZXh0Q29udHJvbCB7SU5QVVR9IGF0ICgyLDg0KSBzaXplIDE5MngxMzAgW2JnY29sb3I9I0ZG
RkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KLSAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMTk2LDE3Mikgc2l6ZSA0MjB4MTcKLSAgICAgICAgdGV4dCBydW4gYXQgKDE5Niwx
NzIpIHdpZHRoIDQyMDogIlRoaXMgdGV4dCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZSBib3R0b20g
b2YgdGhlIHRleHQgaW4gdGhlIHRleHQgZmllbGQuIgorICAgICAgUmVuZGVyVGV4dENvbnRyb2wg
e0lOUFVUfSBhdCAoMiw4NCkgc2l6ZSAxOTJ4MjQgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjog
KDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTk2LDg3
KSBzaXplIDQyMHgxNworICAgICAgICB0ZXh0IHJ1biBhdCAoMTk2LDg3KSB3aWR0aCA0MjA6ICJU
aGlzIHRleHQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUgYm90dG9tIG9mIHRoZSB0ZXh0IGluIHRo
ZSB0ZXh0IGZpZWxkLiIKIGxheWVyIGF0ICgxMyw0OSkgc2l6ZSAxODZ4MTgKICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxODZ4MTgKLWxheWVyIGF0ICgxMyw5NSkgc2l6ZSAxODZ4
MTI0Ci0gIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTg2eDEyNAorbGF5ZXIgYXQg
KDEzLDk1KSBzaXplIDE4NngxOAorICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDE4
NngxOApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5w
dXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
Zm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0ZWQudHh0CmluZGV4IDk0YWVjNTAwOGIwNDM3ZmNl
NTBhYzQyYmYyMmJiMGY5ZDliNzZlNzUuLjQxYjgwZjhhNTgyNGNjYWEzZTZkOWY5ZWQxN2UwNWMy
MjYxZjBjZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L2lucHV0LWJhc2VsaW5lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9pbnB1dC1iYXNlbGluZS1leHBlY3RlZC50eHQKQEAgLTEyLDEwICsxMiwx
MCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgdGV4dCBydW4gYXQgKDE1
MCwzOCkgd2lkdGggNDMxOiAiVGhpcyB0ZXh0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlIGJvdHRv
bSBvZiB0aGUgdGV4dCBpbiB0aGUgdGV4dCBmaWVsZC4iCiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICg1ODAsMzgpIHNpemUgMXgxOAogICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCw1OSkgc2l6ZSAw
eDE4Ci0gICAgICBSZW5kZXJUZXh0Q29udHJvbCB7SU5QVVR9IGF0ICgyLDc5KSBzaXplIDE0N3gx
MzIgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KLSAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTUwLDE3MSkgc2l6ZSA0MzF4MTgKLSAgICAgICAgdGV4
dCBydW4gYXQgKDE1MCwxNzEpIHdpZHRoIDQzMTogIlRoaXMgdGV4dCBzaG91bGQgbGluZSB1cCB3
aXRoIHRoZSBib3R0b20gb2YgdGhlIHRleHQgaW4gdGhlIHRleHQgZmllbGQuIgorICAgICAgUmVu
ZGVyVGV4dENvbnRyb2wge0lOUFVUfSBhdCAoMiw3OSkgc2l6ZSAxNDd4MTkgW2JnY29sb3I9I0ZG
RkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMTUwLDc5KSBzaXplIDQzMXgxOAorICAgICAgICB0ZXh0IHJ1biBhdCAoMTUwLDc5
KSB3aWR0aCA0MzE6ICJUaGlzIHRleHQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUgYm90dG9tIG9m
IHRoZSB0ZXh0IGluIHRoZSB0ZXh0IGZpZWxkLiIKIGxheWVyIGF0ICgxMyw0OSkgc2l6ZSAxNDF4
MTMKICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxNDF4MTMKLWxheWVyIGF0ICgx
Myw5MCkgc2l6ZSAxNDF4MTI2Ci0gIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTQx
eDEyNgorbGF5ZXIgYXQgKDEzLDkwKSBzaXplIDE0MXgxMworICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMywzKSBzaXplIDE0MXgxMwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453908</attachid>
            <date>2022-03-05 05:49:22 -0800</date>
            <delta_ts>2022-03-05 08:59:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237362-20220305154920.patch</filename>
            <type>text/plain</type>
            <size>41281</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM0Zjg2NWEzNWQxMzUx
OTgyM2RmNGFkY2EyY2IxNDhjZWNjOTNhZi4uNWYxOTI0YTA4NTdjYjE5NzU0ZTY1MmU1MWI0OWI1
ZjNmYTFkMGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAzLTA1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvbHZlIDo6Zmlyc3Qt
bGluZSBzdHlsZSBlYWdlcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDb21wdXRlIDo6Zmlyc3QtbGluZSBzdHlsZSBkdXJpbmcgc3R5bGUgcmVzb2x1
dGlvbiBpbnN0ZWFkIG9mIGxhemlseSBpbiByZW5kZXIgdHJlZS4KKyAgICAgICAgVGhpcyBmaXhl
cyBidWdzIGFuZCBjbGFyaWZpZXMgdGhlIGFyY2hpdGVjdHVyZSBpbiB3YXlzIHRoYXQgYSBoZWxw
ZnVsIGZvciBmZWF0dXJlcyBsaWtlCisgICAgICAgIGNvbnRhaW5lciBxdWVyaWVzLgorCisgICAg
ICAgIEFzIGEgc2lkZSBlZmZlY3QgaXQgYWxzbyBtYWtlcyA6OmZpcnN0LWxpbmUgc3R5bGUgYW5p
bWF0YWJsZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmxvY2sgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OlJlbmRl
ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Zmlyc3RMaW5lU3R5
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNvbXB1dGVGaXJzdExpbmVT
dHlsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpp
bnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0TGluZUJsb2NrIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UnVieVJ1bjo6Zmlyc3RMaW5lQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpmaXJzdExpbmVCbG9jayBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
ZmluZEJ5RGlzcGxheUNvbnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldENh
Y2hlZFBzZXVkb1N0eWxlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlc0JveCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1RleHQ6OmZpcnN0TGluZUJsb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToK
KyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlSW5oZXJpdGVkRmlyc3RMaW5lUHNl
dWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjptYWtl
UmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0ZWRGaXJzdExpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Ym94R2VuZXJhdGluZ1BhcmVudCBjb25zdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlQ29t
cG9zZWRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29s
dmVQc2V1ZG9TdHlsZSk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaDoKKwogMjAyMi0wMy0wMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYkdMIGNvbnRleHQgY291bnQgaXMgbm90IGxpbWl0ZWQgZm9yIEdQVSBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA1MmE1
YTU0YjJmNjczMTNmY2ExYzc1YzlkNDFiODcxMTMyOTYxZjViLi41ZTZkZjBiZDYwMGQzMGQ1ZGU5
NWMxM2ZkMDkxM2Q0YmQ1MTVlZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTI1NzEsMjcgKzI1NzEsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW5k
ZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KQog
ICAgIHJldHVybiByZW5kZXJFbGVtZW50LmlzUmVuZGVyQmxvY2tGbG93KCkgfHwgcmVuZGVyRWxl
bWVudC5pc1JlbmRlckJ1dHRvbigpOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6OmZp
cnN0TGluZUJsb2NrKCkgY29uc3QKLXsKLSAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2sg
PSBjb25zdF9jYXN0PFJlbmRlckJsb2NrKj4odGhpcyk7Ci0gICAgYm9vbCBoYXNQc2V1ZG8gPSBm
YWxzZTsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBoYXNQc2V1ZG8gPSBmaXJzdExpbmVC
bG9jay0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKLSAgICAg
ICAgaWYgKGhhc1BzZXVkbykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5kZXJFbGVt
ZW50KiBwYXJlbnRCbG9jayA9IGZpcnN0TGluZUJsb2NrLT5wYXJlbnQoKTsKLSAgICAgICAgaWYg
KGZpcnN0TGluZUJsb2NrLT5pc1JlcGxhY2VkT3JJbmxpbmVCbG9jaygpIHx8IGZpcnN0TGluZUJs
b2NrLT5pc0Zsb2F0aW5nKCkKLSAgICAgICAgICAgIHx8ICFwYXJlbnRCbG9jayB8fCBwYXJlbnRC
bG9jay0+Zmlyc3RDaGlsZCgpICE9IGZpcnN0TGluZUJsb2NrIHx8ICFpc1JlbmRlckJsb2NrRmxv
d09yUmVuZGVyQnV0dG9uKCpwYXJlbnRCbG9jaykpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZmlyc3RMaW5lQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4ocGFyZW50QmxvY2spOwot
ICAgIH0gCi0gICAgCi0gICAgaWYgKCFoYXNQc2V1ZG8pCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIHJldHVybiBmaXJzdExpbmVCbG9jazsKLX0KLQogc3RhdGljIGlubGluZSBS
ZW5kZXJCbG9jayogZmluZEZpcnN0TGV0dGVyQmxvY2soUmVuZGVyQmxvY2sqIHN0YXJ0KQogewog
ICAgIFJlbmRlckJsb2NrKiBmaXJzdExldHRlckJsb2NrID0gc3RhcnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDExZjdmZWM3MTY5Y2JiNGY4ZDZlMzc1YjJiNDM2
NTllODgzNjRiNWUuLjIyMGZkNzQxMzA3OTExNDAzODVkMGQyZDUwNmE2MzQ0MGVjZGNjMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zODMsOSArMzgzLDYgQEAg
cHVibGljOgogICAgIAogICAgIC8vIEFkanVzdCBmcm9tIHBhaW50aW5nIG9mZnNldHMgdG8gdGhl
IGxvY2FsIGNvb3JkcyBvZiB0aGlzIHJlbmRlcmVyCiAgICAgdm9pZCBvZmZzZXRGb3JDb250ZW50
cyhMYXlvdXRQb2ludCYpIGNvbnN0OwotICAgIC8vIE9idGFpbnMgdGhlIG5lYXJlc3QgZW5jbG9z
aW5nIGJsb2NrIChpbmNsdWRpbmcgdGhpcyBibG9jaykgdGhhdCBjb250cmlidXRlcyBhIGZpcnN0
LWxpbmUgc3R5bGUgdG8gb3VyIGlubGluZQotICAgIC8vIGNoaWxkcmVuLgotICAgIFJlbmRlckJs
b2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZW51bSBGaWVsZHNl
dEZpbmRMZWdlbmRPcHRpb24geyBGaWVsZHNldElnbm9yZUZsb2F0aW5nT3JPdXRPZkZsb3csIEZp
ZWxkc2V0SW5jbHVkZUZsb2F0aW5nT3JPdXRPZkZsb3cgfTsKICAgICBSZW5kZXJCb3gqIGZpbmRG
aWVsZHNldExlZ2VuZChGaWVsZHNldEZpbmRMZWdlbmRPcHRpb24gPSBGaWVsZHNldElnbm9yZUZs
b2F0aW5nT3JPdXRPZkZsb3cpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IGZhYzE4YmFjZGMwMDQ3MjIxMWRlNTVlMTYxZTMzNTc1MWNiZDFi
MjEuLmQyNmYzNDgxODA2NmI3OWE5YjdhY2M5YTk2OGI1ZjNjODJkZWZlZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTExNyw3ICsxMTcsNiBAQCBp
bmxpbmUgUmVuZGVyRWxlbWVudDo6UmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiBlbGVtZW50
T3JEb2N1bWVudCwgUmVuZGVyU3R5bAogICAgICwgbV9oYXNDb250aW51YXRpb25DaGFpbk5vZGUo
ZmFsc2UpCiAgICAgLCBtX2lzQ29udGludWF0aW9uKGZhbHNlKQogICAgICwgbV9pc0ZpcnN0TGV0
dGVyKGZhbHNlKQotICAgICwgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxlKGZhbHNlKQog
ICAgICwgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkJlZm9yZVF1aXJrKGZhbHNlKQogICAgICwgbV9y
ZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsoZmFsc2UpCiAgICAgLCBtX3JlbmRlckJsb2Nr
U2hvdWxkRm9yY2VSZWxheW91dENoaWxkcmVuKGZhbHNlKQpAQCAtMjI0LDYyICsyMjMsMjEgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcihFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJFbGVtZW50Ojpjb21wdXRlRmlyc3RMaW5lU3R5
bGUoKSBjb25zdAotewotICAgIEFTU0VSVCh2aWV3KCkudXNlc0ZpcnN0TGluZVJ1bGVzKCkpOwot
Ci0gICAgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZSA9IGlzQmVmb3Jl
T3JBZnRlckNvbnRlbnQoKSA/ICpwYXJlbnQoKSA6IGNvbnN0X2Nhc3Q8UmVuZGVyRWxlbWVudCY+
KCp0aGlzKTsKLQotICAgIGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzUmVuZGVyQmxv
Y2tGbG93KCkgfHwgcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5pc1JlbmRlckJ1dHRvbigpKSB7
Ci0gICAgICAgIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jayA9IHJlbmRlcmVyRm9yRmlyc3RM
aW5lU3R5bGUuZmlyc3RMaW5lQmxvY2soKTsKLSAgICAgICAgaWYgKCFmaXJzdExpbmVCbG9jaykK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRvKiBmaXJzdExpbmVTdHls
ZSA9IGZpcnN0TGluZUJsb2NrLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RM
aW5lLCAmc3R5bGUoKSk7Ci0gICAgICAgIGlmICghZmlyc3RMaW5lU3R5bGUpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
Zmlyc3RMaW5lU3R5bGUpOwotICAgIH0KLQotICAgIGlmICghcmVuZGVyZXJGb3JGaXJzdExpbmVT
dHlsZS5pc1JlbmRlcklubGluZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1
dG8mIHBhcmVudFN0eWxlID0gcmVuZGVyZXJGb3JGaXJzdExpbmVTdHlsZS5wYXJlbnQoKS0+Zmly
c3RMaW5lU3R5bGUoKTsKLSAgICBpZiAoJnBhcmVudFN0eWxlID09ICZyZW5kZXJlckZvckZpcnN0
TGluZVN0eWxlLnBhcmVudCgpLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGlmIChyZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmlzQW5vbnltb3VzKCkpIHsKLSAgICAg
ICAgYXV0byogdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlDb250ZW50c1BhcmVudCA9IFJlbmRlclRl
eHQ6OmZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRhdGUocmVuZGVyZXJG
b3JGaXJzdExpbmVTdHlsZSk7Ci0gICAgICAgIGlmICghdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlD
b250ZW50c1BhcmVudCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBhdXRv
KiBjb21wb3NlZFRyZWVQYXJlbnRFbGVtZW50ID0gdGV4dFJlbmRlcmVyV2l0aERpc3BsYXlDb250
ZW50c1BhcmVudC0+dGV4dE5vZGUoKS0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCk7Ci0g
ICAgICAgIGlmICghY29tcG9zZWRUcmVlUGFyZW50RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgIGF1dG8gc3R5bGUgPSBjb21wb3NlZFRyZWVQYXJlbnRFbGVt
ZW50LT5zdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCpjb21wb3NlZFRyZWVQYXJlbnRF
bGVtZW50LCB7ICZwYXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKLSAgICAgICAgQVNTRVJUKHN0
eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKTsKLQotICAgICAgICAvLyBX
ZSBhY3QgYXMgaWYgdGhlcmUgd2FzIGFuIHVuc3R5bGVkIDxzcGFuPiBhcm91bmQgdGhlIHRleHQg
bm9kZS4gT25seSBzdHlsaW5nIGhhcHBlbnMgdmlhIGluaGVyaXRhbmNlLgotICAgICAgICBhdXRv
IGZpcnN0TGluZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwotICAgICAgICBmaXJz
dExpbmVTdHlsZS0+aW5oZXJpdEZyb20oKnN0eWxlKTsKLSAgICAgICAgcmV0dXJuIGZpcnN0TGlu
ZVN0eWxlOwotICAgIH0KLQotICAgIHJldHVybiByZW5kZXJlckZvckZpcnN0TGluZVN0eWxlLmVs
ZW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqZWxlbWVudCgpLCB7ICZw
YXJlbnRTdHlsZSB9KS5yZW5kZXJTdHlsZTsKLX0KLQogY29uc3QgUmVuZGVyU3R5bGUmIFJlbmRl
ckVsZW1lbnQ6OmZpcnN0TGluZVN0eWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIXZpZXcoKS51c2Vz
Rmlyc3RMaW5lUnVsZXMoKSkKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGp1
c3Qgc2V0IGFub255bW91cyBibG9jayBmaXJzdC1saW5lIHN0eWxlcyBjb3JyZWN0bHkuCisgICAg
aWYgKGlzQW5vbnltb3VzQmxvY2soKSkgeworICAgICAgICBpZiAoIXByZXZpb3VzSW5GbG93U2li
bGluZygpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZmlyc3RMaW5lU3R5bGUgPSBwYXJlbnQo
KS0+c3R5bGUoKS5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gKmZpcnN0TGluZVN0eWxlOworICAgICAgICB9CiAgICAgICAg
IHJldHVybiBzdHlsZSgpOwotCi0gICAgaWYgKCFtX2hhc1ZhbGlkQ2FjaGVkRmlyc3RMaW5lU3R5
bGUpIHsKLSAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IGNvbXB1dGVGaXJzdExpbmVTdHls
ZSgpOwotICAgICAgICBpZiAoZmlyc3RMaW5lU3R5bGUgfHwgaGFzUmFyZURhdGEoKSkKLSAgICAg
ICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyRWxlbWVudCY+KCp0aGlzKS5lbnN1cmVSYXJlRGF0YSgp
LmNhY2hlZEZpcnN0TGluZVN0eWxlID0gV1RGTW92ZShmaXJzdExpbmVTdHlsZSk7Ci0gICAgICAg
IG1faGFzVmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IHRydWU7CiAgICAgfQogCi0gICAgcmV0
dXJuIChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUpID8g
KnJhcmVEYXRhKCkuY2FjaGVkRmlyc3RMaW5lU3R5bGUgOiBzdHlsZSgpOworICAgIGlmIChhdXRv
KiBmaXJzdExpbmVTdHlsZSA9IHN0eWxlKCkuZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQ6
OkZpcnN0TGluZSkpCisgICAgICAgIHJldHVybiAqZmlyc3RMaW5lU3R5bGU7CisKKyAgICByZXR1
cm4gc3R5bGUoKTsKIH0KIAogU3R5bGVEaWZmZXJlbmNlIFJlbmRlckVsZW1lbnQ6OmFkanVzdFN0
eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgT3B0aW9uU2V0PFN0eWxlRGlmZmVy
ZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eT4gY29udGV4dFNlbnNpdGl2ZVByb3BlcnRpZXMp
IGNvbnN0CkBAIC04MDMsMTYgKzc2MSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZW5kZXJlckhh
c0JhY2tncm91bmQoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIHJl
bmRlcmVyICYmIHJlbmRlcmVyLT5oYXNCYWNrZ3JvdW5kKCk7CiB9CiAKLXZvaWQgUmVuZGVyRWxl
bWVudDo6aW52YWxpZGF0ZUNhY2hlZEZpcnN0TGluZVN0eWxlKCkKLXsKLSAgICBpZiAoIW1faGFz
VmFsaWRDYWNoZWRGaXJzdExpbmVTdHlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faGFzVmFs
aWRDYWNoZWRGaXJzdExpbmVTdHlsZSA9IGZhbHNlOwotICAgIC8vIEludmFsaWRhdGUgdGhlIHN1
YnRyZWUgYXMgZGVzY2VuZGFudCdzIGZpcnN0IGxpbmUgc3R5bGUgbWF5IGRlcGVuZCBvbiBhbmNl
c3RvcidzLgotICAgIGZvciAoYXV0byYgZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJl
bmRlckVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgZGVzY2VuZGFudC5tX2hhc1ZhbGlkQ2FjaGVk
Rmlyc3RMaW5lU3R5bGUgPSBmYWxzZTsKLX0KLQogdm9pZCBSZW5kZXJFbGVtZW50OjpzdHlsZVdp
bGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MoKS5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250
cygpIHx8IG5ld1N0eWxlLmZvbnREZXNjcmlwdGlvbigpLnNob3VsZEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzKCkgPT0gQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vKTsKQEAgLTg4Myw5ICs4MzEs
NiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2Ug
ZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ldwogICAgICAgICAgICAgY2xlYXJQb3NpdGlvbmVk
U3RhdGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChuZXdTdHlsZS5oYXNQc2V1ZG9TdHls
ZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSB8fCBvbGRTdHlsZS0+aGFzUHNldWRvU3R5bGUoUHNldWRv
SWQ6OkZpcnN0TGluZSkpCi0gICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkRmlyc3RMaW5lU3R5
bGUoKTsKLQogICAgICAgICBzZXRIb3Jpem9udGFsV3JpdGluZ01vZGUodHJ1ZSk7CiAgICAgICAg
IHNldEhhc1Zpc2libGVCb3hEZWNvcmF0aW9ucyhmYWxzZSk7CiAgICAgICAgIHNldEhhc05vblZp
c2libGVPdmVyZmxvdyhmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAppbmRleCA2ZTk3NWQzZDA3MjhjNjU5ODIxNjQ5ZjBmNTc4MGJmMDYwYWVhYjM2Li41MWM1
NTJjYmQ5ZTdmZDJiN2NiZTlkMTJkY2ZhM2YxMzFmZjdkZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTM1MSw4ICszNTEsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiwgY29uc3QgU2hhcGVWYWx1
ZSopOwogCiAgICAgU3R5bGVEaWZmZXJlbmNlIGFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURp
ZmZlcmVuY2UsIE9wdGlvblNldDxTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVy
dHk+KSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNvbXB1dGVGaXJz
dExpbmVTdHlsZSgpIGNvbnN0OwotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlZEZpcnN0TGluZVN0
eWxlKCk7CiAKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsIHsgcmV0dXJu
ICFpc1Zpc2libGVJblZpZXdwb3J0KCk7IH0KICAgICBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIGlt
YWdlRnJhbWVBdmFpbGFibGUoQ2FjaGVkSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25z
dCBJbnRSZWN0KiBjaGFuZ2VSZWN0KSBmaW5hbDsKQEAgLTM4MSw3ICszNzksNiBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1faGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlIDogMTsKICAgICB1bnNp
Z25lZCBtX2lzQ29udGludWF0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2lzRmlyc3RMZXR0ZXIg
OiAxOwotICAgIG11dGFibGUgdW5zaWduZWQgbV9oYXNWYWxpZENhY2hlZEZpcnN0TGluZVN0eWxl
IDogMTsKIAogICAgIHVuc2lnbmVkIG1fcmVuZGVyQmxvY2tIYXNNYXJnaW5CZWZvcmVRdWlyayA6
IDE7CiAgICAgdW5zaWduZWQgbV9yZW5kZXJCbG9ja0hhc01hcmdpbkFmdGVyUXVpcmsgOiAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAxMGIwZDNjZWE2
NzZhODlkMGIxZGYxMWU3MzI3ZTM0YjUzYTQ0NmZjLi5kY2E3M2U4OTVkM2RhYWE1ZDcwMTliYTQ1
NDI4NTJjYjkzYTdmMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcApAQCAtNDkxLDExICs0OTEsNiBAQCBSZW5kZXJCb3gqIFJlbmRlck9iamVjdDo6ZW5jbG9z
aW5nU2Nyb2xsYWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCkgY29uc3QKICAgICByZXR1cm4gZG9j
dW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkt
PnJlbmRlckJveCgpIDogbnVsbHB0cjsKIH0KIAotUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6
Zmlyc3RMaW5lQmxvY2soKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwotfQotCiBzdGF0
aWMgaW5saW5lIGJvb2wgb2JqZWN0SXNSZWxheW91dEJvdW5kYXJ5KGNvbnN0IFJlbmRlckVsZW1l
bnQqIG9iamVjdCkKIHsKICAgICAvLyBGSVhNRTogSW4gZnV0dXJlIGl0IG1heSBiZSBwb3NzaWJs
ZSB0byBicm9hZGVuIHRoZXNlIGNvbmRpdGlvbnMgaW4gb3JkZXIgdG8gaW1wcm92ZSBwZXJmb3Jt
YW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBmMGVlYWFl
Yzk4NGQ4M2I2YWQ2ZDE5YWVlOTY1OWUzYjM2M2Y0ZmU3Li4zY2RkMTgwMWQyNjAxOTg4ZTQyZWQ3
YjJlYWZmOGRmMzhlMTNmMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCkBAIC0xNzMsOSArMTczLDYgQEAgcHVibGljOgogCiAgICAgLy8gQ3JlYXRlcyBhIHNjb3Bl
IHdoZXJlIHRoaXMgb2JqZWN0IHdpbGwgYXNzZXJ0IG9uIGNhbGxzIHRvIHNldE5lZWRzTGF5b3V0
KCkuCiAgICAgY2xhc3MgU2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVuU2NvcGU7Ci0KLSAgICAvLyBP
YnRhaW5zIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBibG9jayAoaW5jbHVkaW5nIHRoaXMgYmxvY2sp
IHRoYXQgY29udHJpYnV0ZXMgYSBmaXJzdC1saW5lIHN0eWxlIHRvIG91ciBpbmxpbmUgY2hpbGRy
ZW4uCi0gICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdDsKICAg
ICAKICAgICAvLyBSZW5kZXJPYmplY3QgdHJlZSBtYW5pcHVsYXRpb24KICAgICAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KQEAgLTk0Niw3ICs5NDMsNiBAQCBwcml2
YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChwYWludENvbnRhaW5tZW50QXBwbGll
cywgUGFpbnRDb250YWlubWVudEFwcGxpZXMpOwogCiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxl
bWVudAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGNhY2hlZEZpcnN0TGlu
ZVN0eWxlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4g
cmVmZXJlbmNlZFNWR1Jlc291cmNlczsKICAgICAgICAgV2Vha1B0cjxSZW5kZXJCbG9ja0Zsb3c+
IGJhY2tkcm9wUmVuZGVyZXI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5UnVuLmNwcAppbmRleCA2YmRhNjhkMDFkNGMxOGY3Y2MxNGFlN2UxOGUwMDMxMjM2MGI5
NjBkLi40NjExOWM1OWY2MjgyZTk5ZjI1NTE1ODYzZDQyMzcxZWE1Yjc3NjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCkBAIC04NSwxMSArODUsNiBAQCBS
ZW5kZXJSdWJ5QmFzZSogUmVuZGVyUnVieVJ1bjo6cnVieUJhc2UoKSBjb25zdAogICAgIHJldHVy
biBjaGlsZCAmJiBjaGlsZC0+aXNSdWJ5QmFzZSgpID8gc3RhdGljX2Nhc3Q8UmVuZGVyUnVieUJh
c2UqPihjaGlsZCkgOiBudWxscHRyOwogfQogCi1SZW5kZXJCbG9jayogUmVuZGVyUnVieVJ1bjo6
Zmlyc3RMaW5lQmxvY2soKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwotfQotCiBib29s
IFJlbmRlclJ1YnlSdW46OmlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQs
IGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QKIHsKICAgICByZXR1cm4gY2hpbGQuaXNJbmxpbmUo
KSB8fCBjaGlsZC5pc1J1YnlUZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1
YnlSdW4uaAppbmRleCBjMjg2NDljNjk1NWFiNTg2NDI2NmVhMmViMGYyMmQxN2VhYjc1N2ZjLi4z
NTg1MTk3OGMyNjhiYWIwOGY3MmMyNDRmOGZkYTUzZjRkMDM0ZWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTU3LDggKzU3LDYgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgUmVuZGVyQmxvY2sqIGZpcnN0TGluZUJsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGdldE92ZXJoYW5nKGJvb2wgZmlyc3RMaW5l
LCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIs
IGZsb2F0JiBzdGFydE92ZXJoYW5nLCBmbG9hdCYgZW5kT3ZlcmhhbmcpIGNvbnN0OwogCiAgICAg
c3RhdGljIFJlbmRlclB0cjxSZW5kZXJSdWJ5UnVuPiBzdGF0aWNDcmVhdGVSdWJ5UnVuKGNvbnN0
IFJlbmRlck9iamVjdCogcGFyZW50UnVieSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcAppbmRleCA3ZTMxODE5ZWE0ZTQ4MTQ2MjdjZDk2NzkxOTAxNjYyZGRiMTNlNGI1
Li41NTA3ZmVlYjYyMmViYzMxMzIyZmE5ZmY2YTRhMDU3ZDg0ZTMzMTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTE0ODYsMTEgKzE0ODYsNiBAQCBSZW5k
ZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQWZ0ZXIoY29uc3QgUmVuZGVyVGFibGVDZWxs
KiBjZWxsKSBjb25zdAogICAgIHJldHVybiBjZWxsLT5zZWN0aW9uKCktPnByaW1hcnlDZWxsQXQo
Y2VsbC0+cm93SW5kZXgoKSwgZWZmQ29sKTsKIH0KIAotUmVuZGVyQmxvY2sqIFJlbmRlclRhYmxl
OjpmaXJzdExpbmVCbG9jaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIExh
eW91dFVuaXQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2Vs
aW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGlu
ZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1
ZU9yQ29tcHV0ZShmaXJzdExpbmVCYXNlbGluZSgpLCBbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuaAppbmRleCA4N2YwYzdhZWQwMmJkMzVmNjc2OTQyODlmNDYyN2U2MDc5
MDRmNTM3Li5jNWUyYjU5M2YyNzZkOGMwMGU2ZTg3MzA3MGYxMjEwN2ViOTBmNjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMzA3LDggKzMwNyw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVkQ29sdW1ucygpOwogCiAgICAgdm9pZCBpbnZh
bGlkYXRlQ2FjaGVkQ29sdW1uT2Zmc2V0cygpOwotCi0gICAgUmVuZGVyQmxvY2sqIGZpcnN0TGlu
ZUJsb2NrKCkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgo
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDM2
NWQyZjlhMjljMGZhYTdhOWYwYWMwMzg4MjFlMGY4MTA1MzQ1ZTkuLjQwODc5MjkyNWNkOTU0NDZk
YTE5ZDY1MGNhNzExODQ2NGM5NjdmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKQEAgLTE4MjEsMTggKzE4MjEsNCBAQCB2b2lkIFJlbmRlclRleHQ6OnNldElubGlu
ZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMoUmVuZGVySW5saW5lKiB3cmFwcGVyKQogICAgIG1f
aGFzSW5saW5lV3JhcHBlckZvckRpc3BsYXlDb250ZW50cyA9IHRydWU7CiB9CiAKLVJlbmRlclRl
eHQqIFJlbmRlclRleHQ6OmZpbmRCeURpc3BsYXlDb250ZW50c0lubGluZVdyYXBwZXJDYW5kaWRh
dGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCi17Ci0gICAgYXV0byogZmlyc3RDaGlsZCA9IHJl
bmRlcmVyLmZpcnN0Q2hpbGQoKTsKLSAgICBpZiAoIWlzPFJlbmRlclRleHQ+KGZpcnN0Q2hpbGQp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3du
Y2FzdDxSZW5kZXJUZXh0PigqZmlyc3RDaGlsZCk7Ci0gICAgaWYgKHRleHRSZW5kZXJlci5pbmxp
bmVXcmFwcGVyRm9yRGlzcGxheUNvbnRlbnRzKCkgIT0gJnJlbmRlcmVyKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBBU1NFUlQodGV4dFJlbmRlcmVyLnRleHROb2RlKCkpOwotICAgIEFT
U0VSVChyZW5kZXJlci5maXJzdENoaWxkKCkgPT0gcmVuZGVyZXIubGFzdENoaWxkKCkpOwotICAg
IHJldHVybiAmdGV4dFJlbmRlcmVyOwotCi19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGFlMmU4NDZlMjUzZWZjNzQ3OWY3
ODc0N2VhNTk5NWM4ODdlNWUzYzkuLmY3YWMyNjkxYTQ1NzZlNmNkODJhNTIyOGY2ZDliZTliOGZi
NzFiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMTgxLDggKzE4
MSw2IEBAIHB1YmxpYzoKICAgICBSZW5kZXJJbmxpbmUqIGlubGluZVdyYXBwZXJGb3JEaXNwbGF5
Q29udGVudHMoKTsKICAgICB2b2lkIHNldElubGluZVdyYXBwZXJGb3JEaXNwbGF5Q29udGVudHMo
UmVuZGVySW5saW5lKik7CiAKLSAgICBzdGF0aWMgUmVuZGVyVGV4dCogZmluZEJ5RGlzcGxheUNv
bnRlbnRzSW5saW5lV3JhcHBlckNhbmRpZGF0ZShSZW5kZXJFbGVtZW50Jik7Ci0KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWVhc3VyZVRleHRDYWxsYmFjaz4KICAgICBzdGF0aWMgZmxvYXQgbWVh
c3VyZVRleHRDb25zaWRlcmluZ1Bvc3NpYmxlVHJhaWxpbmdTcGFjZShib29sIGN1cnJlbnRDaGFy
YWN0ZXJJc1NwYWNlLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCB3b3JkTGVuZ3RoLCBX
b3JkVHJhaWxpbmdTcGFjZSYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBN
ZWFzdXJlVGV4dENhbGxiYWNrJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA1MTZhNGIxYjZiNzQwNTA3MTIxOGU0ZGZmNzUwMDll
ZTlkNmE0ZGJkLi41NDA5NTgwZTA2Mjc1YjM2MDU3M2MyYzcyNTI2NzlkMmFlMDYwOTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTQw
NSw5ICs0MDUsNiBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmdldENhY2hlZFBzZXVkb1N0
eWxlKFBzZXVkb0lkIHBpZCkgY29uc3QKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzIHx8
ICFtX2NhY2hlZFBzZXVkb1N0eWxlcy0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGlmIChzdHlsZVR5cGUoKSAhPSBQc2V1ZG9JZDo6Tm9uZSkgCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCiAgICAgZm9yIChhdXRvJiBwc2V1ZG9TdHlsZSA6ICptX2NhY2hlZFBzZXVk
b1N0eWxlcykgewogICAgICAgICBpZiAocHNldWRvU3R5bGUtPnN0eWxlVHlwZSgpID09IHBpZCkK
ICAgICAgICAgICAgIHJldHVybiBwc2V1ZG9TdHlsZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNjJlNzA2Mzc1MDgzYjE1MWRhMTEz
ZjVkOWY1YzdjYWI4YmJiMjdlOC4uZTc0YmVlODY1YWM4ODk4N2RiNjE3MmVlYjI0YThhMjMxNjdl
YjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
QEAgLTI0NzcsNCArMjQ3Nyw5IEBAIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUgJiYgc3R5
bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Tm9uZSAmJiBzdHlsZS0+Y29udGVudERhdGEo
KTsKIH0KIAoraW5saW5lIGJvb2wgZ2VuZXJhdGVzQm94KGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKK3sKKyAgICByZXR1cm4gc3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYm
IHN0eWxlLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6Q29udGVudHM7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCmluZGV4IDFhZTMxMzBlZmRiYzg0MzkwNTFmNjk3N2NkZmYwODI4ODkzM2Q0MTUu
LjU4OGFmMWExZjc3NzI5NTMxMjk3ZWNkOTBiYzYwYjY1MzI3ZjFlYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDg4LDExICs0ODgs
NCBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHVGV4dDo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKSBjb25zdAogICAgIHJldHVybiByZXBhaW50UmVjdDsKIH0KIAotLy8gRml4IGZvciA8cmRh
cjovL3Byb2JsZW0vODA0ODg3NT4uIFdlIHNob3VsZCBub3QgcmVuZGVyIDpmaXJzdC1saW5lIENT
UyBTdHlsZQotLy8gaW4gYSBTVkcgdGV4dCBlbGVtZW50IGNvbnRleHQuCi1SZW5kZXJCbG9jayog
UmVuZGVyU1ZHVGV4dDo6Zmlyc3RMaW5lQmxvY2soKSBjb25zdAotewotICAgIHJldHVybiAwOwot
fQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmlu
ZGV4IGJhNzE5NDg1ZTkxYmQwYzkyZjIwMWZhMWQyMTg1YmFiNzc2NmFmYjkuLjMyYzZlMTI0ODM2
N2M1NTUzNzE3MjRkNGU3M2M2YWJiMzA4YzNkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC04MSw4ICs4MSw2IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogICAgIEFmZmluZVRyYW5zZm9ybSBs
b2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0KIAotICAgIFJlbmRlckJsb2NrKiBmaXJzdExpbmVCbG9jaygpIGNvbnN0IG92ZXJyaWRlOwot
CiAgICAgYm9vbCBzaG91bGRIYW5kbGVTdWJ0cmVlTXV0YXRpb25zKCkgY29uc3Q7CiAKICAgICBi
b29sIG1fbmVlZHNSZW9yZGVyaW5nIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJh
dGVkQ29udGVudC5jcHAKaW5kZXggZThiOWVlNTJmMDc4ZTExODEwMTUyOTBhYTM0NDUzOGRlMzli
NzY2Ni4uYzI5NTZlYjdlMGNkNDNjYTNjZDRjYzljMGMwZWQzN2JiYzg3MDA5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAKQEAgLTE0NywxMCArMTQ3LDEx
IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVk
b0VsZW1lbnQoRWxlbWVudCYgY3VycmVudCwKIAogICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0
ZSBjb250ZW50c1VwZGF0ZSB7IFdURk1vdmUoY29udGVudHNTdHlsZSksIHN0eWxlQ2hhbmdlLCBl
bGVtZW50VXBkYXRlLnJlY29tcG9zaXRlTGF5ZXIgfTsKICAgICAgICAgbV91cGRhdGVyLnVwZGF0
ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShjb250ZW50c1VwZGF0ZSkp
OwotICAgICAgICBwc2V1ZG9FbGVtZW50LT5zdG9yZURpc3BsYXlDb250ZW50c1N0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZVB0cigqdXBkYXRlU3R5bGUpKTsKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVt
ZW50VXBkYXRlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVJbmNsdWRpbmdQc2V1ZG9FbGVtZW50
cygqdXBkYXRlU3R5bGUpOworICAgICAgICBwc2V1ZG9FbGVtZW50LT5zdG9yZURpc3BsYXlDb250
ZW50c1N0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUocHNldWRvRWxlbWVudFVw
ZGF0ZVN0eWxlKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gcHNldWRvRWxlbWVudFVw
ZGF0ZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGVTdHlsZSk7Ci0gICAgICAg
IFN0eWxlOjpFbGVtZW50VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUgeyBXVEZNb3ZlKHBzZXVk
b0VsZW1lbnRVcGRhdGVTdHlsZSksIHN0eWxlQ2hhbmdlLCBlbGVtZW50VXBkYXRlLnJlY29tcG9z
aXRlTGF5ZXIgfTsKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y2xvbmVJbmNsdWRpbmdQc2V1ZG9FbGVtZW50cygqdXBkYXRlU3R5bGUpOworICAg
ICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBwc2V1ZG9FbGVtZW50VXBkYXRlIHsgbWFrZVVuaXF1
ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUpKSwgc3R5bGVD
aGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21wb3NpdGVMYXllciB9OwogICAgICAgICBtX3VwZGF0
ZXIudXBkYXRlRWxlbWVudFJlbmRlcmVyKCpwc2V1ZG9FbGVtZW50LCBXVEZNb3ZlKHBzZXVkb0Vs
ZW1lbnRVcGRhdGUpKTsKICAgICAgICAgQVNTRVJUKCFwc2V1ZG9FbGVtZW50LT5oYXNEaXNwbGF5
Q29udGVudHMoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwCmluZGV4IGE0NWY5ZTYyNDczZjMyMzFhYmM1ZjY1NDdiNmVlYTcyN2YxMWE5ZjMuLjIw
NzY0YzdkZWNlNjBjMTkwYWNmZGYzZDgyZGU0NzJkYmIyMTRjMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1ldGVyRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNs
dWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKQEAgLTI1MCwxNSArMjUxLDE5IEBAIGF1dG8g
VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KSAtPiBzdGQ6OnBh
aXI8RWxlbWVudFVwZGF0ZSwKICAgICB9CiAKICAgICBhdXRvIHJlc29sdmVBbmRBZGRQc2V1ZG9F
bGVtZW50U3R5bGUgPSBbJl0oUHNldWRvSWQgcHNldWRvSWQpIHsKLSAgICAgICAgYXV0byBwc2V1
ZG9FbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgcHNl
dWRvSWQpOworICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRv
RWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgdXBkYXRlKTsKICAgICAgICAgaWYgKCFwc2V1ZG9F
bGVtZW50VXBkYXRlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIENo
YW5nZTo6Tm9uZTsKICAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRVcGRhdGUtPmNoYW5nZSAhPSBD
aGFuZ2U6Ok5vbmUpCiAgICAgICAgICAgICB1cGRhdGUuY2hhbmdlID0gc3RkOjptYXgodXBkYXRl
LmNoYW5nZSwgQ2hhbmdlOjpOb25Jbmhlcml0ZWQpOwogICAgICAgICBpZiAocHNldWRvRWxlbWVu
dFVwZGF0ZS0+cmVjb21wb3NpdGVMYXllcikKICAgICAgICAgICAgIHVwZGF0ZS5yZWNvbXBvc2l0
ZUxheWVyID0gdHJ1ZTsKICAgICAgICAgdXBkYXRlLnN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHls
ZShXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGUtPnN0eWxlKSk7CisgICAgICAgIHJldHVybiBw
c2V1ZG9FbGVtZW50VXBkYXRlLT5jaGFuZ2U7CiAgICAgfTsKKyAgICAKKyAgICBpZiAocmVzb2x2
ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKSAhPSBDaGFuZ2U6
Ok5vbmUpCisgICAgICAgIGRlc2NlbmRhbnRzVG9SZXNvbHZlID0gRGVzY2VuZGFudHNUb1Jlc29s
dmU6OkFsbDsKIAogICAgIHJlc29sdmVBbmRBZGRQc2V1ZG9FbGVtZW50U3R5bGUoUHNldWRvSWQ6
Ok1hcmtlcik7CiAgICAgcmVzb2x2ZUFuZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6
QmVmb3JlKTsKQEAgLTI3OCwxNSArMjgzLDQyIEBAIGF1dG8gVHJlZVJlc29sdmVyOjpyZXNvbHZl
RWxlbWVudChFbGVtZW50JiBlbGVtZW50KSAtPiBzdGQ6OnBhaXI8RWxlbWVudFVwZGF0ZSwKICAg
ICByZXR1cm4geyBXVEZNb3ZlKHVwZGF0ZSksIGRlc2NlbmRhbnRzVG9SZXNvbHZlIH07CiB9CiAK
LXN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRv
U3R5bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0
ZSwgUHNldWRvSWQgcHNldWRvSWQpCitpbmxpbmUgYm9vbCBzdXBwb3J0c0ZpcnN0TGluZVBzZXVk
b0VsZW1lbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8gZGlzcGxheSA9
IHN0eWxlLmRpc3BsYXkoKTsKKyAgICByZXR1cm4gZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6Qmxv
Y2sKKyAgICAgICAgfHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0KKyAgICAgICAg
fHwgZGlzcGxheSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2sKKyAgICAgICAgfHwgZGlzcGxh
eSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsCisgICAgICAgIHx8IGRpc3BsYXkgPT0gRGlzcGxh
eVR5cGU6OlRhYmxlQ2FwdGlvbgorICAgICAgICB8fCBkaXNwbGF5ID09IERpc3BsYXlUeXBlOjpG
bG93Um9vdDsKK307CisKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVy
OjpyZXNvbHZlUHNldWRvRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG9J
ZCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSkKIHsKICAgICBpZiAocHNldWRv
SWQgPT0gUHNldWRvSWQ6OkJhY2tkcm9wICYmICFlbGVtZW50LmlzSW5Ub3BMYXllcigpKQogICAg
ICAgICByZXR1cm4geyB9OwogICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6TWFya2VyICYm
IGVsZW1lbnRVcGRhdGUuc3R5bGUtPmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6TGlzdEl0ZW0p
CiAgICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpGaXJz
dExpbmUgJiYgIXNjb3BlKCkucmVzb2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQorICAgICAg
ICByZXR1cm4geyB9OwogICAgIGlmIChlbGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgaWYgKCFlbGVtZW50
VXBkYXRlLnN0eWxlLT5oYXNQc2V1ZG9TdHlsZShwc2V1ZG9JZCkpCisKKyAgICBpZiAoIWVsZW1l
bnRVcGRhdGUuc3R5bGUtPmhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKSkgeworICAgICAgICBpZiAo
cHNldWRvSWQgPT0gUHNldWRvSWQ6OkZpcnN0TGluZSkgeworICAgICAgICAgICAgYXV0byBmaXJz
dExpbmVTdHlsZSA9IHJlc29sdmVJbmhlcml0ZWRGaXJzdExpbmVQc2V1ZG9FbGVtZW50KGVsZW1l
bnQsIGVsZW1lbnRVcGRhdGUpOworICAgICAgICAgICAgaWYgKCFmaXJzdExpbmVTdHlsZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgICAgICBhdXRvKiBvbGRTdHlsZSA9
IGVsZW1lbnQucmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5l
KTsKKyAgICAgICAgICAgIGF1dG8gY2hhbmdlID0gb2xkU3R5bGUgPyBkZXRlcm1pbmVDaGFuZ2Uo
Km9sZFN0eWxlLCAqZmlyc3RMaW5lU3R5bGUpIDogQ2hhbmdlOjpSZW5kZXJlcjsKKyAgICAgICAg
ICAgIHJldHVybiBFbGVtZW50VXBkYXRlIHsgV1RGTW92ZShmaXJzdExpbmVTdHlsZSksIGNoYW5n
ZSB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgaWYgKHBz
ZXVkb0lkID09IFBzZXVkb0lkOjpGaXJzdExpbmUgJiYgIXN1cHBvcnRzRmlyc3RMaW5lUHNldWRv
RWxlbWVudCgqZWxlbWVudFVwZGF0ZS5zdHlsZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBhdXRvIHJlc29sdXRpb25Db250ZXh0ID0gbWFrZVJlc29sdXRpb25Db250ZXh0Rm9yUHNldWRv
RWxlbWVudChlbGVtZW50VXBkYXRlKTsKQEAgLTI5NSwxMSArMzI3LDg3IEBAIHN0ZDo6b3B0aW9u
YWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVu
dCYgZWxlbWVudCwKICAgICBpZiAoIXBzZXVkb1N0eWxlKQogICAgICAgICByZXR1cm4geyB9Owog
CisgICAgLy8gRklYTUU6IFRoaXMgdGVzdCBzaG91bGRuJ3QgYmUgbmVlZGVkLgogICAgIGJvb2wg
aGFzQW5pbWF0aW9ucyA9IHBzZXVkb1N0eWxlLT5oYXNBbmltYXRpb25zT3JUcmFuc2l0aW9ucygp
IHx8IGVsZW1lbnQuaGFzS2V5ZnJhbWVFZmZlY3RzKHBzZXVkb0lkKTsKLSAgICBpZiAoIXBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0
aW9ucykKKyAgICBpZiAocHNldWRvSWQgIT0gUHNldWRvSWQ6OkZpcnN0TGluZSAmJiAhcHNldWRv
RWxlbWVudFJlbmRlcmVySXNOZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkpICYmICFoYXNBbmltYXRp
b25zKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGNyZWF0ZUFuaW1hdGVkRWxl
bWVudFVwZGF0ZShXVEZNb3ZlKHBzZXVkb1N0eWxlKSwgeyBlbGVtZW50LCBwc2V1ZG9JZCB9LCBl
bGVtZW50VXBkYXRlLmNoYW5nZSwgcmVzb2x1dGlvbkNvbnRleHQpOworICAgIGF1dG8gYW5pbWF0
ZWRVcGRhdGUgPSBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHls
ZSksIHsgZWxlbWVudCwgcHNldWRvSWQgfSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UsIHJlc29sdXRp
b25Db250ZXh0KTsKKworICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlIHx8IHBz
ZXVkb0lkID09IFBzZXVkb0lkOjpBZnRlcikgeworICAgICAgICAvLyA6OmZpcnN0LWxpbmUgY2Fu
IGluaGVyaXQgdG8gOjpiZWZvcmUvOjphZnRlcgorICAgICAgICBhdXRvIGZpcnN0TGluZUNvbnRl
eHQgPSBtYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0ZWRGaXJzdExpbmUoZWxlbWVudFVw
ZGF0ZSwgKmVsZW1lbnRVcGRhdGUuc3R5bGUpOworICAgICAgICBpZiAoZmlyc3RMaW5lQ29udGV4
dCkgeworICAgICAgICAgICAgYXV0byBmaXJzdExpbmVTdHlsZSA9IHNjb3BlKCkucmVzb2x2ZXIt
PnBzZXVkb1N0eWxlRm9yRWxlbWVudChlbGVtZW50LCB7IHBzZXVkb0lkIH0sICpmaXJzdExpbmVD
b250ZXh0KTsKKyAgICAgICAgICAgIGZpcnN0TGluZVN0eWxlLT5zZXRTdHlsZVR5cGUoUHNldWRv
SWQ6OkZpcnN0TGluZSk7CisgICAgICAgICAgICBhbmltYXRlZFVwZGF0ZS5zdHlsZS0+YWRkQ2Fj
aGVkUHNldWRvU3R5bGUoV1RGTW92ZShmaXJzdExpbmVTdHlsZSkpOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIGFuaW1hdGVkVXBkYXRlOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUluaGVyaXRlZEZpcnN0TGluZVBzZXVkb0Vs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0
ZSkKK3sKKyAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpJbmxpbmUpIHsKKyAgICAgICAgYXV0byogcGFyZW50ID0gYm94R2VuZXJhdGluZ1BhcmVu
dCgpOworICAgICAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICAgICAgYXV0byByZXNvbHV0aW9uQ29udGV4dCA9IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvcklu
aGVyaXRlZEZpcnN0TGluZShlbGVtZW50VXBkYXRlLCBwYXJlbnQtPnN0eWxlKTsKKyAgICAgICAg
aWYgKCFyZXNvbHV0aW9uQ29udGV4dCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAg
ICAgYXV0byBlbGVtZW50U3R5bGUgPSBzY29wZSgpLnJlc29sdmVyLT5zdHlsZUZvckVsZW1lbnQo
ZWxlbWVudCwgKnJlc29sdXRpb25Db250ZXh0KTsKKyAgICAgICAgYXV0byBmaXJzdExpbmVTdHls
ZSA9IFdURk1vdmUoZWxlbWVudFN0eWxlLnJlbmRlclN0eWxlKTsKKyAgICAgICAgZmlyc3RMaW5l
U3R5bGUtPnNldFN0eWxlVHlwZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKKworICAgICAgICByZXR1
cm4gZmlyc3RMaW5lU3R5bGU7CisgICAgfQorCisgICAgYXV0byBpc0NoaWxkSW5CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0ID0gW10oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7CisgICAgICAgIC8v
IEZJWE1FOiBJbmNvbXBsZXRlLiBUaGVyZSBzaG91bGQgYmUgc2hhcmVkIGNvZGUgd2l0aCBsYXlv
dXQgZm9yIHRoaXMuCisgICAgICAgIGlmIChzdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6
OkJsb2NrKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoc3R5bGUuaGFz
T3V0T2ZGbG93UG9zaXRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKHN0eWxlLmZsb2F0aW5nKCkgIT0gRmxvYXQ6Ok5vbmUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmIChzdHlsZS5vdmVyZmxvd1goKSAhPSBPdmVyZmxvdzo6VmlzaWJs
ZSB8fCBzdHlsZS5vdmVyZmxvd1koKSAhPSBPdmVyZmxvdzo6VmlzaWJsZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIGF1dG8g
Zmlyc3RMaW5lRWxlbWVudEZvckJsb2NrID0gWyZdKCkgLT4gRWxlbWVudCogeworICAgICAgICBp
ZiAoIWlzQ2hpbGRJbkJsb2NrRm9ybWF0dGluZ0NvbnRleHQoKmVsZW1lbnRVcGRhdGUuc3R5bGUp
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gOjpmaXJzdC1saW5l
IGlzIG9ubHkgcHJvcGFnYXRlZCB0byB0aGUgZmlyc3QgYmxvY2suCisgICAgICAgIGlmIChwYXJl
bnQoKS5yZXNvbHZlZEZpcnN0Qm94R2VuZXJhdGluZ0NoaWxkKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYXJlbnQgOiBtYWtlUmV2ZXJzZWRSYW5n
ZShtX3BhcmVudFN0YWNrKSkgeworICAgICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgaWYgKCFzdXBwb3J0c0ZpcnN0TGluZVBzZXVkb0VsZW1lbnQocGFyZW50LnN0
eWxlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChw
YXJlbnQuc3R5bGUuaGFzUHNldWRvU3R5bGUoUHNldWRvSWQ6OkZpcnN0TGluZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHBhcmVudC5lbGVtZW50OworICAgICAgICAgICAgaWYgKCFpc0NoaWxk
SW5CbG9ja0Zvcm1hdHRpbmdDb250ZXh0KHBhcmVudC5zdHlsZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fTsKKworICAgIGF1dG8gZmlyc3RMaW5lRWxlbWVudCA9IGZpcnN0TGluZUVsZW1lbnRGb3JCbG9j
aygpOworICAgIGlmICghZmlyc3RMaW5lRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8gcmVzb2x1dGlvbkNvbnRleHQgPSBtYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JQc2V1
ZG9FbGVtZW50KGVsZW1lbnRVcGRhdGUpOworICAgIC8vIENhbid0IHVzZSB0aGUgY2FjaGVkIHN0
YXRlIHNpbmNlIHRoZSBlbGVtZW50IGJlaW5nIHJlc29sdmVkIGlzIG5vdCB0aGUgY3VycmVudCBv
bmUuCisgICAgcmVzb2x1dGlvbkNvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlID0gbnVsbHB0
cjsKKworICAgIHJldHVybiBzY29wZSgpLnJlc29sdmVyLT5wc2V1ZG9TdHlsZUZvckVsZW1lbnQo
KmZpcnN0TGluZUVsZW1lbnQsIHsgUHNldWRvSWQ6OkZpcnN0TGluZSB9LCByZXNvbHV0aW9uQ29u
dGV4dCk7CiB9CiAKIFJlc29sdXRpb25Db250ZXh0IFRyZWVSZXNvbHZlcjo6bWFrZVJlc29sdXRp
b25Db250ZXh0KCkKQEAgLTMyMiwyMCArNDMwLDQzIEBAIFJlc29sdXRpb25Db250ZXh0IFRyZWVS
ZXNvbHZlcjo6bWFrZVJlc29sdXRpb25Db250ZXh0Rm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVt
CiAgICAgfTsKIH0KIAotY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94
U3R5bGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uQ29udGV4dD4gVHJlZVJlc29s
dmVyOjptYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JJbmhlcml0ZWRGaXJzdExpbmUoY29uc3QgRWxl
bWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSwgY29uc3QgUmVuZGVyU3R5bGUmIGluaGVyaXRTdHls
ZSkKK3sKKyAgICBpZiAoIXNjb3BlKCkucmVzb2x2ZXItPnVzZXNGaXJzdExpbmVSdWxlcygpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBwYXJlbnRGaXJzdExpbmVTdHlsZSA9IGlu
aGVyaXRTdHlsZS5nZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZDo6Rmlyc3RMaW5lKTsKKyAg
ICBpZiAoIXBhcmVudEZpcnN0TGluZVN0eWxlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
Ly8gRmlyc3QgbGluZSBzdHlsZSBmb3IgaW5saW5lcyBpcyBtYWRlIGJ5IGluaGVyaXRpbmcgZnJv
bSBwYXJlbnQgZmlyc3QgbGluZSBzdHlsZS4KKyAgICByZXR1cm4gUmVzb2x1dGlvbkNvbnRleHQg
eworICAgICAgICBwYXJlbnRGaXJzdExpbmVTdHlsZSwKKyAgICAgICAgcGFyZW50Qm94U3R5bGVG
b3JQc2V1ZG9FbGVtZW50KGVsZW1lbnRVcGRhdGUpLAorICAgICAgICBtX2RvY3VtZW50RWxlbWVu
dFN0eWxlLmdldCgpLAorICAgICAgICAmc2NvcGUoKS5zZWxlY3Rvck1hdGNoaW5nU3RhdGUKKyAg
ICB9OworfQorCithdXRvIFRyZWVSZXNvbHZlcjo6Ym94R2VuZXJhdGluZ1BhcmVudCgpIGNvbnN0
IC0+IGNvbnN0IFBhcmVudCoKIHsKICAgICAvLyAnZGlzcGxheTogY29udGVudHMnIGRvZXNuJ3Qg
Z2VuZXJhdGUgYm94ZXMuCi0gICAgZm9yIChhdXRvIGkgPSBtX3BhcmVudFN0YWNrLnNpemUoKTsg
aS0tOykgewotICAgICAgICBhdXRvJiBwYXJlbnQgPSBtX3BhcmVudFN0YWNrW2ldOworICAgIGZv
ciAoYXV0byYgcGFyZW50IDogbWFrZVJldmVyc2VkUmFuZ2UobV9wYXJlbnRTdGFjaykpIHsKICAg
ICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKHBhcmVudC5zdHlsZS5kaXNw
bGF5KCkgIT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKQotICAgICAgICAgICAgcmV0dXJuICZwYXJl
bnQuc3R5bGU7CisgICAgICAgICAgICByZXR1cm4gJnBhcmVudDsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2NvbnN0IFJlbmRlclN0
eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJveFN0eWxlKCkgY29uc3QKK3sKKyAgICBhdXRvKiBw
YXJlbnQgPSBib3hHZW5lcmF0aW5nUGFyZW50KCk7CisgICAgcmV0dXJuIHBhcmVudCA/ICZwYXJl
bnQtPnN0eWxlIDogbnVsbHB0cjsKK30KKwogY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZl
cjo6cGFyZW50Qm94U3R5bGVGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVs
ZW1lbnRVcGRhdGUpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChlbGVtZW50VXBkYXRlLnN0eWxlLT5k
aXNwbGF5KCkpIHsKQEAgLTU1Niw2ICs2ODcsOSBAQCB2b2lkIFRyZWVSZXNvbHZlcjo6cmVzb2x2
ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgICAgICAgICAgbV91cGRhdGUtPmFkZFRleHQodGV4dCwg
cGFyZW50LmVsZW1lbnQsIFdURk1vdmUodGV4dFVwZGF0ZSkpOwogICAgICAgICAgICAgfQogCisg
ICAgICAgICAgICBpZiAoIXRleHQuZGF0YSgpLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNIVE1M
U3BhY2U+KCkpCisgICAgICAgICAgICAgICAgcGFyZW50LnJlc29sdmVkRmlyc3RCb3hHZW5lcmF0
aW5nQ2hpbGQgPSB0cnVlOworCiAgICAgICAgICAgICB0ZXh0LnNldEhhc1ZhbGlkU3R5bGUoKTsK
ICAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtNjEwLDYgKzc0NCw5IEBAIHZvaWQgVHJlZVJlc29sdmVyOjpyZXNv
bHZlQ29tcG9zZWRUcmVlKCkKICAgICAgICAgaWYgKCFtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0
KQogICAgICAgICAgICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IGhhc0xvYWRpbmdTdHls
ZXNoZWV0KG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLCBlbGVtZW50LCAhc2hvdWxkSXRlcmF0ZUNo
aWxkcmVuKTsKIAorICAgICAgICBpZiAoc3R5bGUgJiYgZ2VuZXJhdGVzQm94KCpzdHlsZSkpCisg
ICAgICAgICAgICBwYXJlbnQucmVzb2x2ZWRGaXJzdEJveEdlbmVyYXRpbmdDaGlsZCA9IHRydWU7
CisKICAgICAgICAgaWYgKCFzaG91bGRJdGVyYXRlQ2hpbGRyZW4pIHsKICAgICAgICAgICAgIGl0
LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggZTgwYWIyNzMwNWMy
YWRmMTNhYmRlZmY0OTVlMTQ5MjQ3MGM2MDU0MC4uODA0NWFiMTFlNjYzNzM3MzgxMDY2ZTAzMzdm
NGRlZTYxM2ExOTVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5o
CkBAIC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjpwYWlyPEVsZW1lbnRVcGRhdGUs
IERlc2NlbmRhbnRzVG9SZXNvbHZlPiByZXNvbHZlRWxlbWVudChFbGVtZW50Jik7CiAKICAgICBz
dGF0aWMgRWxlbWVudFVwZGF0ZSBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiwgY29uc3QgU3R5bGVhYmxlJiwgQ2hhbmdlLCBjb25zdCBSZXNv
bHV0aW9uQ29udGV4dCYpOwotICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gcmVzb2x2
ZVBzZXVkb1N0eWxlKEVsZW1lbnQmLCBjb25zdCBFbGVtZW50VXBkYXRlJiwgUHNldWRvSWQpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gcmVzb2x2ZVBzZXVkb0VsZW1lbnQoRWxl
bWVudCYsIFBzZXVkb0lkLCBjb25zdCBFbGVtZW50VXBkYXRlJik7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiByZXNvbHZlSW5oZXJpdGVkRmlyc3RMaW5lUHNldWRvRWxlbWVudChF
bGVtZW50JiwgY29uc3QgRWxlbWVudFVwZGF0ZSYpOwogCiAgICAgc3RydWN0IFNjb3BlIDogUmVm
Q291bnRlZDxTY29wZT4gewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURURf
V0lUSF9IRUFQX0lERU5USUZJRVIoVHJlZVJlc29sdmVyU2NvcGUpOwpAQCAtOTAsNiArOTEsNyBA
QCBwcml2YXRlOgogICAgICAgICBDaGFuZ2UgY2hhbmdlIHsgQ2hhbmdlOjpOb25lIH07CiAgICAg
ICAgIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFu
dHNUb1Jlc29sdmU6Ok5vbmUgfTsKICAgICAgICAgYm9vbCBkaWRQdXNoU2NvcGUgeyBmYWxzZSB9
OworICAgICAgICBib29sIHJlc29sdmVkRmlyc3RCb3hHZW5lcmF0aW5nQ2hpbGQgeyBmYWxzZSB9
OwogCiAgICAgICAgIFBhcmVudChEb2N1bWVudCYpOwogICAgICAgICBQYXJlbnQoRWxlbWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgQ2hhbmdlLCBEZXNjZW5kYW50c1RvUmVzb2x2ZSk7CkBAIC0x
MTIsNiArMTE0LDggQEAgcHJpdmF0ZToKIAogICAgIFJlc29sdXRpb25Db250ZXh0IG1ha2VSZXNv
bHV0aW9uQ29udGV4dCgpOwogICAgIFJlc29sdXRpb25Db250ZXh0IG1ha2VSZXNvbHV0aW9uQ29u
dGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYpOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVzb2x1dGlvbkNvbnRleHQ+IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvckluaGVyaXRl
ZEZpcnN0TGluZShjb25zdCBFbGVtZW50VXBkYXRlJiwgY29uc3QgUmVuZGVyU3R5bGUmIGluaGVy
aXRTdHlsZSk7CisgICAgY29uc3QgUGFyZW50KiBib3hHZW5lcmF0aW5nUGFyZW50KCkgY29uc3Q7
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlKCkgY29uc3Q7CiAgICAgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxlRm9yUHNldWRvRWxlbWVudChjb25zdCBFbGVt
ZW50VXBkYXRlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MmNhYTBlZGUzMWI3ZjExOTIwZDlkNjU0YTE0
OTE3ZjE4Yjk4YWE4Li4xNmI3ZWY0YmIxZjQ2ZjlkYzhlZGFhMmI3N2NhMWQzYjQ2NmM2MmRjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDMtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgorCisgICAgICAgIFJlc29sdmUgOjpmaXJzdC1saW5lIHN0eWxlIGVhZ2VybHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzM2Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1iYXNl
bGluZS1leHBlY3RlZC50eHQ6CisKIDIwMjItMDMtMDMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJHTCBjb250ZXh0IGNvdW50IGlzIG5vdCBsaW1p
dGVkIGZvciBHUFUgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTU1ZDJmYmM4ZDEzMzA2
MzM3Yzc0ZDRmZjZjODUwNGFjNzQyNWJlMC4uN2E2MDQ2YzkwM2RiY2I0M2ZkZGQ1YzFhOWRhYThl
YzY1NGM1ZjZkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC00NDA5LDExICs0NDA5LDcgQEAgd2Vi
a2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHNldWRvL2ZpcnN0LWxldHRlci0KIHdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1sZXR0ZXItZXhjbHVkZS1pbmxp
bmUtY2hpbGQtbWFya2VyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8y
MTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJz
dC1sZXR0ZXItZXhjbHVkZS1pbmxpbmUtbWFya2VyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXBzZXVkby9maXJzdC1sZXR0ZXItbGlzdC1pdGVtLWR5bmFtaWMtMDAxLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLWNoYW5nZS1pbmxpbmUtY29sb3Iu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxpbmUtY2hhbmdlLWlu
bGluZS1jb2xvci1uZXN0ZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2Zp
cnN0LWxpbmUtb3BhY2l0eS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRv
L2ZpcnN0LWxpbmUtd2l0aC1iZWZvcmUtYWZ0ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzIxNDQ2MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtcHNldWRvL2ZpcnN0LWxpbmUtd2l0aC1vdXQtb2YtZmxvdy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vZ3JhbW1hci1lcnJvci0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogd2Via2l0Lm9yZy9iLzIwNDE2MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtcHNldWRvL21hcmtlci1jb250ZW50LTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjA0MTYzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1wc2V1ZG8vbWFya2VyLWNvbnRlbnQtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KQEAgLTQ0NDAsNyArNDQzNiw2IEBAIHdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9tYXJrZXItbGlzdC1zCiB3ZWJraXQu
b3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1
ZG8vbWFya2VyLXVuaWNvZGUtYmlkaS1kZWZhdWx0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8yMTQ0NjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXBzZXVkby9tYXJrZXItdW5pY29kZS1iaWRpLW5vcm1hbC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDYxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wc2V1ZG8vc3BlbGxpbmctZXJyb3ItMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzA5NjQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLWFuZC1wbGFjZWhvbGRlci5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMTQ0NjIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXNjb3BpbmcvaG9zdC1jb250ZXh0LXNwZWNpZmljaXR5LTAwMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDYyIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY29waW5nL2hvc3QtY29udGV4dC1zcGVjaWZp
Y2l0eS0wMDIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpAQCAtNDkwNywxMCArNDkwMiw3IEBA
IHdlYmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXBzZXVkby9maXJzdC1sZXR0ZXItCiB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGV0dGVyLXB1bmN0dWF0
aW9uLWR5bmFtaWMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDAw
NCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2ZpcnN0LWxl
dHRlci1za2lwLWVtcHR5LXNwYW4tbmVzdGVkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXBzZXVkby9maXJzdC1sZXR0ZXItc2tpcC1lbXB0eS1zcGFuLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXBzZXVkby9maXJzdC1saW5lLXdpdGgtaW5saW5lLWJsb2NrLWJlZm9yZS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMDA0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS13aXRoLWlubGluZS1i
bG9jay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjMwMDA0IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vZmlyc3QtbGluZS13aXRo
LW91dC1vZi1mbG93LWFuZC1uZXN0ZWQtZGl2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXBzZXVkby9maXJzdC1saW5lLXdpdGgtb3V0LW9mLWZsb3ctYW5kLW5lc3RlZC1zcGFuLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAwMDQgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBzZXVkby9ncmFtbWFyLXNwZWxsaW5nLWVycm9ycy0w
MDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzMDAwNCBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHNldWRvL2dyYW1tYXItc3BlbGxpbmct
ZXJyb3JzLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMDA0
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wc2V1ZG8vaGlnaGxpZ2h0
LXBhaW50aW5nLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9pbnB1dC1iYXNlbGluZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9pbnB1dC1iYXNlbGluZS1l
eHBlY3RlZC50eHQKaW5kZXggMjk0YWI1ODY1MGIxYWJhZWY2MzkzZTVlZDAzMWQ0M2YzOGE5NjEw
Ny4uZTExMDQ4MDEyZTgzYzY0MGQ5MTVlNGYzYzA1MjdkOGVmMDA0MWZmNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2lucHV0LWJh
c2VsaW5lLWV4cGVjdGVkLnR4dApAQCAtMTIsMTAgKzEyLDEwIEBAIGxheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAogICAgICAgICB0ZXh0IHJ1biBhdCAoMTk2LDQxKSB3aWR0aCA0MjA6ICJUaGlz
IHRleHQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUgYm90dG9tIG9mIHRoZSB0ZXh0IGluIHRoZSB0
ZXh0IGZpZWxkLiIKICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDYxNiw0MSkgc2l6ZSAweDE3CiAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDY0KSBzaXplIDB4MTcKLSAgICAgIFJlbmRlclRleHRD
b250cm9sIHtJTlBVVH0gYXQgKDIsODQpIHNpemUgMTkyeDEzMCBbYmdjb2xvcj0jRkZGRkZGXSBb
Ym9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQotICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgxOTYsMTcyKSBzaXplIDQyMHgxNwotICAgICAgICB0ZXh0IHJ1biBhdCAoMTk2LDE3Mikgd2lk
dGggNDIwOiAiVGhpcyB0ZXh0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlIGJvdHRvbSBvZiB0aGUg
dGV4dCBpbiB0aGUgdGV4dCBmaWVsZC4iCisgICAgICBSZW5kZXJUZXh0Q29udHJvbCB7SU5QVVR9
IGF0ICgyLDg0KSBzaXplIDE5MngyNCBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGlu
c2V0ICMwMDAwMDApXQorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxOTYsODcpIHNpemUg
NDIweDE3CisgICAgICAgIHRleHQgcnVuIGF0ICgxOTYsODcpIHdpZHRoIDQyMDogIlRoaXMgdGV4
dCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZSBib3R0b20gb2YgdGhlIHRleHQgaW4gdGhlIHRleHQg
ZmllbGQuIgogbGF5ZXIgYXQgKDEzLDQ5KSBzaXplIDE4NngxOAogICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMywzKSBzaXplIDE4NngxOAotbGF5ZXIgYXQgKDEzLDk1KSBzaXplIDE4NngxMjQKLSAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxODZ4MTI0CitsYXllciBhdCAoMTMsOTUp
IHNpemUgMTg2eDE4CisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTg2eDE4CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1iYXNl
bGluZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9p
bnB1dC1iYXNlbGluZS1leHBlY3RlZC50eHQKaW5kZXggOTRhZWM1MDA4YjA0MzdmY2U1MGFjNDJi
ZjIyYmIwZjlkOWI3NmU3NS4uNDFiODBmOGE1ODI0Y2NhYTNlNmQ5ZjllZDE3ZTA1YzIyNjFmMGNm
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQt
YmFzZWxpbmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2Zvcm1zL2lucHV0LWJhc2VsaW5lLWV4cGVjdGVkLnR4dApAQCAtMTIsMTAgKzEyLDEwIEBAIGxh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICB0ZXh0IHJ1biBhdCAoMTUwLDM4KSB3
aWR0aCA0MzE6ICJUaGlzIHRleHQgc2hvdWxkIGxpbmUgdXAgd2l0aCB0aGUgYm90dG9tIG9mIHRo
ZSB0ZXh0IGluIHRoZSB0ZXh0IGZpZWxkLiIKICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDU4MCwz
OCkgc2l6ZSAxeDE4CiAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDU5KSBzaXplIDB4MTgKLSAg
ICAgIFJlbmRlclRleHRDb250cm9sIHtJTlBVVH0gYXQgKDIsNzkpIHNpemUgMTQ3eDEzMiBbYmdj
b2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQotICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgxNTAsMTcxKSBzaXplIDQzMXgxOAotICAgICAgICB0ZXh0IHJ1biBh
dCAoMTUwLDE3MSkgd2lkdGggNDMxOiAiVGhpcyB0ZXh0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhl
IGJvdHRvbSBvZiB0aGUgdGV4dCBpbiB0aGUgdGV4dCBmaWVsZC4iCisgICAgICBSZW5kZXJUZXh0
Q29udHJvbCB7SU5QVVR9IGF0ICgyLDc5KSBzaXplIDE0N3gxOSBbYmdjb2xvcj0jRkZGRkZGXSBb
Ym9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgxNTAsNzkpIHNpemUgNDMxeDE4CisgICAgICAgIHRleHQgcnVuIGF0ICgxNTAsNzkpIHdpZHRo
IDQzMTogIlRoaXMgdGV4dCBzaG91bGQgbGluZSB1cCB3aXRoIHRoZSBib3R0b20gb2YgdGhlIHRl
eHQgaW4gdGhlIHRleHQgZmllbGQuIgogbGF5ZXIgYXQgKDEzLDQ5KSBzaXplIDE0MXgxMwogICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMywzKSBzaXplIDE0MXgxMwotbGF5ZXIgYXQgKDEzLDkwKSBz
aXplIDE0MXgxMjYKLSAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSAxNDF4MTI2Cits
YXllciBhdCAoMTMsOTApIHNpemUgMTQxeDEzCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgzLDMp
IHNpemUgMTQxeDEzCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>