<?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>232842</bug_id>
          
          <creation_ts>2021-11-08 13:17:15 -0800</creation_ts>
          <short_desc>[GPU Process] [Filters 20/23] Simplify the dynamic update of the SVG filter elements</short_desc>
          <delta_ts>2022-10-19 17:42:11 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>241535</dependson>
    
    <dependson>246602</dependson>
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <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>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1812793</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-08 13:17:15 -0800</bug_when>
    <thetext>Since the FilterEffect does not own the result FilterImage or the geometry FilterBoundarySet, all the superclasses of SVGFilterPrimitiveStandardAttributes should have a singleton FilterEffect for all the renderers. Changing an attribute of these classes should be resulting in changing a member of the singleton FilterEffect. And of course we need to clear some of the the result FilterImages which are owned by the renderers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815198</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-15 13:20:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/85426197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862216</commentid>
    <comment_count>2</comment_count>
      <attachid>457801</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-18 01:20:03 -0700</bug_when>
    <thetext>Created attachment 457801
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865680</commentid>
    <comment_count>3</comment_count>
      <attachid>458641</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-30 18:13:24 -0700</bug_when>
    <thetext>Created attachment 458641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1875204</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-06-10 02:45:51 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/1441</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1875593</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-06-13 12:53:19 -0700</bug_when>
    <thetext>Committed r295498 (251503@main): &lt;https://commits.webkit.org/251503@main&gt;

Reviewed commits have been landed. Closing PR #1441 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457801</attachid>
            <date>2022-04-18 01:20:03 -0700</date>
            <delta_ts>2022-04-30 18:13:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-232842-20220418012002.patch</filename>
            <type>text/plain</type>
            <size>146242</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0NmY0ZTI3NDEyZDY3
YzU3ZTBjNDE0OTkzYjFjMzIyNjQ3ZjJmOC4uZGRhZmMxMjg4YzA0NDczMTg2MDliZGI1YmEzN2Ey
NjRjYjY4NDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NSBAQAorMjAyMi0wNC0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFNpbXBsaWZ5IHRoZSBkeW5hbWljIHVwZGF0ZSBvZiB0aGUgU1ZHIGZpbHRlciBlbGVtZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQyCisg
ICAgICAgIHJkYXI6Ly84NTQyNjE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFudExpZ2h0
U291cmNlOjpzZXRBemltdXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbnRMaWdodFNvdXJj
ZTo6c2V0RWxldmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rp
c3RhbnRMaWdodFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpzZXRCbGVuZE1vZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpzZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29s
b3JNYXRyaXg6OnNldFZhbHVlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6c2V0T3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpzZXRLMSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRUNvbXBvc2l0ZTo6c2V0SzIpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3Np
dGU6OnNldEszKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpzZXRLNCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXREaXZpc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEJpYXMpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252
b2x2ZU1hdHJpeDo6c2V0VGFyZ2V0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9s
dmVNYXRyaXg6OnNldEVkZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRy
aXg6OnNldEtlcm5lbFVuaXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1h
dHJpeDo6c2V0UHJlc2VydmVBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbnZvbHZlTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VM
aWdodGluZzo6c2V0RGlmZnVzZUNvbnN0YW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURp
c3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpG
RURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnNldFN0ZERldmlhdGlvblgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93
OjpzZXRTdGREZXZpYXRpb25ZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6c2V0
RHgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpzZXREeSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRURyb3BTaGFkb3c6OnNldFNoYWRvd0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkZFRHJvcFNoYWRvdzo6c2V0U2hhZG93T3BhY2l0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNo
YWRvdzo6c2V0U3RkRGV2aWF0aW9uWCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGRURy
b3BTaGFkb3c6OnNldFN0ZERldmlhdGlvblkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RkVEcm9wU2hhZG93OjpzZXREeCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnNldER5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6
c2V0U2hhZG93Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93
OjpzZXRTaGFkb3dPcGFjaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6c2V0Rmxv
b2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblgpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblkpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVHYXVzc2lhbkJsdXI6OnNldEVkZ2VNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6
OnNldFN1cmZhY2VTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0aW5nOjpzZXRMaWdo
dGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRM
ZW5ndGhYKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5n
dGhZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnNldE1vcnBob2xvZ3lPcGVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1gpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnNldER4
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpzZXREeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
U3BlY3VsYXJMaWdodGluZzo6c2V0U3BlY3VsYXJDb25zdGFudCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFyRXhwb25lbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVUdXJidWxlbmNlOjpzZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVs
ZW5jZTo6c2V0QmFzZUZyZXF1ZW5jeVkpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNl
OjpzZXRCYXNlRnJlcXVlbmN5WCk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OnNl
dFNlZWQpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXROdW1PY3RhdmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6c2V0U3RpdGNoVGlsZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJDaGFuZ2UuaDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpMaWdodFNvdXJjZTo6c2V0QXppbXV0aCk6CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJj
ZTo6c2V0RWxldmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRYKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRZKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpZ2h0U291cmNlOjpzZXRaKToKKyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRQ
b2ludHNBdFgpOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WSk6
CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJjZTo6c2V0UG9pbnRzQXRaKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRTcGVjdWxhckV4cG9uZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxpZ2h0U291cmNlOjpzZXRMaW1pdGluZ0NvbmVBbmdsZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50TGlnaHRTb3VyY2U6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRM
aWdodFNvdXJjZTo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludExpZ2h0U291cmNlOjpz
ZXRaKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnNldFgpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRZKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
b3RMaWdodFNvdXJjZTo6c2V0Wik6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6
OnNldFBvaW50c0F0WCk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnNldFBv
aW50c0F0WSk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0
Wik6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnNldFNwZWN1bGFyRXhwb25l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRMaW1pdGluZ0NvbmVB
bmdsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3Vy
Y2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6bWFya0ZpbHRlckZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6Om1hcmtGaWx0ZXJGb3JSZWJ1aWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFu
Z2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZTo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6Om1hcmtGaWx0ZXJGb3JJbnZhbGlkYXRpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50
OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVu
ZEVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUJsZW5kRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OmlzSW52YWxpZFZhbHVlc0xlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbHRlckVmZmVj
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWx0ZXJFZmZl
Y3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
Y3JlYXRlRmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0
ZXJFZmZlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6Y3JlYXRlRmlsdGVy
RWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6
OmZpbHRlckVmZmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZm
ZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJF
ZmZlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dDo6Y3JlYXRlRmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpj
cmVhdGVGaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVs
ZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpjcmVhdGVGaWx0ZXJF
ZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6Y3JlYXRlRmls
dGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6
ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVU
aWxlRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFVGlsZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsdGVyRWZmZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6Om1hcmtGaWx0ZXJGb3JJbnZhbGlkYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaDoKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRXhwcmVzc2lvbik6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6ZWZmZWN0QnlSZW5kZXJlcik6IERlbGV0ZWQu
CisKIDIwMjItMDQtMTcgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgbm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMgYWZ0ZXIgMjQ5NjMyQG1haW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCmluZGV4IGUyNDQ1Nzg2YmJmNjEzZTdkNTc3NjMyOWVlMTI5NzY4Y2U4
YTUzZGMuLmFjZjYyZDMxYjNkZmY1Yjc3N2YzNDkzZTAyZDMwZDExOTcxY2ZiMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQpAQCAtMTYzNyw2ICsxNjM3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyQ2hhbmdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RBcHBsaWVyLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdEdlb21ldHJ5LmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjZWE3MzkzMWNkZWIyY2IwYTk0YTcxYTc4OTYxYzA0MTRhZTkxMmI5Li4yMDQ0NTZkMWFmN2Zk
NDM0YTU5ZjFlM2MyMTdiODJjOTNmY2MzZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzYzLDYgKzIzNjMsNyBAQAogCQk3
Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZB
NjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMg
LyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjlEMDUzMDI1
MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0
MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJBMTQ5RjEyN0ZGQTJFNDAwRUE0ODdD
IC8qIEZpbHRlckNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzJBMTQ5RjAyN0ZGOTE4RTAwRUE0ODdDIC8qIEZpbHRlckNoYW5nZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTVEMTkyMjc1
RThGRkUwMDY1ODMzRSAvKiBTVkdGaWx0ZXJFeHByZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjZDREUyNTI3NUI0ODk3MDBBNDQ1QjIgLyog
U1ZHRmlsdGVyRXhwcmVzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFt
ZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
MkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFDQzlDNjI3NjI5QTc3
MDBENTIzRjcgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhGMjI0NjFERDNEMUM1MDBFOTJEQTMg
LyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNDM4LDYgKzExNDM5LDcgQEAKIAkJNzJBMTNB
RDUyNzRERTU0RTAwRTJBODhFIC8qIFNvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNvdXJjZUFscGhhU29mdHdhcmVBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyQTEzQUQ2Mjc0REU1NzgwMEUyQTg4RSAvKiBTb3VyY2VHcmFwaGljU29m
dHdhcmVBcHBsaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvdXJjZUdyYXBoaWNTb2Z0d2Fy
ZUFwcGxpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkExM0FENzI3NERF
NTc4MDBFMkE4OEUgLyogU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb3VyY2VHcmFwaGljU29mdHdhcmVBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyQTE0OUYwMjdGRjkxOEUwMEVBNDg3QyAvKiBGaWx0ZXJDaGFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmlsdGVyQ2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcyQjRFRjc0Mjc0RTIzMzMwMDI5M0MyRiAvKiBGRUJsZW5kU29mdHdhcmVBcHBsaWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZFQmxlbmRTb2Z0d2FyZUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzJCNEVGNzUyNzRFMjMzNDAwMjkzQzJGIC8qIEZFQmxlbmRTb2Z0d2FyZUFw
cGxpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRkVCbGVuZFNvZnR3YXJlQXBwbGllci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQjRFRjdDMjc0RUUzN0YwMDI5M0MyRiAv
KiBGaWx0ZXJJbWFnZVZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJJbWFnZVZlY3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjcxMTQsNiArMjcxMTYsNyBAQAogCQkJ
CTg0NzMwRDcwMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVR1cmJ1bGVuY2UuaCAqLywKIAkJCQk3MkI4
QjAzMjI3NTMzRjgxMDBGNzUyQUEgLyogRmlsdGVyLmNwcCAqLywKIAkJCQk4NDVFNzJGNzBGRDI2
MUVFMDBBODdENzkgLyogRmlsdGVyLmggKi8sCisJCQkJNzJBMTQ5RjAyN0ZGOTE4RTAwRUE0ODdD
IC8qIEZpbHRlckNoYW5nZS5oICovLAogCQkJCTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBG
aWx0ZXJFZmZlY3QuY3BwICovLAogCQkJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0
ZXJFZmZlY3QuaCAqLywKIAkJCQk3MkExM0E5RjI3NEM1Q0M3MDBFMkE4OEUgLyogRmlsdGVyRWZm
ZWN0QXBwbGllci5oICovLApAQCAtMzQ3NTksNiArMzQ3NjIsNyBAQAogCQkJCUJDNUVCNjlGMEU4
MURBRUIwMEIyNTk2NSAvKiBGaWxsTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMkJFNDgz
MUZFODY1REQwMDIwMzFDQyAvKiBGaWxsTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ1RTcy
RjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJBMTQ5
RjEyN0ZGQTJFNDAwRUE0ODdDIC8qIEZpbHRlckNoYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzI4RDQ3OTEyNzlBNDhCNzAwQkE3QzBFIC8qIEZpbHRlckVmZmVjdEFwcGxpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTcyNkNERTIwMjc1OTczNTAwMEE0NDVCMiAvKiBGaWx0ZXJFZmZl
Y3RHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAK
aW5kZXggNjU1ZWU1NjRjZTM1YjhiNTUxMDJlYTZhNzI4MTBmMWVhNTJiMTg2OC4uZGFkNzk0ZGRi
OWIyZDc3NzE1ZGQ1MWQxODlhZGNjZDQyYjk4YzNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291
cmNlLmNwcApAQCAtNjQsMjAgKzY0LDIwIEBAIExpZ2h0U291cmNlOjpDb21wdXRlZExpZ2h0aW5n
RGF0YSBEaXN0YW50TGlnaHRTb3VyY2U6OmNvbXB1dGVQaXhlbExpZ2h0aW5nRGF0YShjCiAgICAg
cmV0dXJuIHBhaW50aW5nRGF0YS5pbml0aWFsTGlnaHRpbmdEYXRhOwogfQogCi1ib29sIERpc3Rh
bnRMaWdodFNvdXJjZTo6c2V0QXppbXV0aChmbG9hdCBhemltdXRoKQorRmlsdGVyQ2hhbmdlIERp
c3RhbnRMaWdodFNvdXJjZTo6c2V0QXppbXV0aChmbG9hdCBhemltdXRoKQogewogICAgIGlmICht
X2F6aW11dGggPT0gYXppbXV0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fYXppbXV0aCA9IGF6aW11dGg7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAotYm9vbCBE
aXN0YW50TGlnaHRTb3VyY2U6OnNldEVsZXZhdGlvbihmbG9hdCBlbGV2YXRpb24pCitGaWx0ZXJD
aGFuZ2UgRGlzdGFudExpZ2h0U291cmNlOjpzZXRFbGV2YXRpb24oZmxvYXQgZWxldmF0aW9uKQog
ewogICAgIGlmIChtX2VsZXZhdGlvbiA9PSBlbGV2YXRpb24pCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX2VsZXZhdGlvbiA9
IGVsZXZhdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpS
ZXBhaW50OwogfQogCiBUZXh0U3RyZWFtJiBEaXN0YW50TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2Uu
aAppbmRleCAwNjYwMTQzZmMxY2Y4MWRmMWMzMDMxZGJjMDM5YWFlYzJjYzQ4NTRmLi4xYmY2ZWIz
MjkyZjhhYmUyNmU0NjY1MTZmM2JhNGE4YjU3MjY3OWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291
cmNlLmgKQEAgLTM1LDggKzM1LDggQEAgcHVibGljOgogICAgIGZsb2F0IGF6aW11dGgoKSBjb25z
dCB7IHJldHVybiBtX2F6aW11dGg7IH0KICAgICBmbG9hdCBlbGV2YXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2VsZXZhdGlvbjsgfQogCi0gICAgYm9vbCBzZXRBemltdXRoKGZsb2F0KSBvdmVycmlk
ZTsKLSAgICBib29sIHNldEVsZXZhdGlvbihmbG9hdCkgb3ZlcnJpZGU7CisgICAgRmlsdGVyQ2hh
bmdlIHNldEF6aW11dGgoZmxvYXQpIG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRFbGV2
YXRpb24oZmxvYXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbml0UGFpbnRpbmdEYXRhKGNvbnN0
IEZpbHRlciYsIGNvbnN0IEZpbHRlckltYWdlJiByZXN1bHQsIFBhaW50aW5nRGF0YSYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIENvbXB1dGVkTGlnaHRpbmdEYXRhIGNvbXB1dGVQaXhlbExpZ2h0aW5n
RGF0YShjb25zdCBQYWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IHopIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5jcHAKaW5kZXggOWI5MDFjNDdjYWNiODQxOTVkYzY5YmNkNzUxYmZjYTBkNmFmZmE1
MS4uYTZhZDY3ZWMzNDAzODNiZjY2ZjdhYTRmYjBhNDNjZjNjMWQwODA1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBA
IC00NCwxMiArNDQsMTIgQEAgRkVCbGVuZDo6RkVCbGVuZChCbGVuZE1vZGUgbW9kZSkKIHsKIH0K
IAotYm9vbCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlIG1vZGUpCitGaWx0ZXJDaGFu
Z2UgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZSBtb2RlKQogewogICAgIGlmIChtX21v
ZGUgPT0gbW9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVy
Q2hhbmdlOjpOb25lOwogICAgIG1fbW9kZSA9IG1vZGU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZpbHRl
ckVmZmVjdEFwcGxpZXI+IEZFQmxlbmQ6OmNyZWF0ZVNvZnR3YXJlQXBwbGllcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5o
CmluZGV4IDk3ZjBhOTQzNDE3MjFlNTBiY2ZhZjFhMWJmM2ZlZTlhMDc2MGIzYmIuLjAwYmVhNGM2
MjQwM2EyOGVhYWMwZWFlZDc3NWViMDMxNmViYzJkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCkBAIC0zMyw3ICszMyw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFQmxlbmQ+IGNyZWF0ZShC
bGVuZE1vZGUpOwogCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZTsgfQotICAgIGJvb2wgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZSk7CisgICAgRmlsdGVyQ2hh
bmdlIHNldEJsZW5kTW9kZShCbGVuZE1vZGUpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxGRUJsZW5kPj4gZGVjb2RlKERlY29kZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDVlOWZjNGU5NzVkOGQxNWM2Y2U4NmFhYWI4OGExZDJk
OWQxNzkyMzMuLjY0NzVmNDI4ZWUyZWFmOTQxNWU3Zjg5YWU0YjgzYTE3ZmE2MjllN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcApAQCAtNDYsMjAgKzQ2LDIwIEBAIEZFQ29sb3JNYXRyaXg6OkZFQ29s
b3JNYXRyaXgoQ29sb3JNYXRyaXhUeXBlIHR5cGUsIFZlY3RvcjxmbG9hdD4mJiB2YWx1ZXMpCiB7
CiB9CiAKLWJvb2wgRkVDb2xvck1hdHJpeDo6c2V0VHlwZShDb2xvck1hdHJpeFR5cGUgdHlwZSkK
K0ZpbHRlckNoYW5nZSBGRUNvbG9yTWF0cml4OjpzZXRUeXBlKENvbG9yTWF0cml4VHlwZSB0eXBl
KQogewogICAgIGlmIChtX3R5cGUgPT0gdHlwZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAotYm9v
bCBGRUNvbG9yTWF0cml4OjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiAmdmFsdWVzKQor
RmlsdGVyQ2hhbmdlIEZFQ29sb3JNYXRyaXg6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+
ICZ2YWx1ZXMpCiB7CiAgICAgaWYgKG1fdmFsdWVzID09IHZhbHVlcykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fdmFsdWVz
ID0gdmFsdWVzOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJl
cGFpbnQ7CiB9CiAKIHZvaWQgRkVDb2xvck1hdHJpeDo6Y2FsY3VsYXRlU2F0dXJhdGVDb21wb25l
bnRzKGZsb2F0KiBjb21wb25lbnRzLCBmbG9hdCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXgg
MWJmMTJmOTVmNGRkYTVlMTg4ZDJiNDAzMDBmYmE5NzkzYzI0N2M0NS4uYTc0ZGVmZDVhMjViOGJh
ZTg0ZDQzZjkxNDc4MmFjZGFkODBlNTA5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTQwLDEwICs0
MCwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGRUNvbG9yTWF0
cml4PiBjcmVhdGUoQ29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8ZmxvYXQ+JiYpOwogCiAgICAgQ29s
b3JNYXRyaXhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBib29sIHNl
dFR5cGUoQ29sb3JNYXRyaXhUeXBlKTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0VHlwZShDb2xvck1h
dHJpeFR5cGUpOwogCiAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZXM7IH0KLSAgICBib29sIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+
Jik7CisgICAgRmlsdGVyQ2hhbmdlIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAK
ICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVTYXR1cmF0ZUNvbXBvbmVudHMoZmxvYXQqIGNvbXBv
bmVudHMsIGZsb2F0IHZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVIdWVSb3RhdGVD
b21wb25lbnRzKGZsb2F0KiBjb21wb25lbnRzLCBmbG9hdCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3Bw
CmluZGV4IDRjM2I2NzA4ZTU3ZjgyNDRhYzIyYWJkMzRiZDUyZThhNDU0ZDEwMTEuLjc5MzQ1YTU5
NzFjNTBjYTU2N2I1MGQwZTQyMDNiNjA0NDEyMTI1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC00
Niw0NCArNDYsNDQgQEAgRkVDb21wb3NpdGU6OkZFQ29tcG9zaXRlKGNvbnN0IENvbXBvc2l0ZU9w
ZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwKIHsKIH0KIAotYm9vbCBGRUNv
bXBvc2l0ZTo6c2V0T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgdHlwZSkKK0ZpbHRl
ckNoYW5nZSBGRUNvbXBvc2l0ZTo6c2V0T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdGlvblR5cGUg
dHlwZSkKIHsKICAgICBpZiAobV90eXBlID09IHR5cGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX3R5cGUgPSB0eXBlOwot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAK
LWJvb2wgRkVDb21wb3NpdGU6OnNldEsxKGZsb2F0IGsxKQorRmlsdGVyQ2hhbmdlIEZFQ29tcG9z
aXRlOjpzZXRLMShmbG9hdCBrMSkKIHsKICAgICBpZiAobV9rMSA9PSBrMSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fazEg
PSBrMTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50
OwogfQogCi1ib29sIEZFQ29tcG9zaXRlOjpzZXRLMihmbG9hdCBrMikKK0ZpbHRlckNoYW5nZSBG
RUNvbXBvc2l0ZTo6c2V0SzIoZmxvYXQgazIpCiB7CiAgICAgaWYgKG1fazIgPT0gazIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAg
ICBtX2syID0gazI7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6
UmVwYWludDsKIH0KIAotYm9vbCBGRUNvbXBvc2l0ZTo6c2V0SzMoZmxvYXQgazMpCitGaWx0ZXJD
aGFuZ2UgRkVDb21wb3NpdGU6OnNldEszKGZsb2F0IGszKQogewogICAgIGlmIChtX2szID09IGsz
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5v
bmU7CiAgICAgbV9rMyA9IGszOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJD
aGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLWJvb2wgRkVDb21wb3NpdGU6OnNldEs0KGZsb2F0IGs0KQor
RmlsdGVyQ2hhbmdlIEZFQ29tcG9zaXRlOjpzZXRLNChmbG9hdCBrNCkKIHsKICAgICBpZiAobV9r
NCA9PSBrNCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVyQ2hh
bmdlOjpOb25lOwogICAgIG1fazQgPSBrNDsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
RmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCiBGbG9hdFJlY3QgRkVDb21wb3NpdGU6OmNhbGN1
bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0
b3ImIGlucHV0cywgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmgKaW5kZXggMTliNjhmNGFlOWQyMDc0MGI3NzI2YzA4MDFjMWY0OWFiN2MxYjNjYy4u
YjJlMDhiOTU1OWJhOGI2MDRkZDkyNjE1OTBhNDIwMjYwNTljZTQ1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaApA
QCAtNDMsMTkgKzQzLDE5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZFQ29tcG9zaXRlPiBjcmVhdGUoY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZsb2F0
IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KTsKIAogICAgIENvbXBvc2l0ZU9wZXJh
dGlvblR5cGUgb3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgYm9vbCBz
ZXRPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSk7CisgICAgRmlsdGVyQ2hhbmdlIHNl
dE9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRpb25UeXBlKTsKIAogICAgIGZsb2F0IGsxKCkgY29u
c3QgeyByZXR1cm4gbV9rMTsgfQotICAgIGJvb2wgc2V0SzEoZmxvYXQpOworICAgIEZpbHRlckNo
YW5nZSBzZXRLMShmbG9hdCk7CiAKICAgICBmbG9hdCBrMigpIGNvbnN0IHsgcmV0dXJuIG1fazI7
IH0KLSAgICBib29sIHNldEsyKGZsb2F0KTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0SzIoZmxvYXQp
OwogCiAgICAgZmxvYXQgazMoKSBjb25zdCB7IHJldHVybiBtX2szOyB9Ci0gICAgYm9vbCBzZXRL
MyhmbG9hdCk7CisgICAgRmlsdGVyQ2hhbmdlIHNldEszKGZsb2F0KTsKIAogICAgIGZsb2F0IGs0
KCkgY29uc3QgeyByZXR1cm4gbV9rNDsgfQotICAgIGJvb2wgc2V0SzQoZmxvYXQpOworICAgIEZp
bHRlckNoYW5nZSBzZXRLNChmbG9hdCk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPEZFQ29tcG9zaXRlPj4gZGVjb2RlKERlY29kZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IGU2MWFjOGY5NTdiNDI3YTA2ODBmZTUzY2Iz
NDcxMmIyMWE0YzNmYzkuLjIzMTBiZDNkMGJmNTQxNDk4YzFkZjY3ZGIzMGFlYTg1OGRhYmFlMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtNjMsNTUgKzYzLDU1IEBAIHZvaWQgRkVD
b252b2x2ZU1hdHJpeDo6c2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtlcm5lbCkKICAg
ICBtX2tlcm5lbE1hdHJpeCA9IGtlcm5lbDsgCiB9CiAKLWJvb2wgRkVDb252b2x2ZU1hdHJpeDo6
c2V0RGl2aXNvcihmbG9hdCBkaXZpc29yKQorRmlsdGVyQ2hhbmdlIEZFQ29udm9sdmVNYXRyaXg6
OnNldERpdmlzb3IoZmxvYXQgZGl2aXNvcikKIHsKICAgICBBU1NFUlQoZGl2aXNvcik7CiAgICAg
aWYgKG1fZGl2aXNvciA9PSBkaXZpc29yKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV9kaXZpc29yID0gZGl2aXNvcjsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCi1i
b29sIEZFQ29udm9sdmVNYXRyaXg6OnNldEJpYXMoZmxvYXQgYmlhcykKK0ZpbHRlckNoYW5nZSBG
RUNvbnZvbHZlTWF0cml4OjpzZXRCaWFzKGZsb2F0IGJpYXMpCiB7CiAgICAgaWYgKG1fYmlhcyA9
PSBiaWFzKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJDaGFu
Z2U6Ok5vbmU7CiAgICAgbV9iaWFzID0gYmlhczsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCi1ib29sIEZFQ29udm9sdmVNYXRyaXg6OnNl
dFRhcmdldE9mZnNldChjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0KQorRmlsdGVyQ2hhbmdl
IEZFQ29udm9sdmVNYXRyaXg6OnNldFRhcmdldE9mZnNldChjb25zdCBJbnRQb2ludCYgdGFyZ2V0
T2Zmc2V0KQogewogICAgIGlmIChtX3RhcmdldE9mZnNldCA9PSB0YXJnZXRPZmZzZXQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAg
ICBtX3RhcmdldE9mZnNldCA9IHRhcmdldE9mZnNldDsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCi1ib29sIEZFQ29udm9sdmVNYXRyaXg6
OnNldEVkZ2VNb2RlKEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKK0ZpbHRlckNoYW5nZSBGRUNvbnZv
bHZlTWF0cml4OjpzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiB7CiAgICAgaWYg
KG1fZWRnZU1vZGUgPT0gZWRnZU1vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX2VkZ2VNb2RlID0gZWRnZU1vZGU7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAot
Ym9vbCBGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxVbml0TGVuZ3RoKGNvbnN0IEZsb2F0UG9p
bnQmIGtlcm5lbFVuaXRMZW5ndGgpCitGaWx0ZXJDaGFuZ2UgRkVDb252b2x2ZU1hdHJpeDo6c2V0
S2VybmVsVW5pdExlbmd0aChjb25zdCBGbG9hdFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoKQogewog
ICAgIEFTU0VSVChrZXJuZWxVbml0TGVuZ3RoLngoKSA+IDApOwogICAgIEFTU0VSVChrZXJuZWxV
bml0TGVuZ3RoLnkoKSA+IDApOwogICAgIGlmIChtX2tlcm5lbFVuaXRMZW5ndGggPT0ga2VybmVs
VW5pdExlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVy
Q2hhbmdlOjpOb25lOwogICAgIG1fa2VybmVsVW5pdExlbmd0aCA9IGtlcm5lbFVuaXRMZW5ndGg7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0K
IAotYm9vbCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKGJvb2wgcHJlc2VydmVB
bHBoYSkKK0ZpbHRlckNoYW5nZSBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKGJv
b2wgcHJlc2VydmVBbHBoYSkKIHsKICAgICBpZiAobV9wcmVzZXJ2ZUFscGhhID09IHByZXNlcnZl
QWxwaGEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5n
ZTo6Tm9uZTsKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAKIEZsb2F0UmVj
dCBGRUNvbnZvbHZlTWF0cml4OjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVT
dWJyZWdpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCmluZGV4IDA3NTQ1Yjg3NDhkMWZl
OWNkNDVjMDAxN2E3MjFhZmQ0ZDc4ZmE0OTAuLjMzZDE2ZDUzMmUxNjdhZjhmOWM5NWQyMTQ2MGNj
NzJjZDQ5MmI2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCkBAIC00NywyMiArNDcsMjIgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKIAogICAg
IGZsb2F0IGRpdmlzb3IoKSBjb25zdCB7IHJldHVybiBtX2Rpdmlzb3I7IH0KLSAgICBib29sIHNl
dERpdmlzb3IoZmxvYXQpOworICAgIEZpbHRlckNoYW5nZSBzZXREaXZpc29yKGZsb2F0KTsKIAog
ICAgIGZsb2F0IGJpYXMoKSBjb25zdCB7IHJldHVybiBtX2JpYXM7IH0KLSAgICBib29sIHNldEJp
YXMoZmxvYXQpOworICAgIEZpbHRlckNoYW5nZSBzZXRCaWFzKGZsb2F0KTsKIAogICAgIEludFBv
aW50IHRhcmdldE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0T2Zmc2V0OyB9Ci0gICAg
Ym9vbCBzZXRUYXJnZXRPZmZzZXQoY29uc3QgSW50UG9pbnQmKTsKKyAgICBGaWx0ZXJDaGFuZ2Ug
c2V0VGFyZ2V0T2Zmc2V0KGNvbnN0IEludFBvaW50Jik7CiAKICAgICBFZGdlTW9kZVR5cGUgZWRn
ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VNb2RlOyB9Ci0gICAgYm9vbCBzZXRFZGdlTW9k
ZShFZGdlTW9kZVR5cGUpOworICAgIEZpbHRlckNoYW5nZSBzZXRFZGdlTW9kZShFZGdlTW9kZVR5
cGUpOwogCiAgICAgRmxvYXRQb2ludCBrZXJuZWxVbml0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9rZXJuZWxVbml0TGVuZ3RoOyB9Ci0gICAgYm9vbCBzZXRLZXJuZWxVbml0TGVuZ3RoKGNvbnN0
IEZsb2F0UG9pbnQmKTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0S2VybmVsVW5pdExlbmd0aChjb25z
dCBGbG9hdFBvaW50Jik7CiAKICAgICBib29sIHByZXNlcnZlQWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX3ByZXNlcnZlQWxwaGE7IH0KLSAgICBib29sIHNldFByZXNlcnZlQWxwaGEoYm9vbCk7Cisg
ICAgRmlsdGVyQ2hhbmdlIHNldFByZXNlcnZlQWxwaGEoYm9vbCk7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPEZFQ29udm9sdmVNYXRyaXg+
PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAppbmRleCAyMGQw
MTNjODUzZjExMjBiNGJiZjc4MGRmZjFmNTA4ODRiOTJmMDFkLi5mNmNlMGRjMWY3Y2U4ODQ5NWVm
NTNjYjg3NjZmMjNlZmE1ZTYyZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcApAQCAt
NDQsMTIgKzQ0LDEyIEBAIEZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyhjb25z
dCBDb2xvciYgbGlnaHRpbmdDb2xvciwgZmxvYXQgc3VyZmFjZVNjCiB7CiB9CiAKLWJvb2wgRkVE
aWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29uc3RhbnQp
CitGaWx0ZXJDaGFuZ2UgRkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9h
dCBkaWZmdXNlQ29uc3RhbnQpCiB7CiAgICAgaWYgKG1fZGlmZnVzZUNvbnN0YW50ID09IGRpZmZ1
c2VDb25zdGFudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVy
Q2hhbmdlOjpOb25lOwogICAgIG1fZGlmZnVzZUNvbnN0YW50ID0gZGlmZnVzZUNvbnN0YW50Owot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAK
IFRleHRTdHJlYW0mIEZFRGlmZnVzZUxpZ2h0aW5nOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzLCBGaWx0ZXJSZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aWZmdXNlTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaWZmdXNlTGlnaHRpbmcuaAppbmRleCBiMmRmMmQxNTFjZjBkMDNjZjU1OTAwNWEzZmIy
NDJjMjY2N2FlNzMyLi4xMmJmMjdhM2Y0ZmJiZTg5ZmIyZDExN2RlZGRkYWIxODIwODY0Y2ExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlm
ZnVzZUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpZmZ1c2VMaWdodGluZy5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJj
ZT4mJik7CiAKICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2Rp
ZmZ1c2VDb25zdGFudDsgfQotICAgIGJvb2wgc2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKKyAg
ICBGaWx0ZXJDaGFuZ2Ugc2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKIAogICAgIFdURjo6VGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBGaWx0ZXJS
ZXByZXNlbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5j
cHAKaW5kZXggNDkwOTliNjM3NjM5ODRhODE2MzhiY2M3YjlhNzgxN2ZjMDIyNTVjNi4uODEyNmUy
MWExYjMyNzRmNTM1ZjU2YTNkZDZjMjI1Nzc3NTcwZWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVu
dE1hcC5jcHAKQEAgLTQ0LDI4ICs0NCwyOCBAQCBGRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFj
ZW1lbnRNYXAoQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubgogewog
fQogCi1ib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRYQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENo
YW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcikKK0ZpbHRlckNoYW5nZSBGRURpc3Bs
YWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBl
IHhDaGFubmVsU2VsZWN0b3IpCiB7CiAgICAgaWYgKG1feENoYW5uZWxTZWxlY3RvciA9PSB4Q2hh
bm5lbFNlbGVjdG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0
ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV94Q2hhbm5lbFNlbGVjdG9yID0geENoYW5uZWxTZWxlY3Rv
cjsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50Owog
fQogCi1ib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRZQ2hhbm5lbFNlbGVjdG9yKGNvbnN0IENo
YW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvcikKK0ZpbHRlckNoYW5nZSBGRURpc3Bs
YWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBl
IHlDaGFubmVsU2VsZWN0b3IpCiB7CiAgICAgaWYgKG1feUNoYW5uZWxTZWxlY3RvciA9PSB5Q2hh
bm5lbFNlbGVjdG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0
ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV95Q2hhbm5lbFNlbGVjdG9yID0geUNoYW5uZWxTZWxlY3Rv
cjsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50Owog
fQogCi1ib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKK0ZpbHRl
ckNoYW5nZSBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgc2NhbGUpCiB7CiAgICAg
aWYgKG1fc2NhbGUgPT0gc2NhbGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX3NjYWxlID0gc2NhbGU7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAogRmxvYXRSZWN0
IEZFRGlzcGxhY2VtZW50TWFwOjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVT
dWJyZWdpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKaW5kZXggZDhmY2RmZGExZGQ2
MzM3NTM5YTZjMDUzM2I2NDMwZDMwMDZjZGU4Yy4uMTM1OWRiMDk0ZTk4ZmYxYzFmZmZkYTQ5NDkz
ZDU2NTYzNTUxZTQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaApAQCAtNDAsMTMgKzQwLDEz
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFRGlzcGxhY2VtZW50
TWFwPiBjcmVhdGUoQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFubmVs
U2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxlKTsKIAogICAgIENoYW5u
ZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1feENoYW5u
ZWxTZWxlY3RvcjsgfQotICAgIGJvb2wgc2V0WENoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVs
U2VsZWN0b3JUeXBlKTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0WENoYW5uZWxTZWxlY3Rvcihjb25z
dCBDaGFubmVsU2VsZWN0b3JUeXBlKTsKIAogICAgIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5u
ZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1feUNoYW5uZWxTZWxlY3RvcjsgfQotICAgIGJv
b2wgc2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlKTsKKyAgICBG
aWx0ZXJDaGFuZ2Ugc2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBl
KTsKIAogICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQotICAgIGJv
b2wgc2V0U2NhbGUoZmxvYXQpOworICAgIEZpbHRlckNoYW5nZSBzZXRTY2FsZShmbG9hdCk7CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPEZF
RGlzcGxhY2VtZW50TWFwPj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAppbmRl
eCA2MWQ5NzcyMWUyZDA5ZTg1Njg0M2E3NDMzNGRiNDI4YWU3NzI1ZTk4Li4xMmQ3MzNlMDFiOGIw
MDkwYTY5MjEyZGNiYWRlN2QyOWRmMjhiNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCkBAIC00NSw2
ICs0NSw1NCBAQCBGRURyb3BTaGFkb3c6OkZFRHJvcFNoYWRvdyhmbG9hdCBzdGRYLCBmbG9hdCBz
dGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbAogewogfQogCitGaWx0ZXJDaGFuZ2Ug
RkVEcm9wU2hhZG93OjpzZXRTdGREZXZpYXRpb25YKGZsb2F0IHN0ZFgpCit7CisgICAgaWYgKG1f
c3RkWCA9PSBzdGRYKQorICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOworICAgIG1f
c3RkWCA9IHN0ZFg7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKK30KKworRmls
dGVyQ2hhbmdlIEZFRHJvcFNoYWRvdzo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCBzdGRZKQorewor
ICAgIGlmIChtX3N0ZFkgPT0gc3RkWSkKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9u
ZTsKKyAgICBtX3N0ZFkgPSBzdGRZOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7
Cit9CisKK0ZpbHRlckNoYW5nZSBGRURyb3BTaGFkb3c6OnNldER4KGZsb2F0IGR4KQoreworICAg
IGlmIChtX2R4ID09IGR4KQorICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOworICAg
IG1fZHggPSBkeDsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OworfQorCitGaWx0
ZXJDaGFuZ2UgRkVEcm9wU2hhZG93OjpzZXREeShmbG9hdCBkeSkKK3sKKyAgICBpZiAobV9keSA9
PSBkeSkKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKKyAgICBtX2R5ID0gZHk7
CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKK30KKworRmlsdGVyQ2hhbmdlIEZF
RHJvcFNoYWRvdzo6c2V0U2hhZG93Q29sb3IoY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQorewor
ICAgIGlmIChtX3NoYWRvd0NvbG9yID09IHNoYWRvd0NvbG9yKQorICAgICAgICByZXR1cm4gRmls
dGVyQ2hhbmdlOjpOb25lOworICAgIG1fc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xvcjsKKyAgICBy
ZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OworfQorCitGaWx0ZXJDaGFuZ2UgRkVEcm9wU2hh
ZG93OjpzZXRTaGFkb3dPcGFjaXR5KGZsb2F0IHNoYWRvd09wYWNpdHkpCit7CisgICAgaWYgKG1f
c2hhZG93T3BhY2l0eSA9PSBzaGFkb3dPcGFjaXR5KQorICAgICAgICByZXR1cm4gRmlsdGVyQ2hh
bmdlOjpOb25lOworICAgIG1fc2hhZG93T3BhY2l0eSA9IHNoYWRvd09wYWNpdHk7CisgICAgcmV0
dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKK30KKwogRmxvYXRSZWN0IEZFRHJvcFNoYWRvdzo6
Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFn
ZVZlY3RvciYgaW5wdXRzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29u
c3QKIHsKICAgICBhdXRvIGltYWdlUmVjdCA9IGlucHV0c1swXS0+aW1hZ2VSZWN0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuaAppbmRleCA3YTIwYjMyZjJkODA5OGI5ZmI1N2RkNTlhOGFlNTIzMTcyMzQyOGNmLi43
MjE2OTg3NzNhNWEwZGFhOTc3NWE2MTYzMzBmMjI0OGI1Mzg4YmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgK
QEAgLTMwLDIyICszMCwyMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGRURyb3BTaGFkb3c+IGNyZWF0ZShmbG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwg
ZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgZmxvYXQgc2hhZG93T3BhY2l0eSk7
CiAKICAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9zdGRYOyB9Ci0g
ICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0IHN0ZFgpIHsgbV9zdGRYID0gc3RkWDsgfQor
ICAgIEZpbHRlckNoYW5nZSBzZXRTdGREZXZpYXRpb25YKGZsb2F0KTsKIAogICAgIGZsb2F0IHN0
ZERldmlhdGlvblkoKSBjb25zdCB7IHJldHVybiBtX3N0ZFk7IH0KLSAgICB2b2lkIHNldFN0ZERl
dmlhdGlvblkoZmxvYXQgc3RkWSkgeyBtX3N0ZFkgPSBzdGRZOyB9CisgICAgRmlsdGVyQ2hhbmdl
IHNldFN0ZERldmlhdGlvblkoZmxvYXQpOwogCiAgICAgZmxvYXQgZHgoKSBjb25zdCB7IHJldHVy
biBtX2R4OyB9Ci0gICAgdm9pZCBzZXREeChmbG9hdCBkeCkgeyBtX2R4ID0gZHg7IH0KKyAgICBG
aWx0ZXJDaGFuZ2Ugc2V0RHgoZmxvYXQpOwogCiAgICAgZmxvYXQgZHkoKSBjb25zdCB7IHJldHVy
biBtX2R5OyB9Ci0gICAgdm9pZCBzZXREeShmbG9hdCBkeSkgeyBtX2R5ID0gZHk7IH0KKyAgICBG
aWx0ZXJDaGFuZ2Ugc2V0RHkoZmxvYXQpOwogCiAgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dDb2xvcjsgfSAKLSAgICB2b2lkIHNldFNoYWRvd0Nv
bG9yKGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcikgeyBtX3NoYWRvd0NvbG9yID0gc2hhZG93Q29s
b3I7IH0KKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0U2hhZG93Q29sb3IoY29uc3QgQ29sb3ImKTsKIAog
ICAgIGZsb2F0IHNoYWRvd09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd09wYWNpdHk7
IH0KLSAgICB2b2lkIHNldFNoYWRvd09wYWNpdHkoZmxvYXQgc2hhZG93T3BhY2l0eSkgeyBtX3No
YWRvd09wYWNpdHkgPSBzaGFkb3dPcGFjaXR5OyB9CisgICAgRmlsdGVyQ2hhbmdlIHNldFNoYWRv
d09wYWNpdHkoZmxvYXQpOwogCiAgICAgc3RhdGljIEludE91dHNldHMgY2FsY3VsYXRlT3V0c2V0
cyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBzdGREZXZpYXRpb24p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRmxvb2QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUZsb29kLmNwcAppbmRleCBjNGMxYTFmZjdjN2YxOWIzMGE1YzY4YWU3OWU4YzQyZDkxMjQzNTlm
Li5iN2FmMjBkNTQ3MDQ5ODU0MzRmNDZiODc0ODJlZmFmNDI1N2M3MzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKQEAg
LTQzLDIwICs0MywyMCBAQCBGRUZsb29kOjpGRUZsb29kKGNvbnN0IENvbG9yJiBmbG9vZENvbG9y
LCBmbG9hdCBmbG9vZE9wYWNpdHkpCiB7CiB9CiAKLWJvb2wgRkVGbG9vZDo6c2V0Rmxvb2RDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCitGaWx0ZXJDaGFuZ2UgRkVGbG9vZDo6c2V0Rmxvb2RDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKG1fZmxvb2RDb2xvciA9PSBjb2xvcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25l
OwogICAgIG1fZmxvb2RDb2xvciA9IGNvbG9yOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLWJvb2wgRkVGbG9vZDo6c2V0Rmxvb2RPcGFj
aXR5KGZsb2F0IGZsb29kT3BhY2l0eSkKK0ZpbHRlckNoYW5nZSBGRUZsb29kOjpzZXRGbG9vZE9w
YWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQogewogICAgIGlmIChtX2Zsb29kT3BhY2l0eSA9PSBm
bG9vZE9wYWNpdHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRl
ckNoYW5nZTo6Tm9uZTsKICAgICBtX2Zsb29kT3BhY2l0eSA9IGZsb29kT3BhY2l0eTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCiBGbG9h
dFJlY3QgRkVGbG9vZDo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBj
b25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVn
aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRmxvb2QuaAppbmRleCA1M2Q0Y2M1ZjlkZjE3YTE1OTMxODgwZjk1YWI3YmNkZjdhZjAw
ZDBiLi42OGJhYTBkMzY1M2M1OGIwMjBmODVlN2M1YzM0MTU5N2E5NGNmMmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaApAQCAt
MzIsMTAgKzMyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZF
Rmxvb2Q+IGNyZWF0ZShjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5
KTsKIAogICAgIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mbG9v
ZENvbG9yOyB9Ci0gICAgYm9vbCBzZXRGbG9vZENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgRmls
dGVyQ2hhbmdlIHNldEZsb29kQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogICAgIGZsb2F0IGZsb29k
T3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvb2RPcGFjaXR5OyB9Ci0gICAgYm9vbCBzZXRG
bG9vZE9wYWNpdHkoZmxvYXQpOworICAgIEZpbHRlckNoYW5nZSBzZXRGbG9vZE9wYWNpdHkoZmxv
YXQpOwogCiAjaWYgIVVTRShDRykKICAgICAvLyBmZUZsb29kIGRvZXMgbm90IHBlcmZvcm0gY29s
b3IgaW50ZXJwb2xhdGlvbiBvZiBhbnkga2luZCwgc28gdGhlIHJlc3VsdCBpcyBhbHdheXMgaW4g
dGhlIGN1cnJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggNjk0NzUzY2Y0Yzc1ODBhZDg4
OWNjZDNlYjdlOTY0OTFjZGJlMjIzYi4uYjUxMDJlMjRjMDRkZjBjZTQ1MGFmNjFhYmIzMGYyNWQy
NTFiMzZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTQ1LDE5ICs0NSwyOCBAQCBGRUdh
dXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIoZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBl
IGVkZ2VNb2RlKQogewogfQogCi12b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25Y
KGZsb2F0IHgpCitGaWx0ZXJDaGFuZ2UgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblgo
ZmxvYXQgc3RkWCkKIHsKLSAgICBtX3N0ZFggPSB4OworICAgIGlmIChtX3N0ZFggPT0gc3RkWCkK
KyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKKyAgICBtX3N0ZFggPSBzdGRYOwor
ICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLXZvaWQgRkVHYXVzc2lhbkJs
dXI6OnNldFN0ZERldmlhdGlvblkoZmxvYXQgeSkKK0ZpbHRlckNoYW5nZSBGRUdhdXNzaWFuQmx1
cjo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCBzdGRZKQogewotICAgIG1fc3RkWSA9IHk7CisgICAg
aWYgKG1fc3RkWSA9PSBzdGRZKQorICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwor
ICAgIG1fc3RkWSA9IHN0ZFk7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0K
IAotdm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0RWRnZU1vZGUoRWRnZU1vZGVUeXBlIGVkZ2VNb2Rl
KQorRmlsdGVyQ2hhbmdlIEZFR2F1c3NpYW5CbHVyOjpzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUg
ZWRnZU1vZGUpCiB7CisgICAgaWYgKG1fZWRnZU1vZGUgPT0gZWRnZU1vZGUpCisgICAgICAgIHJl
dHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV9lZGdlTW9kZSA9IGVkZ2VNb2RlOworICAg
IHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQg
Z2F1c3NpYW5LZXJuZWxGYWN0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCmluZGV4IDI0Y2I5MjZmNzY0
OGQxYWZjNGQwODkzMmE0MjUyMjNmMzQ4YmYwMGYuLjBjODhmYjk2NjliNDQzMjhjZWQ4MmRmYmU3
ZGJiODQ1OWNmMWQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTMyLDEzICszMiwxMyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGRUdhdXNzaWFuQmx1cj4gY3Jl
YXRlKGZsb2F0IHgsIGZsb2F0IHksIEVkZ2VNb2RlVHlwZSk7CiAKICAgICBmbG9hdCBzdGREZXZp
YXRpb25YKCkgY29uc3QgeyByZXR1cm4gbV9zdGRYOyB9Ci0gICAgdm9pZCBzZXRTdGREZXZpYXRp
b25YKGZsb2F0KTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0U3RkRGV2aWF0aW9uWChmbG9hdCk7CiAK
ICAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGRZOyB9Ci0gICAg
dm9pZCBzZXRTdGREZXZpYXRpb25ZKGZsb2F0KTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0U3RkRGV2
aWF0aW9uWShmbG9hdCk7CiAKICAgICBFZGdlTW9kZVR5cGUgZWRnZU1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2VkZ2VNb2RlOyB9Ci0gICAgdm9pZCBzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUpOwor
ICAgIEZpbHRlckNoYW5nZSBzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUpOwogCiAgICAgc3RhdGlj
IEludFNpemUgY2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0ZXImLCBGbG9hdFNpemUgc3Rk
RGV2aWF0aW9uKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNp
emUoRmxvYXRTaXplIHN0ZERldmlhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCBlYjQ5Yjc1ZDRl
YjNkNjRjYzBjZGJlMGU3MzhkMDI1Mjg2YTdiNzkzLi4xNDU5MjMyNzI2ZTdlZDRmNzg2YTg5Y2Zl
YmM0MThkNTRhMjU2MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTQ2LDQwICs0NiwzNiBAQCBGRUxp
Z2h0aW5nOjpGRUxpZ2h0aW5nKFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3Is
IGZsb2F0IHN1cmZhY2VTY2FsZQogewogfQogCi1ib29sIEZFTGlnaHRpbmc6OnNldFN1cmZhY2VT
Y2FsZShmbG9hdCBzdXJmYWNlU2NhbGUpCitGaWx0ZXJDaGFuZ2UgRkVMaWdodGluZzo6c2V0U3Vy
ZmFjZVNjYWxlKGZsb2F0IHN1cmZhY2VTY2FsZSkKIHsKICAgICBpZiAobV9zdXJmYWNlU2NhbGUg
PT0gc3VyZmFjZVNjYWxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAgICAgcmV0dXJu
IEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX3N1cmZhY2VTY2FsZSA9IHN1cmZhY2VTY2FsZTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQog
Ci1ib29sIEZFTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IpCitGaWx0ZXJDaGFuZ2UgRkVMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBD
b2xvciYgbGlnaHRpbmdDb2xvcikKIHsKICAgICBpZiAobV9saWdodGluZ0NvbG9yID09IGxpZ2h0
aW5nQ29sb3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgICAgICByZXR1cm4gRmlsdGVy
Q2hhbmdlOjpOb25lOwogICAgIG1fbGlnaHRpbmdDb2xvciA9IGxpZ2h0aW5nQ29sb3I7Ci0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAotYm9v
bCBGRUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCBrZXJuZWxVbml0TGVuZ3Ro
WCkKK0ZpbHRlckNoYW5nZSBGRUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCkKIHsKICAgICBpZiAobV9rZXJuZWxVbml0TGVuZ3RoWCA9PSBrZXJu
ZWxVbml0TGVuZ3RoWCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgICAgIHJldHVybiBG
aWx0ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWCA9IGtlcm5lbFVuaXRM
ZW5ndGhYOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFp
bnQ7CiB9CiAKLWJvb2wgRkVMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQga2Vy
bmVsVW5pdExlbmd0aFkpCitGaWx0ZXJDaGFuZ2UgRkVMaWdodGluZzo6c2V0S2VybmVsVW5pdExl
bmd0aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCiB7CiAgICAgaWYgKG1fa2VybmVsVW5pdExl
bmd0aFkgPT0ga2VybmVsVW5pdExlbmd0aFkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQorICAg
ICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fa2VybmVsVW5pdExlbmd0aFkg
PSBrZXJuZWxVbml0TGVuZ3RoWTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVy
Q2hhbmdlOjpSZXBhaW50OwogfQogCiBGbG9hdFJlY3QgRkVMaWdodGluZzo6Y2FsY3VsYXRlSW1h
Z2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIGNv
bnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAppbmRleCAw
YzA3M2JjMTNmOGNmMzY2ZjljZjY2MWNiMjYzNDM5NjhlMmQyMWRhLi44NGJhZTNhMTgyYzdhOGRj
YjYzNGMwMmVlZjUyZDZkNGVhYzhmNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApAQCAtNDAsMjAgKzQwLDIwIEBA
IHN0cnVjdCBGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbjsKIGNsYXNzIEZFTGlnaHRpbmcg
OiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICBjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlnaHRpbmdDb2xvcjsgfQotICAgIGJvb2wgc2V0
TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYpOworICAgIEZpbHRlckNoYW5nZSBzZXRMaWdodGlu
Z0NvbG9yKGNvbnN0IENvbG9yJik7CiAKICAgICBmbG9hdCBzdXJmYWNlU2NhbGUoKSBjb25zdCB7
IHJldHVybiBtX3N1cmZhY2VTY2FsZTsgfQotICAgIGJvb2wgc2V0U3VyZmFjZVNjYWxlKGZsb2F0
KTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKIAogICAgIGZsb2F0
IGRpZmZ1c2VDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlmZnVzZUNvbnN0YW50OyB9CiAg
ICAgZmxvYXQgc3BlY3VsYXJDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJDb25z
dGFudDsgfQogICAgIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3Nw
ZWN1bGFyRXhwb25lbnQ7IH0KIAogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3Qg
eyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsgfQotICAgIGJvb2wgc2V0S2VybmVsVW5pdExl
bmd0aFgoZmxvYXQpOworICAgIEZpbHRlckNoYW5nZSBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9h
dCk7CiAKICAgICBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0IHsgcmV0dXJuIG1fa2Vy
bmVsVW5pdExlbmd0aFk7IH0KLSAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0KTsK
KyAgICBGaWx0ZXJDaGFuZ2Ugc2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwogCiAgICAgY29u
c3QgTGlnaHRTb3VyY2UmIGxpZ2h0U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9saWdodFNvdXJj
ZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggY2E2ZTUwNTE1NWRjMjgwOGMzMWNh
NDVkMWYxMDFjNDc1OWQ0ZDhmZS4uNjgwOGYxZGFiNjFlMjgwNDljM2ZjMjdjNGE0MTAzOWU0ZjYx
NjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcApAQCAtNDQsMjggKzQ0LDI4IEBAIEZFTW9ycGhvbG9n
eTo6RkVNb3JwaG9sb2d5KE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxvYXQgcmFkaXVz
WCwgZmxvYXQgcmFkCiB7CiB9CiAKLWJvb2wgRkVNb3JwaG9sb2d5OjpzZXRNb3JwaG9sb2d5T3Bl
cmF0b3IoTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB0eXBlKQorRmlsdGVyQ2hhbmdlIEZFTW9ycGhv
bG9neTo6c2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkK
IHsKICAgICBpZiAobV90eXBlID09IHR5cGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX3R5cGUgPSB0eXBlOwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLWJvb2wg
RkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNYKGZsb2F0IHJhZGl1c1gpCitGaWx0ZXJDaGFuZ2UgRkVN
b3JwaG9sb2d5OjpzZXRSYWRpdXNYKGZsb2F0IHJhZGl1c1gpCiB7CiAgICAgaWYgKG1fcmFkaXVz
WCA9PSByYWRpdXNYKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0
ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV9yYWRpdXNYID0gcmFkaXVzWDsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCi1ib29sIEZFTW9ycGhv
bG9neTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQorRmlsdGVyQ2hhbmdlIEZFTW9ycGhvbG9n
eTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogewogICAgIGlmIChtX3JhZGl1c1kgPT0gcmFk
aXVzWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdl
OjpOb25lOwogICAgIG1fcmFkaXVzWSA9IHJhZGl1c1k7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAogRmxvYXRSZWN0IEZFTW9ycGhvbG9n
eTo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJ
bWFnZVZlY3RvciYgaW5wdXRzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNb3JwaG9sb2d5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5oCmluZGV4IDJmNmI2MjM4MTk2MGU0NzVlODlmNDY5ZTViNzc2MmRm
MmJjOWVhOTguLjJjYTk4NWYzZGQ5Y2Q3NzAwOGM0YjA3OWJiNWE4MzE4M2I0ZGJmMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1v
cnBob2xvZ3kuaApAQCAtMzcsMTMgKzM3LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZFTW9ycGhvbG9neT4gY3JlYXRlKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUs
IGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOwogCiAgICAgTW9ycGhvbG9neU9wZXJhdG9y
VHlwZSBtb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBi
b29sIHNldE1vcnBob2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKKyAgICBG
aWx0ZXJDaGFuZ2Ugc2V0TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUp
OwogCiAgICAgZmxvYXQgcmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWDsgfQotICAg
IGJvb2wgc2V0UmFkaXVzWChmbG9hdCk7CisgICAgRmlsdGVyQ2hhbmdlIHNldFJhZGl1c1goZmxv
YXQpOwogCiAgICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWTsgfQot
ICAgIGJvb2wgc2V0UmFkaXVzWShmbG9hdCk7CisgICAgRmlsdGVyQ2hhbmdlIHNldFJhZGl1c1ko
ZmxvYXQpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZjxGRU1vcnBob2xvZ3k+PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCA4
NjlkY2Y2YzU4ZDI4MzVlM2NkZmFlNWI3ODdjMmU2YTliOWY5NDY3Li40MjJiZGRlMzlhNDJmY2Ix
ZmJlNTAzYjU5MzliYzlkY2UwNmRmZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtNDMsMTQgKzQzLDIwIEBA
IEZFT2Zmc2V0OjpGRU9mZnNldChmbG9hdCBkeCwgZmxvYXQgZHkpCiB7CiB9CiAKLXZvaWQgRkVP
ZmZzZXQ6OnNldER4KGZsb2F0IGR4KQorRmlsdGVyQ2hhbmdlIEZFT2Zmc2V0OjpzZXREeChmbG9h
dCBkeCkKIHsKKyAgICBpZiAobV9keCA9PSBkeCkKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5n
ZTo6Tm9uZTsKICAgICBtX2R4ID0gZHg7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWlu
dDsKIH0KIAotdm9pZCBGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCitGaWx0ZXJDaGFuZ2UgRkVP
ZmZzZXQ6OnNldER5KGZsb2F0IGR5KQogeworICAgIGlmIChtX2R5ID09IGR5KQorICAgICAgICBy
ZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fZHkgPSBkeTsKKyAgICByZXR1cm4gRmls
dGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCiBGbG9hdFJlY3QgRkVPZmZzZXQ6OmNhbGN1bGF0ZUlt
YWdlUmVjdChjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlu
cHV0cywgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKaW5k
ZXggMWIyNDY4NDE5Mzc2MzNhNWFhYjNmYjYwYzE0Yjc5NTI1MWU2MGM1Mi4uZjU2YmQ2MmUzMmMz
Njk5MDFiNDg3MDY2OGU1ZmFhNWJlYmE0YTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaApAQCAtMzEsMTAgKzMxLDEwIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFT2Zmc2V0PiBjcmVhdGUo
ZmxvYXQgZHgsIGZsb2F0IGR5KTsKIAogICAgIGZsb2F0IGR4KCkgY29uc3QgeyByZXR1cm4gbV9k
eDsgfQotICAgIHZvaWQgc2V0RHgoZmxvYXQpOworICAgIEZpbHRlckNoYW5nZSBzZXREeChmbG9h
dCk7CiAKICAgICBmbG9hdCBkeSgpIGNvbnN0IHsgcmV0dXJuIG1fZHk7IH0KLSAgICB2b2lkIHNl
dER5KGZsb2F0KTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0RHkoZmxvYXQpOwogCiAgICAgc3RhdGlj
IEludE91dHNldHMgY2FsY3VsYXRlT3V0c2V0cyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVT
cGVjdWxhckxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAppbmRleCA5ODQ5MmQ4MmYwYTRkYWI3OGMzNDQz
Mjg0M2FkOTA1ZTdiY2Q1MDM2Li4yZjU1YmJlYTViMWYzM2I0MzI2ZGQ0ZDgwZThkOGY3NmZlM2E0
M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCkBAIC00NCwyMCArNDQsMjAgQEAg
RkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoY29uc3QgQ29sb3ImIGxpZ2h0
aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2UKIHsKIH0KIAotYm9vbCBGRVNwZWN1bGFyTGlnaHRpbmc6
OnNldFNwZWN1bGFyQ29uc3RhbnQoZmxvYXQgc3BlY3VsYXJDb25zdGFudCkKK0ZpbHRlckNoYW5n
ZSBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFyQ29uc3RhbnQoZmxvYXQgc3BlY3VsYXJD
b25zdGFudCkKIHsKICAgICBpZiAobV9zcGVjdWxhckNvbnN0YW50ID09IHNwZWN1bGFyQ29uc3Rh
bnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6
Tm9uZTsKICAgICBtX3NwZWN1bGFyQ29uc3RhbnQgPSBzcGVjdWxhckNvbnN0YW50OwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLWJvb2wg
RkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0IHNwZWN1bGFyRXhw
b25lbnQpCitGaWx0ZXJDaGFuZ2UgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckV4cG9u
ZW50KGZsb2F0IHNwZWN1bGFyRXhwb25lbnQpCiB7CiAgICAgaWYgKG1fc3BlY3VsYXJFeHBvbmVu
dCA9PSBzcGVjdWxhckV4cG9uZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV9zcGVjdWxhckV4cG9uZW50ID0gc3BlY3Vs
YXJFeHBvbmVudDsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpS
ZXBhaW50OwogfQogCiBUZXh0U3RyZWFtJiBGRVNwZWN1bGFyTGlnaHRpbmc6OmV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIEZpbHRlclJlcHJlc2VudGF0aW9uIHJlcHJlc2Vu
dGF0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmgKaW5kZXggMTI0ZGIzY2VlMGY5
MTE5M2NjYzIyM2E3MWM5YTNhYjczMzAzNDhkZi4uZTg2ZWM4MzE1ZDM2NDUwNmNiODU1ZDlhMDJi
MzU5ODY5ZDI2NTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5oCkBAIC0zMiwxMCArMzIs
MTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8RkVTcGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUo
Y29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3Bl
Y3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCwgZmxvYXQga2VybmVsVW5pdExl
bmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBSZWY8TGlnaHRTb3VyY2U+JiYpOwogCiAg
ICAgZmxvYXQgc3BlY3VsYXJDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJDb25z
dGFudDsgfQotICAgIGJvb2wgc2V0U3BlY3VsYXJDb25zdGFudChmbG9hdCk7CisgICAgRmlsdGVy
Q2hhbmdlIHNldFNwZWN1bGFyQ29uc3RhbnQoZmxvYXQpOwogCiAgICAgZmxvYXQgc3BlY3VsYXJF
eHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVudDsgfQotICAgIGJvb2wg
c2V0U3BlY3VsYXJFeHBvbmVudChmbG9hdCk7CisgICAgRmlsdGVyQ2hhbmdlIHNldFNwZWN1bGFy
RXhwb25lbnQoZmxvYXQpOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIEZpbHRlclJlcHJlc2VudGF0aW9uKSBjb25zdCBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IGQ0MTI5NzJhN2UyZDA5MjRiZjBlZjQ0YzQ1
MjI0OTNlOTE3NjhhMTEuLjI0MTI3MmI1OTljM2RjNGI3ZmEzNzlkMzMzNjUzMjYwN2FkODEzODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTQ4LDUyICs0OCw1MiBAQCBGRVR1cmJ1bGVuY2U6OkZF
VHVyYnVsZW5jZShUdXJidWxlbmNlVHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxv
YXQgYmFzZQogewogfQogCi1ib29sIEZFVHVyYnVsZW5jZTo6c2V0VHlwZShUdXJidWxlbmNlVHlw
ZSB0eXBlKQorRmlsdGVyQ2hhbmdlIEZFVHVyYnVsZW5jZTo6c2V0VHlwZShUdXJidWxlbmNlVHlw
ZSB0eXBlKQogewogICAgIGlmIChtX3R5cGUgPT0gdHlwZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fdHlwZSA9IHR5cGU7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0K
IAotYm9vbCBGRVR1cmJ1bGVuY2U6OnNldEJhc2VGcmVxdWVuY3lZKGZsb2F0IGJhc2VGcmVxdWVu
Y3lZKQorRmlsdGVyQ2hhbmdlIEZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1ZW5jeVkoZmxvYXQg
YmFzZUZyZXF1ZW5jeVkpCiB7CiAgICAgaWYgKG1fYmFzZUZyZXF1ZW5jeVkgPT0gYmFzZUZyZXF1
ZW5jeVkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5n
ZTo6Tm9uZTsKICAgICBtX2Jhc2VGcmVxdWVuY3lZID0gYmFzZUZyZXF1ZW5jeVk7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAotYm9vbCBG
RVR1cmJ1bGVuY2U6OnNldEJhc2VGcmVxdWVuY3lYKGZsb2F0IGJhc2VGcmVxdWVuY3lYKQorRmls
dGVyQ2hhbmdlIEZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1ZW5jeVgoZmxvYXQgYmFzZUZyZXF1
ZW5jeVgpCiB7CiAgICAgaWYgKG1fYmFzZUZyZXF1ZW5jeVggPT0gYmFzZUZyZXF1ZW5jeVgpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsK
ICAgICBtX2Jhc2VGcmVxdWVuY3lYID0gYmFzZUZyZXF1ZW5jeVg7Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAotYm9vbCBGRVR1cmJ1bGVu
Y2U6OnNldFNlZWQoZmxvYXQgc2VlZCkKK0ZpbHRlckNoYW5nZSBGRVR1cmJ1bGVuY2U6OnNldFNl
ZWQoZmxvYXQgc2VlZCkKIHsKICAgICBpZiAobV9zZWVkID09IHNlZWQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX3NlZWQg
PSBzZWVkOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlcGFp
bnQ7CiB9CiAKLWJvb2wgRkVUdXJidWxlbmNlOjpzZXROdW1PY3RhdmVzKGludCBudW1PY3RhdmVz
KQorRmlsdGVyQ2hhbmdlIEZFVHVyYnVsZW5jZTo6c2V0TnVtT2N0YXZlcyhpbnQgbnVtT2N0YXZl
cykKIHsKICAgICBpZiAobV9udW1PY3RhdmVzID09IG51bU9jdGF2ZXMpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX251bU9j
dGF2ZXMgPSBudW1PY3RhdmVzOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJD
aGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLWJvb2wgRkVUdXJidWxlbmNlOjpzZXRTdGl0Y2hUaWxlcyhi
b29sIHN0aXRjaCkKK0ZpbHRlckNoYW5nZSBGRVR1cmJ1bGVuY2U6OnNldFN0aXRjaFRpbGVzKGJv
b2wgc3RpdGNoKQogewogICAgIGlmIChtX3N0aXRjaFRpbGVzID09IHN0aXRjaCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1f
c3RpdGNoVGlsZXMgPSBzdGl0Y2g7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRl
ckNoYW5nZTo6UmVwYWludDsKIH0KIAogRmxvYXRSZWN0IEZFVHVyYnVsZW5jZTo6Y2FsY3VsYXRl
SW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYs
IGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgK
aW5kZXggZTgwODdjMzAwMmE2Njc4ZjBlNzMxMzkwNWRkZDU0ODEzZTczZGUwZC4uNTAzZmUyN2Qw
NDYwNzNiMjBjN2Q1YmFjNWM2ZTdlYTg1YjE5YzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCkBAIC00MCwy
MiArNDAsMjIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RkVUdXJi
dWxlbmNlPiBjcmVhdGUoVHVyYnVsZW5jZVR5cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9h
dCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9jdGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNo
VGlsZXMpOwogCiAgICAgVHVyYnVsZW5jZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQotICAgIGJvb2wgc2V0VHlwZShUdXJidWxlbmNlVHlwZSk7CisgICAgRmlsdGVyQ2hhbmdl
IHNldFR5cGUoVHVyYnVsZW5jZVR5cGUpOwogCiAgICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVgoKSBj
b25zdCB7IHJldHVybiBtX2Jhc2VGcmVxdWVuY3lYOyB9Ci0gICAgYm9vbCBzZXRCYXNlRnJlcXVl
bmN5WChmbG9hdCk7CisgICAgRmlsdGVyQ2hhbmdlIHNldEJhc2VGcmVxdWVuY3lYKGZsb2F0KTsK
IAogICAgIGZsb2F0IGJhc2VGcmVxdWVuY3lZKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRnJlcXVl
bmN5WTsgfQotICAgIGJvb2wgc2V0QmFzZUZyZXF1ZW5jeVkoZmxvYXQpOworICAgIEZpbHRlckNo
YW5nZSBzZXRCYXNlRnJlcXVlbmN5WShmbG9hdCk7CiAKICAgICBmbG9hdCBzZWVkKCkgY29uc3Qg
eyByZXR1cm4gbV9zZWVkOyB9Ci0gICAgYm9vbCBzZXRTZWVkKGZsb2F0KTsKKyAgICBGaWx0ZXJD
aGFuZ2Ugc2V0U2VlZChmbG9hdCk7CiAKICAgICBpbnQgbnVtT2N0YXZlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtT2N0YXZlczsgfQotICAgIGJvb2wgc2V0TnVtT2N0YXZlcyhpbnQpOworICAgIEZp
bHRlckNoYW5nZSBzZXROdW1PY3RhdmVzKGludCk7CiAKICAgICBib29sIHN0aXRjaFRpbGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGl0Y2hUaWxlczsgfQotICAgIGJvb2wgc2V0U3RpdGNoVGlsZXMo
Ym9vbCk7CisgICAgRmlsdGVyQ2hhbmdlIHNldFN0aXRjaFRpbGVzKGJvb2wpOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxGRVR1cmJ1bGVu
Y2U+PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJDaGFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQ2hhbmdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYyY2U0NTU4
MmVjZjlhNjAzYzkwMWQxODZmMWRhNGE4OWVjNWM4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyQ2hhbmdlLmgKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEZpbHRl
ckNoYW5nZSA6IHVpbnQ4X3QgeworICAgIE5vbmUsCisgICAgUmVwYWludCwKKyAgICBSZWJ1aWxk
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAyZmQxNTMz
NDg1ZmE3MTVhYzVhZDg5MWI3MjIzNDQ1OTE3N2Y2MjM4Li43ZWNiM2E4ZWE2MzM4ZDJjMjRhZmM4
MjAyM2IzMWY3ZWQ0M2VkNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisjaW5jbHVk
ZSAiRmlsdGVyQ2hhbmdlLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0QXBwbGllci5oIgogI2lu
Y2x1ZGUgIkZpbHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiRmlsdGVySW1hZ2VWZWN0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGln
aHRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGln
aHRTb3VyY2UuaAppbmRleCA5NDZkMmRlNDZhZGNlNTlkNTY1MDlmMDY0ZTM5MmQyZjM4MWM0MTVh
Li41NTgxNmM0NWJkNjAwYWY5YjE4NWNmM2IxY2UzMDc3MjcxNDNhODgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5o
CkBAIC0yNCw2ICsyNCw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmlsdGVyQ2hh
bmdlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIApAQCAtNzMsMTkgKzc0LDE5IEBAIHB1YmxpYzoKICAgICAvLyB4IGFuZCB5IGFyZSBp
biB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIEZpbHRlckVmZmVjdCdzIGJ1ZmZlci4KICAgICB2aXJ0
dWFsIENvbXB1dGVkTGlnaHRpbmdEYXRhIGNvbXB1dGVQaXhlbExpZ2h0aW5nRGF0YShjb25zdCBQ
YWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IHopIGNvbnN0ID0gMDsKIAotICAgIHZp
cnR1YWwgYm9vbCBzZXRBemltdXRoKGZsb2F0KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBzZXRFbGV2YXRpb24oZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBGaWx0ZXJDaGFuZ2Ugc2V0QXppbXV0aChmbG9hdCkgeyByZXR1cm4gRmlsdGVyQ2hhbmdlOjpO
b25lOyB9CisgICAgdmlydHVhbCBGaWx0ZXJDaGFuZ2Ugc2V0RWxldmF0aW9uKGZsb2F0KSB7IHJl
dHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7IH0KICAgICAKICAgICAvLyBUaGVzZSBhcmUgaW4gdXNl
ciBzcGFjZSBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0WChmbG9hdCkgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2V0WShmbG9hdCkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2V0WihmbG9hdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc2V0UG9pbnRzQXRYKGZsb2F0KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBzZXRQb2ludHNBdFkoZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIHNldFBvaW50c0F0WihmbG9hdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIEZpbHRlckNoYW5nZSBzZXRYKGZsb2F0KSB7IHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7
IH0KKyAgICB2aXJ0dWFsIEZpbHRlckNoYW5nZSBzZXRZKGZsb2F0KSB7IHJldHVybiBGaWx0ZXJD
aGFuZ2U6Ok5vbmU7IH0KKyAgICB2aXJ0dWFsIEZpbHRlckNoYW5nZSBzZXRaKGZsb2F0KSB7IHJl
dHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7IH0KKyAgICB2aXJ0dWFsIEZpbHRlckNoYW5nZSBzZXRQ
b2ludHNBdFgoZmxvYXQpIHsgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsgfQorICAgIHZpcnR1
YWwgRmlsdGVyQ2hhbmdlIHNldFBvaW50c0F0WShmbG9hdCkgeyByZXR1cm4gRmlsdGVyQ2hhbmdl
OjpOb25lOyB9CisgICAgdmlydHVhbCBGaWx0ZXJDaGFuZ2Ugc2V0UG9pbnRzQXRaKGZsb2F0KSB7
IHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2V0
U3BlY3VsYXJFeHBvbmVudChmbG9hdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgc2V0TGltaXRpbmdDb25lQW5nbGUoZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBGaWx0ZXJDaGFuZ2Ugc2V0U3BlY3VsYXJFeHBvbmVudChmbG9hdCkgeyByZXR1cm4gRmls
dGVyQ2hhbmdlOjpOb25lOyB9CisgICAgdmlydHVhbCBGaWx0ZXJDaGFuZ2Ugc2V0TGltaXRpbmdD
b25lQW5nbGUoZmxvYXQpIHsgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsgfQogCiBwcml2YXRl
OgogICAgIExpZ2h0VHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcAppbmRleCBl
ZWQ3OTVmZGZlMWI2NmQxYTg0Y2RjNWUzNmZhNzQwNzM0YWI3OWUzLi4zODEzZWVjMWU4MzUyODJk
MDM3Y2NiOTIxMjUxNWYxYWUyMWFkYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAKQEAg
LTcwLDI4ICs3MCwyOCBAQCBMaWdodFNvdXJjZTo6Q29tcHV0ZWRMaWdodGluZ0RhdGEgUG9pbnRM
aWdodFNvdXJjZTo6Y29tcHV0ZVBpeGVsTGlnaHRpbmdEYXRhKGNvbgogICAgIHJldHVybiB7IGxp
Z2h0VmVjdG9yLCBwYWludGluZ0RhdGEuaW5pdGlhbExpZ2h0aW5nRGF0YS5jb2xvclZlY3Rvciwg
bGlnaHRWZWN0b3IubGVuZ3RoKCkgfTsKIH0KIAotYm9vbCBQb2ludExpZ2h0U291cmNlOjpzZXRY
KGZsb2F0IHgpCitGaWx0ZXJDaGFuZ2UgUG9pbnRMaWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQog
ewogICAgIGlmIChtX3VzZXJTcGFjZVBvc2l0aW9uLngoKSA9PSB4KQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV91c2VyU3Bh
Y2VQb3NpdGlvbi5zZXRYKHgpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJD
aGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLWJvb2wgUG9pbnRMaWdodFNvdXJjZTo6c2V0WShmbG9hdCB5
KQorRmlsdGVyQ2hhbmdlIFBvaW50TGlnaHRTb3VyY2U6OnNldFkoZmxvYXQgeSkKIHsKICAgICBp
ZiAobV91c2VyU3BhY2VQb3NpdGlvbi55KCkgPT0geSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fdXNlclNwYWNlUG9zaXRp
b24uc2V0WSh5KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpS
ZXBhaW50OwogfQogCi1ib29sIFBvaW50TGlnaHRTb3VyY2U6OnNldFooZmxvYXQgeikKK0ZpbHRl
ckNoYW5nZSBQb2ludExpZ2h0U291cmNlOjpzZXRaKGZsb2F0IHopCiB7CiAgICAgaWYgKG1fdXNl
clNwYWNlUG9zaXRpb24ueigpID09IHopCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKICAgICBtX3VzZXJTcGFjZVBvc2l0aW9uLnNldFoo
eik7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsK
IH0KIAogVGV4dFN0cmVhbSYgUG9pbnRMaWdodFNvdXJjZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihUZXh0U3RyZWFtJiB0cykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmgKaW5kZXggNWM5Yzdm
Yjc4M2U2NmU3MWY1ZjI5YjhmNThjOTIwOGYyNTMzZGZjZS4uODY2ZjA1MGUzMWM5MDQyNjliZWY2
NjdiNWY0ZDllNjRmMWE2NzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmgKQEAgLTMzLDkgKzMz
LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UG9pbnRMaWdodFNv
dXJjZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24pOwogCiAgICAgY29uc3Qg
RmxvYXRQb2ludDNEJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclNwYWNlUG9zaXRp
b247IH0KLSAgICBib29sIHNldFgoZmxvYXQpIG92ZXJyaWRlOwotICAgIGJvb2wgc2V0WShmbG9h
dCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXRaKGZsb2F0KSBvdmVycmlkZTsKKyAgICBGaWx0ZXJD
aGFuZ2Ugc2V0WChmbG9hdCkgb3ZlcnJpZGU7CisgICAgRmlsdGVyQ2hhbmdlIHNldFkoZmxvYXQp
IG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRaKGZsb2F0KSBvdmVycmlkZTsKIAogICAg
IHZvaWQgaW5pdFBhaW50aW5nRGF0YShjb25zdCBGaWx0ZXImLCBjb25zdCBGaWx0ZXJJbWFnZSYg
cmVzdWx0LCBQYWludGluZ0RhdGEmKSBjb25zdCBvdmVycmlkZTsKICAgICBDb21wdXRlZExpZ2h0
aW5nRGF0YSBjb21wdXRlUGl4ZWxMaWdodGluZ0RhdGEoY29uc3QgUGFpbnRpbmdEYXRhJiwgaW50
IHgsIGludCB5LCBmbG9hdCB6KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcApp
bmRleCAwNzRiZDkzNzIxZDhmNTc3ZTkxNDFiZWFiNzAwMDE5NGVlNDRjYjhiLi45OTE3ODBkOGFk
MWI0MmYzYjI4NDUyZWIwMjE5MDY4M2RmNDVmZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3Bw
CkBAIC0xMzMsNjggKzEzMyw2OCBAQCBMaWdodFNvdXJjZTo6Q29tcHV0ZWRMaWdodGluZ0RhdGEg
U3BvdExpZ2h0U291cmNlOjpjb21wdXRlUGl4ZWxMaWdodGluZ0RhdGEoY29ucwogICAgIH07CiB9
CiAKLWJvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRYKGZsb2F0IHgpCitGaWx0ZXJDaGFuZ2UgU3Bv
dExpZ2h0U291cmNlOjpzZXRYKGZsb2F0IHgpCiB7CiAgICAgaWYgKG1fdXNlclNwYWNlUG9zaXRp
b24ueCgpID09IHgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRl
ckNoYW5nZTo6Tm9uZTsKICAgICBtX3VzZXJTcGFjZVBvc2l0aW9uLnNldFgoeCk7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVwYWludDsKIH0KIAotYm9vbCBT
cG90TGlnaHRTb3VyY2U6OnNldFkoZmxvYXQgeSkKK0ZpbHRlckNoYW5nZSBTcG90TGlnaHRTb3Vy
Y2U6OnNldFkoZmxvYXQgeSkKIHsKICAgICBpZiAobV91c2VyU3BhY2VQb3NpdGlvbi55KCkgPT0g
eSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpO
b25lOwogICAgIG1fdXNlclNwYWNlUG9zaXRpb24uc2V0WSh5KTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCi1ib29sIFNwb3RMaWdodFNv
dXJjZTo6c2V0WihmbG9hdCB6KQorRmlsdGVyQ2hhbmdlIFNwb3RMaWdodFNvdXJjZTo6c2V0Wihm
bG9hdCB6KQogewogICAgIGlmIChtX3VzZXJTcGFjZVBvc2l0aW9uLnooKSA9PSB6KQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiAgICAg
bV91c2VyU3BhY2VQb3NpdGlvbi5zZXRaKHopOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLWJvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRQ
b2ludHNBdFgoZmxvYXQgcG9pbnRzQXRYKQorRmlsdGVyQ2hhbmdlIFNwb3RMaWdodFNvdXJjZTo6
c2V0UG9pbnRzQXRYKGZsb2F0IHBvaW50c0F0WCkKIHsKICAgICBpZiAobV91c2VyU3BhY2VQb2lu
dHNBdC54KCkgPT0gcG9pbnRzQXRYKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiAgICAgbV91c2VyU3BhY2VQb2ludHNBdC5zZXRYKHBv
aW50c0F0WCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6UmVw
YWludDsKIH0KIAotYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WShmbG9hdCBwb2lu
dHNBdFkpCitGaWx0ZXJDaGFuZ2UgU3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFkoZmxvYXQg
cG9pbnRzQXRZKQogewogICAgIGlmIChtX3VzZXJTcGFjZVBvaW50c0F0LnkoKSA9PSBwb2ludHNB
dFkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6
Tm9uZTsKICAgICBtX3VzZXJTcGFjZVBvaW50c0F0LnNldFkocG9pbnRzQXRZKTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCi1ib29sIFNw
b3RMaWdodFNvdXJjZTo6c2V0UG9pbnRzQXRaKGZsb2F0IHBvaW50c0F0WikKK0ZpbHRlckNoYW5n
ZSBTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WihmbG9hdCBwb2ludHNBdFopCiB7CiAgICAg
aWYgKG1fdXNlclNwYWNlUG9pbnRzQXQueigpID09IHBvaW50c0F0WikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogICAgIG1fdXNlclNw
YWNlUG9pbnRzQXQuc2V0Wihwb2ludHNBdFopOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBGaWx0ZXJDaGFuZ2U6OlJlcGFpbnQ7CiB9CiAKLWJvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRT
cGVjdWxhckV4cG9uZW50KGZsb2F0IHNwZWN1bGFyRXhwb25lbnQpCitGaWx0ZXJDaGFuZ2UgU3Bv
dExpZ2h0U291cmNlOjpzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0IHNwZWN1bGFyRXhwb25lbnQp
CiB7CiAgICAgaWYgKG1fc3BlY3VsYXJFeHBvbmVudCA9PSBzcGVjdWxhckV4cG9uZW50KQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiAg
ICAgbV9zcGVjdWxhckV4cG9uZW50ID0gc3BlY3VsYXJFeHBvbmVudDsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50OwogfQogCi1ib29sIFNwb3RMaWdo
dFNvdXJjZTo6c2V0TGltaXRpbmdDb25lQW5nbGUoZmxvYXQgbGltaXRpbmdDb25lQW5nbGUpCitG
aWx0ZXJDaGFuZ2UgU3BvdExpZ2h0U291cmNlOjpzZXRMaW1pdGluZ0NvbmVBbmdsZShmbG9hdCBs
aW1pdGluZ0NvbmVBbmdsZSkKIHsKICAgICBpZiAobV9saW1pdGluZ0NvbmVBbmdsZSA9PSBsaW1p
dGluZ0NvbmVBbmdsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmls
dGVyQ2hhbmdlOjpOb25lOwogICAgIG1fbGltaXRpbmdDb25lQW5nbGUgPSBsaW1pdGluZ0NvbmVB
bmdsZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpSZXBhaW50
OwogfQogCiBUZXh0U3RyZWFtJiBTcG90TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuaAppbmRleCAwNGUzMzFl
YzRlYzA4YWQwYjNjYzVhODAxZDVjY2QyN2U1OTYyNDgyLi4xNDE3Y2QwOThjNGVmYWE5ODE4ZWQ0
YzI2MjRlM2E3NDIwZWQyMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmgKQEAgLTM3LDE1ICszNywx
NSBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BlY3VsYXJFeHBvbmVudDsgfQogICAgIGZsb2F0IGxpbWl0aW5nQ29uZUFuZ2xlKCkgY29u
c3QgeyByZXR1cm4gbV9saW1pdGluZ0NvbmVBbmdsZTsgfQogCi0gICAgYm9vbCBzZXRYKGZsb2F0
KSBvdmVycmlkZTsKLSAgICBib29sIHNldFkoZmxvYXQpIG92ZXJyaWRlOwotICAgIGJvb2wgc2V0
WihmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXRQb2ludHNBdFgoZmxvYXQpIG92ZXJyaWRl
OwotICAgIGJvb2wgc2V0UG9pbnRzQXRZKGZsb2F0KSBvdmVycmlkZTsKLSAgICBib29sIHNldFBv
aW50c0F0WihmbG9hdCkgb3ZlcnJpZGU7Ci0KLSAgICBib29sIHNldFNwZWN1bGFyRXhwb25lbnQo
ZmxvYXQpIG92ZXJyaWRlOwotICAgIGJvb2wgc2V0TGltaXRpbmdDb25lQW5nbGUoZmxvYXQpIG92
ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRYKGZsb2F0KSBvdmVycmlkZTsKKyAgICBGaWx0
ZXJDaGFuZ2Ugc2V0WShmbG9hdCkgb3ZlcnJpZGU7CisgICAgRmlsdGVyQ2hhbmdlIHNldFooZmxv
YXQpIG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRQb2ludHNBdFgoZmxvYXQpIG92ZXJy
aWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRQb2ludHNBdFkoZmxvYXQpIG92ZXJyaWRlOworICAg
IEZpbHRlckNoYW5nZSBzZXRQb2ludHNBdFooZmxvYXQpIG92ZXJyaWRlOworCisgICAgRmlsdGVy
Q2hhbmdlIHNldFNwZWN1bGFyRXhwb25lbnQoZmxvYXQpIG92ZXJyaWRlOworICAgIEZpbHRlckNo
YW5nZSBzZXRMaW1pdGluZ0NvbmVBbmdsZShmbG9hdCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGlu
aXRQYWludGluZ0RhdGEoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2UmIHJlc3VsdCwg
UGFpbnRpbmdEYXRhJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29tcHV0ZWRMaWdodGluZ0RhdGEg
Y29tcHV0ZVBpeGVsTGlnaHRpbmdEYXRhKGNvbnN0IFBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQg
eSwgZmxvYXQgeikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwCmluZGV4IDI5MWM3MjBjMjAzZGI2NTFkNGVlZjk1OGI4N2RhYWM5YzhmN2UyY2QuLjQzZDhm
OTQwNzQ4N2RjOTFkNDA0YzY0MjdkMTkxNTEyMTI1ZDkyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0yNjQsOCArMjY0LDcgQEAgc3RhdGljIFJlZlB0cjxTVkdG
aWx0ZXI+IGNyZWF0ZVJlZmVyZW5jZUZpbHRlcihDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgUmVm
ZXJlbmMKIAogICAgIGF1dG8gZmlsdGVyUmVnaW9uID0gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2
ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PihmaWx0ZXJFbGVtZW50LCBmaWx0ZXJFbGVtZW50
LT5maWx0ZXJVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCk7CiAKLSAgICBTVkdGaWx0ZXJCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgcmV0dXJuIFNWR0ZpbHRlcjo6Y3JlYXRlKCpmaWx0ZXJFbGVtZW50
LCBidWlsZGVyLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwg
ZmlsdGVyLmNsaXBPcGVyYXRpb24oKSwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwg
ZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICByZXR1cm4gU1ZHRmlsdGVyOjpjcmVhdGUoKmZpbHRl
ckVsZW1lbnQsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBm
aWx0ZXIuY2xpcE9wZXJhdGlvbigpLCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBk
ZXN0aW5hdGlvbkNvbnRleHQpOwogfQogCiBib29sIENTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5j
dGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9w
ZXJhdGlvbnMsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBhN2E3
Nzc4MWIwNWY4ZTFlYWUyZTBiMDM0NTExYjc5YjUyYTlhN2NhLi44ZmY1NDM1YmNjMjQ1MDVmMGM2
YTFhZDNjOWRlMTAyMDgyZTI1OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjUsMjQgKzI1LDE0
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaCIKIAotI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRmls
dGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNs
dWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVySW5saW5lcy5oIgotI2luY2x1
ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgiCi0jaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBlSGVscGVycy5oIgotI2luY2x1ZGUgIlNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgotI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIlNldHRpbmdz
LmgiCi0jaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC0xMjksOCAr
MTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICBhdXRvIHJlbmRlcmluZ01vZGUg
PSByZW5kZXJlci5wYWdlKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5n
TW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogCiAgICAg
Ly8gQ3JlYXRlIHRoZSBTVkdGaWx0ZXIgb2JqZWN0LgotICAgIGZpbHRlckRhdGEtPmJ1aWxkZXIg
PSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCk7Ci0gICAgZmlsdGVyRGF0YS0+ZmlsdGVy
ID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyRWxlbWVudCgpLCAqZmlsdGVyRGF0YS0+YnVpbGRl
ciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIEZpbHRlcjo6Q2xpcE9wZXJhdGlvbjo6SW50
ZXJzZWN0LCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCwgKmNvbnRl
eHQpOworICAgIGZpbHRlckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckVs
ZW1lbnQoKSwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIEZpbHRlcjo6Q2xpcE9wZXJhdGlv
bjo6SW50ZXJzZWN0LCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCwg
KmNvbnRleHQpOwogICAgIGlmICghZmlsdGVyRGF0YS0+ZmlsdGVyKSB7CiAgICAgICAgIG1fcmVu
ZGVyZXJGaWx0ZXJEYXRhTWFwLnJlbW92ZSgmcmVuZGVyZXIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yMjUsMzAgKzIxNCwyOSBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OnJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplYwogICAgIHJl
dHVybiBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlckVsZW1lbnQ+
KCZmaWx0ZXJFbGVtZW50KCksIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJVbml0cygpLCBvYmplY3Qu
b2JqZWN0Qm91bmRpbmdCb3goKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6
OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6Om1h
cmtGaWx0ZXJGb3JSZXBhaW50KEZpbHRlckVmZmVjdCYgZWZmZWN0KQogewotICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogcHJpbWl0dmUgPSBzdGF0aWNfY2FzdDxTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqPihvYmplY3QtPm5vZGUoKSk7Ci0KLSAg
ICBMT0coRmlsdGVycywgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyICVwIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQgcmVuZGVyZXIgJXAiLCB0aGlzLCBvYmplY3QpOworICAgIExPRyhGaWx0ZXJz
LCAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIgJXAgbWFya0ZpbHRlckZvclJlcGFpbnQgZWZmZWN0
ICVwIiwgdGhpcywgJmVmZmVjdCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9iamVjdEZpbHRl
ckRhdGFQYWlyIDogbV9yZW5kZXJlckZpbHRlckRhdGFNYXApIHsKICAgICAgICAgY29uc3QgYXV0
byYgZmlsdGVyRGF0YSA9IG9iamVjdEZpbHRlckRhdGFQYWlyLnZhbHVlOwogICAgICAgICBpZiAo
ZmlsdGVyRGF0YS0+c3RhdGUgIT0gRmlsdGVyRGF0YTo6QnVpbHQpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBTVkdGaWx0ZXJCdWlsZGVyKiBidWlsZGVyID0gZmlsdGVyRGF0YS0+
YnVpbGRlci5nZXQoKTsKLSAgICAgICAgRmlsdGVyRWZmZWN0KiBlZmZlY3QgPSBidWlsZGVyLT5l
ZmZlY3RCeVJlbmRlcmVyKG9iamVjdCk7Ci0gICAgICAgIGlmICghZWZmZWN0KQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIC8vIFNpbmNlIGFsbCBlZmZlY3RzIHNoYXJlcyB0aGUgc2Ft
ZSBhdHRyaWJ1dGUgdmFsdWUsIGFsbAotICAgICAgICAvLyBvciBub25lIG9mIHRoZW0gd2lsbCBi
ZSBjaGFuZ2VkLgotICAgICAgICBpZiAoIXByaW1pdHZlLT5zZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoZWZmZWN0LCBhdHRyaWJ1dGUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmaWx0
ZXJEYXRhLT5yZXN1bHRzLmNsZWFyRWZmZWN0UmVzdWx0KCplZmZlY3QpOwotCiAgICAgICAgIC8v
IFJlcGFpbnQgdGhlIGltYWdlIG9uIHRoZSBzY3JlZW4uCiAgICAgICAgIG1hcmtDbGllbnRGb3JJ
bnZhbGlkYXRpb24oKm9iamVjdEZpbHRlckRhdGFQYWlyLmtleSwgUmVwYWludEludmFsaWRhdGlv
bik7CisKKyAgICAgICAgZmlsdGVyRGF0YS0+cmVzdWx0cy5jbGVhckVmZmVjdFJlc3VsdChlZmZl
Y3QpOwogICAgIH0KKworICAgIG1hcmtBbGxDbGllbnRMYXllcnNGb3JJbnZhbGlkYXRpb24oKTsK
K30KKwordm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6bWFya0ZpbHRlckZvclJlYnVpbGQo
KQoreworICAgIExPRyhGaWx0ZXJzLCAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIgJXAgbWFya0Zp
bHRlckZvclJlcGFpbnQiLCB0aGlzKTsKKworICAgIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUo
KTsKICAgICBtYXJrQWxsQ2xpZW50TGF5ZXJzRm9ySW52YWxpZGF0aW9uKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuaAppbmRleCA4YTA3Mjg4NmZhOTZlMmQ4N2UyOGNjZjhiMzQ2OTU5ODQ2OGI1YjM4Li4zMzNi
Nzk5OTI0NGJiZWJhNGUyNDMzN2RjNjMxOTZjMWFmNjNhOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCkBAIC0y
Nyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgotI2luY2x1ZGUg
IlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDUsNyArNDQs
NiBAQCBwdWJsaWM6CiAgICAgRmlsdGVyRGF0YSgpID0gZGVmYXVsdDsKIAogICAgIFJlZlB0cjxT
VkdGaWx0ZXI+IGZpbHRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4g
YnVpbGRlcjsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBoaWNCdWZmZXI7CiAg
ICAgR3JhcGhpY3NDb250ZXh0KiBzYXZlZENvbnRleHQgeyBudWxscHRyIH07CiAgICAgRmxvYXRS
ZWN0IGJvdW5kYXJpZXM7CkBAIC03MywxMiArNzEsMTEgQEAgcHVibGljOgogCiAgICAgRmxvYXRS
ZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gYnVpbGRQcmltaXRpdmVzKFNW
R0ZpbHRlciYpIGNvbnN0OwotCiAgICAgaW5saW5lIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUg
ZmlsdGVyVW5pdHMoKSBjb25zdDsKICAgICBpbmxpbmUgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlw
ZSBwcmltaXRpdmVVbml0cygpIGNvbnN0OwogCi0gICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVD
aGFuZ2VkKFJlbmRlck9iamVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2b2lkIG1h
cmtGaWx0ZXJGb3JSZXBhaW50KEZpbHRlckVmZmVjdCYpOworICAgIHZvaWQgbWFya0ZpbHRlckZv
clJlYnVpbGQoKTsKIAogICAgIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBGaWx0ZXJSZXNvdXJjZVR5cGU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAppbmRleCAyYmY3N2E5MGVjMDE5NjZkZmY3YzY5YjgyYzU5
MzM2ZDRlYzdhMWNlLi40Njk0NDUyODg0MGVkZjgwZWVlNTZhOTUyNTM5ZDA5ZmI2YTc5MzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR0ZFRmxvb2RFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oIgpAQCAtNTQsMjMgKzU1LDM0IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zCiB7
CiAgICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRT
dHlsZSk7CiAKLSAgICBhdXRvKiBmaWx0ZXIgPSBwYXJlbnQoKTsKLSAgICBpZiAoIWZpbHRlcikK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlOjpFcXVh
bCB8fCAhb2xkU3R5bGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0
eWxlJiBuZXdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKLSAgICBpZiAoaXM8U1ZHRkVGbG9v
ZEVsZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSkpIHsKKyAgICBpZiAoaXM8U1ZHRkVG
bG9vZEVsZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSkgfHwgaXM8U1ZHRkVEcm9wU2hh
ZG93RWxlbWVudD4oZmlsdGVyUHJpbWl0aXZlRWxlbWVudCgpKSkgewogICAgICAgICBpZiAobmV3
U3R5bGUuZmxvb2RDb2xvcigpICE9IG9sZFN0eWxlLT5zdmdTdHlsZSgpLmZsb29kQ29sb3IoKSkK
LSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqZmlsdGVyKS5w
cmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVzOjpmbG9vZF9jb2xvckF0dHIp
OworICAgICAgICAgICAgZmlsdGVyUHJpbWl0aXZlRWxlbWVudCgpLnByaW1pdGl2ZUF0dHJpYnV0
ZUNoYW5nZWQoU1ZHTmFtZXM6OmZsb29kX2NvbG9yQXR0cik7CiAgICAgICAgIGlmIChuZXdTdHls
ZS5mbG9vZE9wYWNpdHkoKSAhPSBvbGRTdHlsZS0+c3ZnU3R5bGUoKS5mbG9vZE9wYWNpdHkoKSkK
LSAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqZmlsdGVyKS5w
cmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVzOjpmbG9vZF9vcGFjaXR5QXR0
cik7CisgICAgICAgICAgICBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkucHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZChTVkdOYW1lczo6Zmxvb2Rfb3BhY2l0eUF0dHIpOwogICAgIH0gZWxzZSBpZiAo
aXM8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PihmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkp
IHx8IGlzPFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1l
bnQoKSkpIHsKICAgICAgICAgaWYgKG5ld1N0eWxlLmxpZ2h0aW5nQ29sb3IoKSAhPSBvbGRTdHls
ZS0+c3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpCi0gICAgICAgICAgICBkb3duY2FzdDxSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcj4oKmZpbHRlcikucHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0
aGlzLCBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKTsKKyAgICAgICAgICAgIGZpbHRlclBy
aW1pdGl2ZUVsZW1lbnQoKS5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFNWR05hbWVzOjpsaWdo
dGluZ19jb2xvckF0dHIpOwogICAgIH0KIH0KIAordm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZTo6bWFya0ZpbHRlckZvckludmFsaWRhdGlvbihGaWx0ZXJFZmZlY3QmIGVmZmVj
dCwgRmlsdGVyQ2hhbmdlIGNoYW5nZSkKK3sKKyAgICBpZiAoY2hhbmdlID09IEZpbHRlckNoYW5n
ZTo6Tm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiBmaWx0ZXIgPSBw
YXJlbnQoKTsKKyAgICBpZiAoIWZpbHRlciB8fCAhZmlsdGVyLT5pc1NWR1Jlc291cmNlRmlsdGVy
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjaGFuZ2UgPT0gRmlsdGVyQ2hhbmdlOjpS
ZXBhaW50KQorICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4oKmZpbHRl
cikubWFya0ZpbHRlckZvclJlcGFpbnQoZWZmZWN0KTsKKyAgICBlbHNlCisgICAgICAgIGRvd25j
YXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqZmlsdGVyKS5tYXJrRmlsdGVyRm9yUmVidWls
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlLmgKaW5kZXggN2MxMmFiNWEyZTU5NTNmYTJiODFiZGUxZWQyMjlhYzM0Mjc1Y2Y1ZS4uOWFm
ZmJmNjkyODA1Njc2MGIyMWZhODY2ZjViOGRkZGFkNzc4OTZlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUuaApAQCAtNDMsMTMgKzQzLDggQEAgcHVibGljOgogCiAgICAgQVNDSUlMaXRl
cmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUiX3M7IH0KIAotICAgIGlubGluZSB2b2lkIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKQotICAgIHsKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiBmaWx0ZXIgPSBwYXJlbnQoKTsKLSAgICAgICAgaWYgKCFmaWx0ZXIg
fHwgIWZpbHRlci0+aXNTVkdSZXNvdXJjZUZpbHRlcigpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcio+KGZpbHRlciktPnBy
aW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQodGhpcywgYXR0cmlidXRlKTsKLSAgICB9CisgICAgdm9p
ZCBtYXJrRmlsdGVyRm9ySW52YWxpZGF0aW9uKEZpbHRlckVmZmVjdCYsIEZpbHRlckNoYW5nZSk7
CisgICAgCiBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGVsZW1lbnQoKSBjb25z
dCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDJiMzE3NDIwNGNkMmEzY2NhNjE0MzFmOGJiMDUwNmM2
ZDU2YTk0ZDIuLmM3MDM0YWM1ZTYxMzBlNGZkYzRjMjUyNzkyMzQ0ZWE4MGJlNGRhZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcApAQCAtNDc3LDggKzQ3Nyw3IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihU
ZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImCiAgICAgICAg
IC8vIENyZWF0aW5nIGEgcGxhY2Vob2xkZXIgZmlsdGVyIHdoaWNoIGlzIHBhc3NlZCB0byB0aGUg
YnVpbGRlci4KICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKICAgICAgICAgRmxvYXRTaXpl
IGR1bW15U2NhbGUoMSwgMSk7Ci0gICAgICAgIFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKLSAg
ICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0ZXJF
bGVtZW50KCksIGJ1aWxkZXIsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGR1bW15U2Nh
bGUsIEZpbHRlcjo6Q2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0LCBkdW1teVJlY3QsIGR1bW15UmVj
dCwgTnVsbEdyYXBoaWNzQ29udGV4dCgpKTsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNW
R0ZpbHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0ZXJFbGVtZW50KCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIGR1bW15U2NhbGUsIEZpbHRlcjo6Q2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0
LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgTnVsbEdyYXBoaWNzQ29udGV4dCgpKTsKICAgICAgICAg
aWYgKGR1bW15RmlsdGVyKSB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBp
bmRlbnRTY29wZSh0cyk7CiAgICAgICAgICAgICBkdW1teUZpbHRlci0+ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbih0cywgRmlsdGVyUmVwcmVzZW50YXRpb246OlRlc3RPdXRwdXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggZDhjZThmMTE2MGMwZDNhYTBkZDQx
ZDQ5NzhiYzUzOGM0Mzk3YTc3MC4uNjUyMDI0ZGEyMjk3MjliYmU4NTRhYzhmZTM2MWY3NmUxODg3
ZTg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC03MSwx
NCArNzEsMTUgQEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAot
Ym9vbCBTVkdGRUJsZW5kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK0ZpbHRlckNoYW5n
ZSBTVkdGRUJsZW5kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVj
dCYgZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBGRUJsZW5k
KiBibGVuZCA9IHN0YXRpY19jYXN0PEZFQmxlbmQqPihlZmZlY3QpOworICAgIGF1dG8mIGZlQmxl
bmQgPSBkb3duY2FzdDxGRUJsZW5kPihlZmZlY3QpOworCiAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjptb2RlQXR0cikKLSAgICAgICAgcmV0dXJuIGJsZW5kLT5zZXRCbGVuZE1vZGUobW9k
ZSgpKTsKKyAgICAgICAgcmV0dXJuIGZlQmxlbmQuc2V0QmxlbmRNb2RlKG1vZGUoKSk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEZp
bHRlckNoYW5nZTo6Tm9uZTsKIH0KIAogdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTk3LDcgKzk4LDcg
QEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEZFQmxlbmQ6OmNyZWF0ZShtb2Rl
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAppbmRleCA3MTU5OTNl
MmViMzY1ZTI0Y2JkZTg3NzJjNTI0NWE1NWY1YmRmNzg1Li5hODU4N2IxYjNkNjhhYmUyZWI0OTY5
NTgwNzdlMDdlNDAzMjc0NWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
aApAQCAtNjksOSArNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCksIGluMigpIH07IH0KLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVy
RWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVm
PFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhp
cykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
CmluZGV4IGVjOTgzYmRlMzhkNmJmYjMxMWZmODQxYWU4ZGRhYWE1OTYzNDdiMWUuLjJlNTY2ZmIz
ZjA3NTRlOWFkNmFkODU1YTYxYmFlYjcxY2UyNWE3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtNDgsNiArNDgsMTYgQEAgUmVmPFNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCitib29sIFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50Ojppc0ludmFsaWRWYWx1ZXNMZW5ndGgoKSBjb25zdAoreworICAgIGF1dG8gZmls
dGVyVHlwZSA9IHR5cGUoKTsKKyAgICBhdXRvIHNpemUgPSB2YWx1ZXMoKS5zaXplKCk7CisKKyAg
ICByZXR1cm4gKGZpbHRlclR5cGUgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCAgICAmJiBz
aXplICE9IDIwKQorICAgICAgICB8fCAoZmlsdGVyVHlwZSA9PSBGRUNPTE9STUFUUklYX1RZUEVf
SFVFUk9UQVRFICYmIHNpemUgIT0gMSkKKyAgICAgICAgfHwgKGZpbHRlclR5cGUgPT0gRkVDT0xP
Uk1BVFJJWF9UWVBFX1NBVFVSQVRFICAmJiBzaXplICE9IDEpOworfQorCiB2b2lkIFNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
dHlwZUF0dHIpIHsKQEAgLTcwLDE2ICs4MCwyNCBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdAog
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQogCi1ib29sIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQorRmlsdGVyQ2hhbmdlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogewotICAgIEZFQ29sb3JNYXRyaXgqIGNvbG9yTWF0cml4ID0gc3Rh
dGljX2Nhc3Q8RkVDb2xvck1hdHJpeCo+KGVmZmVjdCk7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp0eXBlQXR0cikKLSAgICAgICAgcmV0dXJuIGNvbG9yTWF0cml4LT5zZXRUeXBlKHR5
cGUoKSk7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKQotICAgICAg
ICByZXR1cm4gY29sb3JNYXRyaXgtPnNldFZhbHVlcyh2YWx1ZXMoKSk7CisgICAgYXV0byYgZmVD
b2xvck1hdHJpeCA9IGRvd25jYXN0PEZFQ29sb3JNYXRyaXg+KGVmZmVjdCk7CisKKyAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CisgICAgICAgIGlmIChpc0ludmFsaWRW
YWx1ZXNMZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6OlJlYnVpbGQ7
CisgICAgICAgIHJldHVybiBmZUNvbG9yTWF0cml4LnNldFR5cGUodHlwZSgpKTsKKyAgICB9CisK
KyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpIHsKKyAgICAgICAgaWYg
KGlzSW52YWxpZFZhbHVlc0xlbmd0aCgpKQorICAgICAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5n
ZTo6UmVidWlsZDsKKyAgICAgICAgcmV0dXJuIGZlQ29sb3JNYXRyaXguc2V0VmFsdWVzKHZhbHVl
cygpKTsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsKIH0KIAogdm9pZCBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKQEAgLTk4LDcgKzExNiw3IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RW
ZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdAogewogICAgIFZlY3RvcjxmbG9hdD4gZmlsdGVyVmFsdWVzOwogICAgIENvbG9yTWF0
cml4VHlwZSBmaWx0ZXJUeXBlID0gdHlwZSgpOwpAQCAtMTIzLDExICsxNDEsNyBAQCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0
IFNWR0ZpbHRlciYsIGNvbgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewotICAgICAgICB1bnNpZ25lZCBzaXplID0gdmFsdWVzKCkuc2l6ZSgpOwotCi0gICAgICAg
IGlmICgoZmlsdGVyVHlwZSA9PSBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYICYmIHNpemUgIT0g
MjApCi0gICAgICAgICAgICB8fCAoZmlsdGVyVHlwZSA9PSBGRUNPTE9STUFUUklYX1RZUEVfSFVF
Uk9UQVRFICYmIHNpemUgIT0gMSkKLSAgICAgICAgICAgIHx8IChmaWx0ZXJUeXBlID09IEZFQ09M
T1JNQVRSSVhfVFlQRV9TQVRVUkFURSAmJiBzaXplICE9IDEpKQorICAgICAgICBpZiAoaXNJbnZh
bGlkVmFsdWVzTGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAg
ICBmaWx0ZXJWYWx1ZXMgPSB2YWx1ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmgKaW5kZXggMWZmNTQ1MzlkMDgyNzIzMzA0ODFkZDIzYTgxZGQxYzE2
OGM0YjUzYi4uMzFjOWRjMjRjNjRlYzdjYjg5YWUwZjI4ODlmMDhmZmMzYjNmYjAwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKQEAgLTgyLDEyICs4
MiwxNCBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnk8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQogCisgICAgYm9vbCBpc0ludmFsaWRWYWx1ZXNMZW5ndGgoKSBjb25zdDsKKwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVy
RWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5n
ZSBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1
dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4
dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRmlsdGVy
RWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBS
ZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0
aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5jcHAKaW5kZXggNTE3MTk2Yjk4ZGIyZWFiNDRiNzNmYzdlNTExOGQzZGQ1ZTJh
ZmRhYS4uMjNhNmY4ZjdmNzc2YTQ3ZDE0MzAwNTE2YmE1MTAzNmRlMWFhMTJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3Bw
CkBAIC02Miw3ICs2MiwxOCBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjbwogICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit2b2lkIFNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQoreworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBzZXRT
VkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKK30KKworUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdAogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gcmVkOwogICAgIENvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb24gZ3JlZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCmluZGV4IGE0NjgyNjQyMmZiZWVhZTI1YzRiOWEw
Y2UwMzBjYWNjMDY4ODhkOWMuLjc5M2UzZmZiMDg3ZDRkNmU5MjA4ZTJiNTg0NTcxNDYxYjI5OWQ5
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5oCkBAIC00MCwxMSArNDAsMTEgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0
eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNv
bnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NzAyIC0gcHJvdmlkZSBzdmdBdHRyaWJ1
dGUgaW1wbGVtZW50YXRpb24gZm9yIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LgogICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJp
bmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVj
dElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9Ci0gICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25D
b250ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVG
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9Owog
ICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3Jl
YXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCmluZGV4IGEyOTI0YjIxOTZkZmIyNTZlNjRhNWUwNjY4ODExNDBmY2MwYjE2MDMuLjk1NmE5
Njk3NWE2N2RiMDI2YTcwMzEwOTVmNzg5OGYzYmU5OWFiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC05NCw0MiArOTQsNDEgQEAgdm9pZCBT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b20KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotYm9vbCBTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCitGaWx0ZXJDaGFuZ2UgU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBlZmZlY3Qs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIEZFQ29tcG9zaXRlKiBjb21w
b3NpdGUgPSBzdGF0aWNfY2FzdDxGRUNvbXBvc2l0ZSo+KGVmZmVjdCk7CisgICAgYXV0byYgZmVD
b21wb3NpdGUgPSBkb3duY2FzdDxGRUNvbXBvc2l0ZT4oZWZmZWN0KTsKICAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikKLSAgICAgICAgcmV0dXJuIGNvbXBvc2l0ZS0+
c2V0T3BlcmF0aW9uKHN2Z09wZXJhdG9yKCkpOworICAgICAgICByZXR1cm4gZmVDb21wb3NpdGUu
c2V0T3BlcmF0aW9uKHN2Z09wZXJhdG9yKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6azFBdHRyKQotICAgICAgICByZXR1cm4gY29tcG9zaXRlLT5zZXRLMShrMSgpKTsKKyAgICAg
ICAgcmV0dXJuIGZlQ29tcG9zaXRlLnNldEsxKGsxKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6azJBdHRyKQotICAgICAgICByZXR1cm4gY29tcG9zaXRlLT5zZXRLMihrMigpKTsK
KyAgICAgICAgcmV0dXJuIGZlQ29tcG9zaXRlLnNldEsyKGsyKCkpOwogICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6azNBdHRyKQotICAgICAgICByZXR1cm4gY29tcG9zaXRlLT5zZXRLMyhr
MygpKTsKKyAgICAgICAgcmV0dXJuIGZlQ29tcG9zaXRlLnNldEszKGszKCkpOwogICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6azRBdHRyKQotICAgICAgICByZXR1cm4gY29tcG9zaXRlLT5z
ZXRLNChrNCgpKTsKKyAgICAgICAgcmV0dXJuIGZlQ29tcG9zaXRlLnNldEs0KGs0KCkpOwogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBG
aWx0ZXJDaGFuZ2U6Ok5vbmU7CiB9CiAKIAogdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmsyQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azNBdHRyIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjprNEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmluMkF0dHIpCi0gICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVE
aXJ0eSgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6azFBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprMkF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmszQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azRBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpOwotICAgICAgICAgICAgcHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
OworICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKyAgICB9CisK
KyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW4yQXR0cikgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKICAgICB9CiAKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25z
dCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICByZXR1cm4gRkVDb21wb3NpdGU6OmNyZWF0ZShz
dmdPcGVyYXRvcigpLCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAppbmRleCA1YTY4MzM5Y2MzMGEyYzJjMzg5OWM2
ZWMzMzA0NDg4YTc5MWFiY2EwLi5mYjYxNWEyZGEwZTNhOTc3ZjY5MGViMWMzYWYwODQ4MTNkOTkx
M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCkBAIC0x
MDgsOSArMTA4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIGJv
b2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKKyAgICBGaWx0ZXJDaGFuZ2Ugc2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBW
ZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB7IGluMSgpLCBpbjIoKSB9OyB9Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0
cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBl
OTQzNWJlZjJjNzZkNDZiNWUwOWYwYTk5YTdiZGI1YzkwY2Q0MzdiLi5lY2Q1Yjg2YzNjMDRjMTUw
N2I3M2NiZDg2NWFmOTdlNDMzN2ZiODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTEzNCwyNiArMTM0LDI3IEBAIHZvaWQg
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLWJvb2wgU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVm
ZmVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCitGaWx0ZXJDaGFuZ2UgU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QmIGVmZmVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgRkVDb252
b2x2ZU1hdHJpeCogY29udm9sdmVNYXRyaXggPSBzdGF0aWNfY2FzdDxGRUNvbnZvbHZlTWF0cml4
Kj4oZWZmZWN0KTsKKyAgICBhdXRvJiBmZUNvbnZvbHZlTWF0cml4ID0gZG93bmNhc3Q8RkVDb252
b2x2ZU1hdHJpeD4oZWZmZWN0KTsKKwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRn
ZU1vZGVBdHRyKQotICAgICAgICByZXR1cm4gY29udm9sdmVNYXRyaXgtPnNldEVkZ2VNb2RlKGVk
Z2VNb2RlKCkpOworICAgICAgICByZXR1cm4gZmVDb252b2x2ZU1hdHJpeC5zZXRFZGdlTW9kZShl
ZGdlTW9kZSgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpdmlzb3JBdHRyKQot
ICAgICAgICByZXR1cm4gY29udm9sdmVNYXRyaXgtPnNldERpdmlzb3IoZGl2aXNvcigpKTsKKyAg
ICAgICAgcmV0dXJuIGZlQ29udm9sdmVNYXRyaXguc2V0RGl2aXNvcihkaXZpc29yKCkpOwogICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Ymlhc0F0dHIpCi0gICAgICAgIHJldHVybiBjb252
b2x2ZU1hdHJpeC0+c2V0QmlhcyhiaWFzKCkpOworICAgICAgICByZXR1cm4gZmVDb252b2x2ZU1h
dHJpeC5zZXRCaWFzKGJpYXMoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJn
ZXRYQXR0cikKLSAgICAgICAgcmV0dXJuIGNvbnZvbHZlTWF0cml4LT5zZXRUYXJnZXRPZmZzZXQo
SW50UG9pbnQodGFyZ2V0WCgpLCB0YXJnZXRZKCkpKTsKKyAgICAgICAgcmV0dXJuIGZlQ29udm9s
dmVNYXRyaXguc2V0VGFyZ2V0T2Zmc2V0KEludFBvaW50KHRhcmdldFgoKSwgdGFyZ2V0WSgpKSk7
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRZQXR0cikKLSAgICAgICAgcmV0
dXJuIGNvbnZvbHZlTWF0cml4LT5zZXRUYXJnZXRPZmZzZXQoSW50UG9pbnQodGFyZ2V0WCgpLCB0
YXJnZXRZKCkpKTsKKyAgICAgICAgcmV0dXJuIGZlQ29udm9sdmVNYXRyaXguc2V0VGFyZ2V0T2Zm
c2V0KEludFBvaW50KHRhcmdldFgoKSwgdGFyZ2V0WSgpKSk7CiAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikKLSAgICAgICAgcmV0dXJuIGNvbnZvbHZl
TWF0cml4LT5zZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9pbnQoa2VybmVsVW5pdExlbmd0aFgo
KSwga2VybmVsVW5pdExlbmd0aFkoKSkpOworICAgICAgICByZXR1cm4gZmVDb252b2x2ZU1hdHJp
eC5zZXRLZXJuZWxVbml0TGVuZ3RoKEZsb2F0UG9pbnQoa2VybmVsVW5pdExlbmd0aFgoKSwga2Vy
bmVsVW5pdExlbmd0aFkoKSkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2Vy
dmVBbHBoYUF0dHIpCi0gICAgICAgIHJldHVybiBjb252b2x2ZU1hdHJpeC0+c2V0UHJlc2VydmVB
bHBoYShwcmVzZXJ2ZUFscGhhKCkpOworICAgICAgICByZXR1cm4gZmVDb252b2x2ZU1hdHJpeC5z
ZXRQcmVzZXJ2ZUFscGhhKHByZXNlcnZlQWxwaGEoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6Tm9uZTsK
IH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0T3JkZXIoZmxvYXQgeCwg
ZmxvYXQgeSkKQEAgLTE4Nyw3ICsxODgsNyBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYQogICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QoY29u
c3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QKIHsKICAgICBpbnQgb3JkZXJYVmFsdWUgPSBvcmRlclgoKTsKICAgICBp
bnQgb3JkZXJZVmFsdWUgPSBvcmRlclkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmgKaW5kZXggOWFkMWU0YzM4YWU1N2RiZDhlZjNmMmNkNGZi
NmU2OWRkOWQyNDJiYi4uNmJkY2M0ZjZkOWZhODdlMTg3YThkYjZiNTM1YmEyZmFmNWEzN2EzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmgK
QEAgLTEwMiw5ICsxMDIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0g
ICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZp
bHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
ZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJp
bmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA3
ZWMwNWRmMGMyNWQwYTcxYWY2NzRiNzkwNDg0YjA4ZGFiN2EwMzAzLi5hZjg4ZWZiYTliMGQ0NjJi
ZTc0MTcwMjUxZjQ1YjA4MDExOGI1MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtNzksMjIgKzc5LDIyIEBAIHZvaWQg
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLWJvb2wgU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBl
ZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorRmlsdGVyQ2hhbmdlIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCYgZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBGRURp
ZmZ1c2VMaWdodGluZyogZGlmZnVzZUxpZ2h0aW5nID0gc3RhdGljX2Nhc3Q8RkVEaWZmdXNlTGln
aHRpbmcqPihlZmZlY3QpOworICAgIGF1dG8mIGZlRGlmZnVzZUxpZ2h0aW5nID0gZG93bmNhc3Q8
RkVEaWZmdXNlTGlnaHRpbmc+KGVmZmVjdCk7CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgewogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlcmVyKTsKICAgICAgICAg
Q29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRl
cihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7Ci0gICAgICAg
IHJldHVybiBkaWZmdXNlTGlnaHRpbmctPnNldExpZ2h0aW5nQ29sb3IoY29sb3IpOworICAgICAg
ICByZXR1cm4gZmVEaWZmdXNlTGlnaHRpbmcuc2V0TGlnaHRpbmdDb2xvcihjb2xvcik7CiAgICAg
fQogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cikKLSAgICAg
ICAgcmV0dXJuIGRpZmZ1c2VMaWdodGluZy0+c2V0U3VyZmFjZVNjYWxlKHN1cmZhY2VTY2FsZSgp
KTsKKyAgICAgICAgcmV0dXJuIGZlRGlmZnVzZUxpZ2h0aW5nLnNldFN1cmZhY2VTY2FsZShzdXJm
YWNlU2NhbGUoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3Rh
bnRBdHRyKQotICAgICAgICByZXR1cm4gZGlmZnVzZUxpZ2h0aW5nLT5zZXREaWZmdXNlQ29uc3Rh
bnQoZGlmZnVzZUNvbnN0YW50KCkpOworICAgICAgICByZXR1cm4gZmVEaWZmdXNlTGlnaHRpbmcu
c2V0RGlmZnVzZUNvbnN0YW50KGRpZmZ1c2VDb25zdGFudCgpKTsKIAotICAgIGF1dG8mIGxpZ2h0
U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSY+KGRpZmZ1c2VMaWdodGluZy0+bGlnaHRT
b3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNl
Jj4oZmVEaWZmdXNlTGlnaHRpbmcubGlnaHRTb3VyY2UoKSk7CiAgICAgY29uc3QgU1ZHRkVMaWdo
dEVsZW1lbnQqIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVt
ZW50KHRoaXMpOwogICAgIEFTU0VSVChsaWdodEVsZW1lbnQpOwogCkBAIC0xMjAsNyArMTIwLDcg
QEAgYm9vbCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJp
YnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwKICAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLnNl
dExpbWl0aW5nQ29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGltaXRpbmdDb25lQW5nbGUoKSk7CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IEZpbHRlckNoYW5nZTo6Tm9uZTsKIH0KIAogdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBA
IC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmxpZ2h0
RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdodEUKICAgICBwcmltaXRpdmVB
dHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiBm
aWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6
OmNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVy
RWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBSZWZQ
dHIgbGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhp
cyk7CiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggNTc1MDk2NzdlZDg0ZWYzM2JkYjc5YjBm
NGU0NWViZWY5MzhiMzMwMi4uZDlhZjc0NWNmOTk4NTgwMjRkNjA1ZjBlMDA4ZTE4ZDI5YTQ1ZjRi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuaApAQCAtNTcsOSArNTcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
Ci0gICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRT
dHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRl
eCBhMTViYTRiM2UxZTE0N2ZmNGUyMWM4ZGJhYmE2ZmJhZDA4OGE1MzNkLi5jMjU3MDhiMDk0NmMx
YmU2ZDEwOTkxMGM2YTQzY2YwNzRkNzE0ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtODMsMTggKzgzLDE4IEBAIHZv
aWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLWJvb2wgU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorRmlsdGVyQ2hhbmdlIFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCYgZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBG
RURpc3BsYWNlbWVudE1hcCogZGlzcGxhY2VtZW50TWFwID0gc3RhdGljX2Nhc3Q8RkVEaXNwbGFj
ZW1lbnRNYXAqPihlZmZlY3QpOworICAgIGF1dG8mIGZlRGlzcGxhY2VtZW50TWFwID0gZG93bmNh
c3Q8RkVEaXNwbGFjZW1lbnRNYXA+KGVmZmVjdCk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0cikKLSAgICAgICAgcmV0dXJuIGRpc3BsYWNlbWVudE1h
cC0+c2V0WENoYW5uZWxTZWxlY3Rvcih4Q2hhbm5lbFNlbGVjdG9yKCkpOworICAgICAgICByZXR1
cm4gZmVEaXNwbGFjZW1lbnRNYXAuc2V0WENoYW5uZWxTZWxlY3Rvcih4Q2hhbm5lbFNlbGVjdG9y
KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIp
Ci0gICAgICAgIHJldHVybiBkaXNwbGFjZW1lbnRNYXAtPnNldFlDaGFubmVsU2VsZWN0b3IoeUNo
YW5uZWxTZWxlY3RvcigpKTsKKyAgICAgICAgcmV0dXJuIGZlRGlzcGxhY2VtZW50TWFwLnNldFlD
aGFubmVsU2VsZWN0b3IoeUNoYW5uZWxTZWxlY3RvcigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnNjYWxlQXR0cikKLSAgICAgICAgcmV0dXJuIGRpc3BsYWNlbWVudE1hcC0+c2V0
U2NhbGUoc2NhbGUoKSk7CisgICAgICAgIHJldHVybiBmZURpc3BsYWNlbWVudE1hcC5zZXRTY2Fs
ZShzY2FsZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogfQogCiB2b2lkIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTgog
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVj
dChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdAogewogICAgIHJldHVybiBGRURpc3BsYWNlbWVudE1hcDo6Y3Jl
YXRlKHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5uZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaApp
bmRleCAxYTZiNTE5NDQ2MjUxODBhNzYyMjk4MWYxOTUyYWE3YmI3YzM0OGFiLi43N2JiZjlkZDI3
ODM4ZTc5OWEzY2U2NmJlMTBhYTdiZjExMzNiNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCkBAIC05MCw5ICs5MCw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBib29sIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3Zl
cnJpZGU7CisgICAgRmlsdGVyQ2hhbmdlIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QmLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPEF0b21T
dHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
eyBpbjEoKSwgaW4yKCkgfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVj
dChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRp
b25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4x
IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGQxZTYxODQ4YWFjMTgyNmY0MTY3
YjVmMTExNWJmMTVkOWZhZGNiOTIuLjhhM2I3ZTNkYjk5NTA4MDRiODc0MjExY2Y2Nzg1ZDhiZTgz
Njg4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5j
cHAKQEAgLTg3LDcgKzg3LDEzIEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAKIHZvaWQgU1ZH
RkVEcm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERldmlh
dGlvbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6ZHlBdHRyKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOworICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwogICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAg
ICAgICByZXR1cm47CkBAIC05Niw2ICsxMDIsMzggQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CiB9CiAKK0ZpbHRlckNoYW5nZSBTVkdGRURyb3BTaGFkb3dFbGVtZW50
OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIGF1dG8mIGZlRHJvcFNoYWRvdyA9IGRvd25j
YXN0PEZFRHJvcFNoYWRvdz4oZWZmZWN0KTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6c3RkRGV2aWF0aW9uQXR0cikgeworICAgICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8
fCBzdGREZXZpYXRpb25ZKCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIEZpbHRlckNoYW5nZTo6
UmVidWlsZDsKKworICAgICAgICBhdXRvIHN0ZERldmlhdGlvblhDaGFuZ2VkID0gZmVEcm9wU2hh
ZG93LnNldFN0ZERldmlhdGlvblgoc3RkRGV2aWF0aW9uWCgpKTsKKyAgICAgICAgYXV0byBzdGRE
ZXZpYXRpb25ZQ2hhbmdlZCA9IGZlRHJvcFNoYWRvdy5zZXRTdGREZXZpYXRpb25ZKHN0ZERldmlh
dGlvblkoKSk7CisgICAgICAgIHJldHVybiBzdGREZXZpYXRpb25YQ2hhbmdlZCAhPSBGaWx0ZXJD
aGFuZ2U6Ok5vbmUgPyBzdGREZXZpYXRpb25YQ2hhbmdlZCA6IHN0ZERldmlhdGlvbllDaGFuZ2Vk
OworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyKQorICAgICAg
ICByZXR1cm4gZmVEcm9wU2hhZG93LnNldER4KGR4KCkpOworICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6ZHlBdHRyKQorICAgICAgICByZXR1cm4gZmVEcm9wU2hhZG93LnNldER5KGR5KCkp
OworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAg
QVNTRVJUKHJlbmRlcmVyKTsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJl
ci0+c3R5bGUoKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Zmxvb2RfY29sb3JB
dHRyKQorICAgICAgICByZXR1cm4gZmVEcm9wU2hhZG93LnNldFNoYWRvd0NvbG9yKHN0eWxlLnN2
Z1N0eWxlKCkuZmxvb2RDb2xvcigpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmZs
b29kX29wYWNpdHlBdHRyKQorICAgICAgICByZXR1cm4gZmVEcm9wU2hhZG93LnNldFNoYWRvd09w
YWNpdHkoc3R5bGUuc3ZnU3R5bGUoKS5mbG9vZE9wYWNpdHkoKSk7CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOworfQorCisKIEludE91
dHNldHMgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6b3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRh
cmdldEJvdW5kaW5nQm94LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRz
KSBjb25zdAogewogICAgIGF1dG8gb2Zmc2V0ID0gU1ZHRmlsdGVyOjpjYWxjdWxhdGVSZXNvbHZl
ZFNpemUoeyBkeCgpLCBkeSgpIH0sIHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVVbml0cyk7
CkBAIC0xMDMsNyArMTQxLDcgQEAgSW50T3V0c2V0cyBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpv
dXRzZXRzKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFMKICAgICByZXR1cm4g
RkVEcm9wU2hhZG93OjpjYWxjdWxhdGVPdXRzZXRzKG9mZnNldCwgc3RkRGV2aWF0aW9uKTsKIH0K
IAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmls
dGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
cmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKaW5kZXgg
MzNjNmRiZjEyY2U4Y2RhZmQ3OGQ2YTU4NjViZmY1Y2M4YWIzNzQzZS4uMzNiY2YyM2UxODA1MGE2
NTM3ZmIwNzllOTVlZTcyMGJiMTk0ZDJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
cm9wU2hhZG93RWxlbWVudC5oCkBAIC01Myw5ICs1MywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogCisgICAgRmlsdGVyQ2hhbmdlIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QmLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgVmVj
dG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4geyBpbjEoKSB9OyB9CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0
aXZlVW5pdHMpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRl
ckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVz
dGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKaW5kZXggOTUyMTMzMzM3Y2FlNzAwYzZmN2Q5MjQw
ZTAyMWVkMGY5ZmZhNTQxMS4uMGJjODFiZGRiZDQyMGFjODA5ZGQzMTAzMTYyYWRmYTM3YWVkOTk5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCkBAIC00MywyMyAr
NDMsMjMgQEAgUmVmPFNWR0ZFRmxvb2RFbGVtZW50PiBTVkdGRUZsb29kRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTVkdGRUZsb29kRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIFNWR0ZF
Rmxvb2RFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZl
Y3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorRmlsdGVyQ2hhbmdlIFNWR0ZFRmxv
b2RFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBlZmZlY3Qs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgRkVGbG9vZCog
Zmxvb2QgPSBzdGF0aWNfY2FzdDxGRUZsb29kKj4oZWZmZWN0KTsKLQorICAgIAorICAgIGF1dG8m
IGZlRmxvb2QgPSBkb3duY2FzdDxGRUZsb29kPihlZmZlY3QpOwogICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6Zmxvb2RfY29sb3JBdHRyKQotICAgICAgICByZXR1cm4gZmxvb2QtPnNldEZs
b29kQ29sb3Ioc3R5bGUuc3ZnU3R5bGUoKS5mbG9vZENvbG9yKCkpOworICAgICAgICByZXR1cm4g
ZmVGbG9vZC5zZXRGbG9vZENvbG9yKHN0eWxlLnN2Z1N0eWxlKCkuZmxvb2RDb2xvcigpKTsKICAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmZsb29kX29wYWNpdHlBdHRyKQotICAgICAgICBy
ZXR1cm4gZmxvb2QtPnNldEZsb29kT3BhY2l0eShzdHlsZS5zdmdTdHlsZSgpLmZsb29kT3BhY2l0
eSgpKTsKKyAgICAgICAgcmV0dXJuIGZlRmxvb2Quc2V0Rmxvb2RPcGFjaXR5KHN0eWxlLnN2Z1N0
eWxlKCkuZmxvb2RPcGFjaXR5KCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiB9CiAKLVJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRmxvb2RFbGVtZW50OjpjcmVhdGVG
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAppbmRleCA5YzQ4ZGEwZWIwN2JhY2I0ODVlYmEwNGE4M2Mw
NWNlMzYwMTJlZjIyLi4wMGY2NjMyMzQ5NzIwNjI2ZTYyMTI1MmFkOGQ5ZTg2NjU3ZDcyYjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaApAQCAtMzYsOCArMzYsOCBAQCBw
cml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHRkVGbG9vZEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgYm9vbCBz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
RmlsdGVyQ2hhbmdlIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmLCBjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3Jl
YXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCmluZGV4IGNiMTkwYWQzNTQxZDIyY2ZmMGNlN2NjYmY1OGUzNmNjMGZiNWM3M2UuLjM4YjE1
OWVhZmFjNDI0NzE3YThjMDNkMzQ1ZjE2ZmFiYWJkZjY0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBAIC04NSw3ICs4NSwxMyBAQCB2
b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQQogCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAg
ICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cikgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmluQXR0cikgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtOTQsMTMgKzEwMCwzMyBAQCB2b2lkIFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKK0ZpbHRlckNoYW5nZSBTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmIGVm
ZmVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgYXV0byYgZmVHYXVz
c2lhbkJsdXIgPSBkb3duY2FzdDxGRUdhdXNzaWFuQmx1cj4oZWZmZWN0KTsKKworICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgeworICAgICAgICBpZiAoc3Rk
RGV2aWF0aW9uWCgpIDwgMCB8fCBzdGREZXZpYXRpb25ZKCkgPCAwKQorICAgICAgICAgICAgcmV0
dXJuIEZpbHRlckNoYW5nZTo6UmVidWlsZDsKKyAgICAgICAgCisgICAgICAgIGF1dG8gc3RkRGV2
aWF0aW9uWENoYW5nZWQgPSBmZUdhdXNzaWFuQmx1ci5zZXRTdGREZXZpYXRpb25YKHN0ZERldmlh
dGlvblgoKSk7CisgICAgICAgIGF1dG8gc3RkRGV2aWF0aW9uWUNoYW5nZWQgPSBmZUdhdXNzaWFu
Qmx1ci5zZXRTdGREZXZpYXRpb25ZKHN0ZERldmlhdGlvblkoKSk7CisgICAgICAgIHJldHVybiBz
dGREZXZpYXRpb25YQ2hhbmdlZCAhPSBGaWx0ZXJDaGFuZ2U6Ok5vbmUgPyBzdGREZXZpYXRpb25Y
Q2hhbmdlZCA6IHN0ZERldmlhdGlvbllDaGFuZ2VkOworICAgIH0KKworICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRyKQorICAgICAgICByZXR1cm4gZmVHYXVzc2lhbkJs
dXIuc2V0RWRnZU1vZGUoZWRnZU1vZGUoKSk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOworfQorCiBJbnRPdXRzZXRzIFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6b3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5n
Qm94LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKSBjb25zdAogewog
ICAgIGF1dG8gc3RkRGV2aWF0aW9uID0gU1ZHRmlsdGVyOjpjYWxjdWxhdGVSZXNvbHZlZFNpemUo
eyBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSB9LCB0YXJnZXRCb3VuZGluZ0JveCwg
cHJpbWl0aXZlVW5pdHMpOwogICAgIHJldHVybiBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0
c2V0cyhzdGREZXZpYXRpb24pOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3Qo
Y29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKIHsKICAgICBpZiAoc3RkRGV2aWF0aW9uWCgpIDwgMCB8fCBzdGRE
ZXZpYXRpb25ZKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAppbmRleCA2MGM1ZDFhNmNkNjU4NDY1
OTI5ZmI3YWY1NDZlZTdkMzlmMGZlNTNhLi44ZTc0YzM2NGIyN2Y4ZTMxZGM3NTZkYTNiNzE1ODAy
YTIxZDEwYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5oCkBAIC01Myw5ICs1MywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCisgICAgRmlsdGVyQ2hhbmdlIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QmLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPEF0b21TdHJp
bmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBp
bjEoKSB9OyB9CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpIGNv
bnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25z
dCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZH
QW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHAKaW5kZXggNGQ3MzIyOTRmZDU4MjNjNjlkZjQwOGFlMTZlYWM5NDI3YmM2
Yzk1Yi4uNTAwM2Y1ZTNlODM3ZTA5YzgyZjA3ZTNjN2Y4MzY1YjhjNjQwYWRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xMzcsNiArMTM3LDcgQEAgdm9p
ZCBTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKKyAgICAgICAgbWFya0ZpbHRl
ckZvckludmFsaWRhdGlvbihGaWx0ZXJDaGFuZ2U6OlJlYnVpbGQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yMTAsNyArMjExLDcgQEAgc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZm
ZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmUKICAg
ICByZXR1cm4geyBpbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0IH07CiB9CiAKLVJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwg
Y29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5h
dGlvbkNvbnRleHQpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVu
dDo6Y3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVj
dFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25z
dAogewogICAgIGlmIChtX2NhY2hlZEltYWdlKSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBtX2Nh
Y2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuaAppbmRleCBhNWY1YjA2YTQ0NTlhYzJjOTAxNmY3Y2Y2MzIxMzIz
MDU5MTI2NjZjLi5jMGU2YWE0ZjUyZTRiMWM4ODgxNWQyMWJlNzAyODEyNGNhMmUzZWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2
YXRlOgogCiAgICAgc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IGlt
YWdlQnVmZmVyRm9yRWZmZWN0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KSBjb25zdDsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25z
dCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMo
KTsKICAgICB2b2lkIHJlcXVlc3RJbWFnZVJlc291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA3MjIyYjIzM2M4YTIwNjFkOWY3N2U1YzEyYTFiMGUy
NzA4YWI5OGUxLi45MWQ0MGUzNWE5MjUyODIwYTBhMDQyOWU0NmYyY2E5NmE4ZDFmZWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTQ0LDYgKzQ0LDEzIEBA
IFJlZjxTVkdGRU1lcmdlRWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVN
ZXJnZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAordm9pZCBTVkdGRU1lcmdlRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCit7CisgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlKTsKKyAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICBt
YXJrRmlsdGVyRm9ySW52YWxpZGF0aW9uKEZpbHRlckNoYW5nZTo6UmVidWlsZCk7Cit9CisKIFZl
Y3RvcjxBdG9tU3RyaW5nPiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0SW5wdXRzTmFt
ZXMoKSBjb25zdAogewogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBpbnB1dHNOYW1lczsKQEAgLTUy
LDcgKzU5LDcgQEAgVmVjdG9yPEF0b21TdHJpbmc+IFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0ZXJF
ZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIGlucHV0c05hbWVzOwogfQogCi1S
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0
IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRzLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1l
bnQ6OmNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZl
Y3RWZWN0b3ImIGlucHV0cywgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBy
ZXR1cm4gRkVNZXJnZTo6Y3JlYXRlKGlucHV0cy5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuaAppbmRleCA3NThjY2Q2YzJlZjg0Zjk3NDY2NzU1YTA3Mjc0NTY5
MmE3MmU4NjM2Li5hMmMwNDQwMjRlYzQxYjg2N2JmYzUzZjhkYmUzNGZhMmMxNzc5NTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaApAQCAtMzYsOCArMzYsMTAgQEAgcHJp
dmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lz
dHJ5PFNWR0ZFTWVyZ2VFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAorICAgIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisKICAgICBWZWN0b3I8
QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29u
c3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlv
bkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0
ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmlu
ZGV4IDYxMDgyYTQ5ODM5MzFkOGFiNzAzODUzNDRlNjI3YzNjYjU3NTI3NDEuLjg3NjU4NjdjMDEx
MzUyZjA1NjZlMTA0YTZlYjAwNTA3MjJkMDY2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTgwLDM5ICs4MCw0MCBAQCB2b2lkIFNWR0ZF
TW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0bwogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1ib29sIFNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCitGaWx0ZXJDaGFuZ2UgU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYgZWZmZWN0LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBGRU1vcnBob2xvZ3kqIG1vcnBo
b2xvZ3kgPSBzdGF0aWNfY2FzdDxGRU1vcnBob2xvZ3kqPihlZmZlY3QpOworICAgIGF1dG8mIGZl
TW9ycGhvbG9neSA9IGRvd25jYXN0PEZFTW9ycGhvbG9neT4oZWZmZWN0KTsKICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikKLSAgICAgICAgcmV0dXJuIG1vcnBob2xv
Z3ktPnNldE1vcnBob2xvZ3lPcGVyYXRvcihzdmdPcGVyYXRvcigpKTsKKyAgICAgICAgcmV0dXJu
IGZlTW9ycGhvbG9neS5zZXRNb3JwaG9sb2d5T3BlcmF0b3Ioc3ZnT3BlcmF0b3IoKSk7CiAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRpdXNBdHRyKSB7CiAgICAgICAgIC8vIEJvdGgg
c2V0UmFkaXVzIGZ1bmN0aW9ucyBzaG91bGQgYmUgZXZhbHVhdGVkIHNlcGFyYXRlbHkuCi0gICAg
ICAgIGJvb2wgaXNSYWRpdXNYQ2hhbmdlZCA9IG1vcnBob2xvZ3ktPnNldFJhZGl1c1gocmFkaXVz
WCgpKTsKLSAgICAgICAgYm9vbCBpc1JhZGl1c1lDaGFuZ2VkID0gbW9ycGhvbG9neS0+c2V0UmFk
aXVzWShyYWRpdXNZKCkpOwotICAgICAgICByZXR1cm4gaXNSYWRpdXNYQ2hhbmdlZCB8fCBpc1Jh
ZGl1c1lDaGFuZ2VkOworICAgICAgICBhdXRvIHJhZGl1c1hDaGFuZ2VkID0gZmVNb3JwaG9sb2d5
LnNldFJhZGl1c1gocmFkaXVzWCgpKTsKKyAgICAgICAgYXV0byByYWRpdXNZQ2hhbmdlZCA9IGZl
TW9ycGhvbG9neS5zZXRSYWRpdXNZKHJhZGl1c1koKSk7CisgICAgICAgIHJldHVybiByYWRpdXNY
Q2hhbmdlZCAhPSBGaWx0ZXJDaGFuZ2U6Ok5vbmUgPyByYWRpdXNYQ2hhbmdlZCA6IHJhZGl1c1lD
aGFuZ2VkOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOwogfQogCiB2b2lkIFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiB7Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJhZGl1c0F0dHIpIHsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyKQotICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmFk
aXVzQXR0cik7Ci0gICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKLSAgICAgICAgfQorICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6aW5BdHRyKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojpj
cmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVj
dG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBpZiAocmFkaXVzWCgp
IDwgMCB8fCByYWRpdXNZKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCmluZGV4IDEzNjg1MzU3ZmY0ZmYz
Y2QxMDcxMzQ3NjQ5NmI0ZTEwZDMyYmVhNTcuLmQ0OWVhYTg5NWUxNDYwNWM1ZGUzMGU5Nzk2ZDc0
YTU5ODZmZDJhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuaApAQCAtODAsOSArODAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
Ci0gICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRT
dHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCBjYjk0MWQ0NTE0MjRlMDBj
YjQ2NzJjYWZmYjIwOWIzMmYwODY4ZTRkLi4wNjE2ZDUyZDlhNGJlMDBkZjUwZjU0Yzg1Y2VlMzQ5
ZjBhMzhlMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApA
QCAtNzAsNyArNzAsMTMgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHIKIAogdm9pZCBTVkdGRU9m
ZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0cikgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzksMTMgKzg1LDI2IEBAIHZvaWQgU1ZHRkVPZmZzZXRF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKK0ZpbHRlckNoYW5nZSBTVkdGRU9mZnNldEVsZW1lbnQ6
OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmIGVmZmVjdCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgYXV0byYgb2Zmc2V0ID0gZG93bmNhc3Q8RkVP
ZmZzZXQ+KGVmZmVjdCk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikK
KyAgICAgICAgcmV0dXJuIG9mZnNldC5zZXREeChkeCgpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmR5QXR0cikKKyAgICAgICAgcmV0dXJuIG9mZnNldC5zZXREeShkeSgpKTsKKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7
Cit9CisKIEludE91dHNldHMgU1ZHRkVPZmZzZXRFbGVtZW50OjpvdXRzZXRzKGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0
aXZlVW5pdHMpIGNvbnN0CiB7CiAgICAgYXV0byBvZmZzZXQgPSBTVkdGaWx0ZXI6OmNhbGN1bGF0
ZVJlc29sdmVkU2l6ZSh7IGR4KCksIGR5KCkgfSwgdGFyZ2V0Qm91bmRpbmdCb3gsIHByaW1pdGl2
ZVVuaXRzKTsKICAgICByZXR1cm4gRkVPZmZzZXQ6OmNhbGN1bGF0ZU91dHNldHMob2Zmc2V0KTsK
IH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxl
bWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVm
ZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IEZFT2Zmc2V0OjpjcmVhdGUoZHgoKSwgZHkoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmgKaW5kZXggZWFlOTdlODIzYmJmNDFhMjZhZDYzMmE3N2ZiMTBjMWZhYjA3
M2RkZS4uZDY3ZWZiZTg4OTVjMmU3MzBlZjk1MmNiM2VjY2RkYjc2YTg1ODMxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaApAQCAtNDcsOSArNDcsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAorICAgIEZpbHRlckNoYW5nZSBzZXRGaWx0ZXJF
ZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQogICAgIEludE91dHNldHMgb3V0c2V0
cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlIHByaW1pdGl2ZVVuaXRzKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0
IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVjdChj
b25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmNwcAppbmRleCAwOWUxN2JkMDU4MWY4NGExM2YzYWNlNzhmZWNlZDFlZDZhZTA3NTNmLi45NTA2
YWM2ZDZlZDRhZGFkNzVhOGZmODkxMzE1ZDRhY2I2MTA3MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC04NywyNCAr
ODcsMjQgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb24KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotYm9v
bCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorRmls
dGVyQ2hhbmdlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QmIGVmZmVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgRkVTcGVjdWxhckxpZ2h0aW5nKiBzcGVjdWxhckxpZ2h0aW5nID0gc3RhdGlj
X2Nhc3Q8RkVTcGVjdWxhckxpZ2h0aW5nKj4oZWZmZWN0KTsKKyAgICBhdXRvJiBmZVNwZWN1bGFy
TGlnaHRpbmcgPSBkb3duY2FzdDxGRVNwZWN1bGFyTGlnaHRpbmc+KGVmZmVjdCk7CiAKICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgewogICAgICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAgICAgQVNTRVJU
KHJlbmRlcmVyKTsKICAgICAgICAgQ29sb3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xv
ckJ5QXBwbHlpbmdDb2xvckZpbHRlcihyZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0
aW5nQ29sb3IoKSk7Ci0gICAgICAgIHJldHVybiBzcGVjdWxhckxpZ2h0aW5nLT5zZXRMaWdodGlu
Z0NvbG9yKGNvbG9yKTsKKyAgICAgICAgcmV0dXJuIGZlU3BlY3VsYXJMaWdodGluZy5zZXRMaWdo
dGluZ0NvbG9yKGNvbG9yKTsKICAgICB9CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpz
dXJmYWNlU2NhbGVBdHRyKQotICAgICAgICByZXR1cm4gc3BlY3VsYXJMaWdodGluZy0+c2V0U3Vy
ZmFjZVNjYWxlKHN1cmZhY2VTY2FsZSgpKTsKKyAgICAgICAgcmV0dXJuIGZlU3BlY3VsYXJMaWdo
dGluZy5zZXRTdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxlKCkpOwogICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIpCi0gICAgICAgIHJldHVybiBzcGVjdWxh
ckxpZ2h0aW5nLT5zZXRTcGVjdWxhckNvbnN0YW50KHNwZWN1bGFyQ29uc3RhbnQoKSk7CisgICAg
ICAgIHJldHVybiBmZVNwZWN1bGFyTGlnaHRpbmcuc2V0U3BlY3VsYXJDb25zdGFudChzcGVjdWxh
ckNvbnN0YW50KCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBv
bmVudEF0dHIpCi0gICAgICAgIHJldHVybiBzcGVjdWxhckxpZ2h0aW5nLT5zZXRTcGVjdWxhckV4
cG9uZW50KHNwZWN1bGFyRXhwb25lbnQoKSk7CisgICAgICAgIHJldHVybiBmZVNwZWN1bGFyTGln
aHRpbmcuc2V0U3BlY3VsYXJFeHBvbmVudChzcGVjdWxhckV4cG9uZW50KCkpOwogCi0gICAgYXV0
byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExpZ2h0U291cmNlJj4oc3BlY3VsYXJMaWdodGlu
Zy0+bGlnaHRTb3VyY2UoKSk7CisgICAgYXV0byYgbGlnaHRTb3VyY2UgPSBjb25zdF9jYXN0PExp
Z2h0U291cmNlJj4oZmVTcGVjdWxhckxpZ2h0aW5nLmxpZ2h0U291cmNlKCkpOwogICAgIGNvbnN0
IFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdodEVsZW1lbnQgPSBTVkdGRUxpZ2h0RWxlbWVudDo6Zmlu
ZExpZ2h0RWxlbWVudCh0aGlzKTsKICAgICBBU1NFUlQobGlnaHRFbGVtZW50KTsKIApAQCAtMTMw
LDcgKzEzMCw3IEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0CiAgICAgICAgIHJldHVybiBsaWdo
dFNvdXJjZS5zZXRMaW1pdGluZ0NvbmVBbmdsZShsaWdodEVsZW1lbnQtPmxpbWl0aW5nQ29uZUFu
Z2xlKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6Ok5vbmU7CiB9CiAKIHZvaWQgU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdodAogICAg
IHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiBmaWx0ZXIs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
CiB7CiAgICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGln
aHRFbGVtZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggZTY0YzQwMDMy
OTRhYTg5Mjk5M2UxNTVlMGZhOTY0MDNhNmFhYWUzZC4uYjlkOTBiMWZmMDBjODYyYWM4OTZlNTBl
OTVjOTVlYmFkOWVmNWFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5oCkBAIC01Nyw5ICs1Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAKLSAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgRmlsdGVyQ2hh
bmdlIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmLCBjb25zdCBRdWFsaWZp
ZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElu
cHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9Ci0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVGaWx0
ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRl
KHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggNWM1
YTY4ODNiNzhlNjhmYmIwODZiMmE0ZmExNGY4MjVkNTYxZDg4NC4uMWM1N2Q1ZDNmZjI1NzZiMTcy
OTI0NTczNGJkYzUwNGM2MzFiZTViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVt
ZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICByZXR1cm4g
RkVUaWxlOjpjcmVhdGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCmlu
ZGV4IDg3ZDI4ODQzN2UyYzAzYjEzMjgzNjlkZWJkYjNkZTA3NzljOTYxMjkuLjAyYzA1YzJlM2Nk
YjY5MDk0NWQxNzY5NzMwMTRmYjQzNjQxNzAzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8
QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB7IGluMSgpIH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3Qo
Y29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25z
dCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9u
Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7
IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAppbmRleCA2Yjg0NmM2NzBkYzkxZWZiOTRkY2Q2
YWMwYmE1Y2JiNjZkM2M3OGU3Li43MzgxODJjYzZhZDAzMDE1NGNhY2JkNDgzMWFlZDI5ZDY2ZThi
ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3Bw
CkBAIC04OCwyMiArODgsMjUgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG8KICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KTsKIH0KIAotYm9vbCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQorRmlsdGVyQ2hhbmdlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QmIGVmZmVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgRkVUdXJidWxlbmNlKiB0dXJidWxlbmNlID0gc3RhdGljX2Nhc3Q8RkVUdXJi
dWxlbmNlKj4oZWZmZWN0KTsKKyAgICBhdXRvJiBmZVR1cmJ1bGVuY2UgPSBkb3duY2FzdDxGRVR1
cmJ1bGVuY2U+KGVmZmVjdCk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0
cikKLSAgICAgICAgcmV0dXJuIHR1cmJ1bGVuY2UtPnNldFR5cGUodHlwZSgpKTsKKyAgICAgICAg
cmV0dXJuIGZlVHVyYnVsZW5jZS5zZXRUeXBlKHR5cGUoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIpCi0gICAgICAgIHJldHVybiB0dXJidWxlbmNlLT5z
ZXRTdGl0Y2hUaWxlcyhzdGl0Y2hUaWxlcygpKTsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmJhc2VGcmVxdWVuY3lBdHRyKQotICAgICAgICByZXR1cm4gKHR1cmJ1bGVuY2UtPnNldEJh
c2VGcmVxdWVuY3lYKGJhc2VGcmVxdWVuY3lYKCkpIHx8IHR1cmJ1bGVuY2UtPnNldEJhc2VGcmVx
dWVuY3lZKGJhc2VGcmVxdWVuY3lZKCkpKTsKKyAgICAgICAgcmV0dXJuIGZlVHVyYnVsZW5jZS5z
ZXRTdGl0Y2hUaWxlcyhzdGl0Y2hUaWxlcygpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmJhc2VGcmVxdWVuY3lBdHRyKSB7CisgICAgICAgIGF1dG8gYmFzZUZyZXF1ZW5jeVhDaGFu
Z2VkID0gZmVUdXJidWxlbmNlLnNldEJhc2VGcmVxdWVuY3lYKGJhc2VGcmVxdWVuY3lYKCkpOwor
ICAgICAgICBhdXRvIGJhc2VGcmVxdWVuY3lZQ2hhbmdlZCA9IGZlVHVyYnVsZW5jZS5zZXRCYXNl
RnJlcXVlbmN5WShiYXNlRnJlcXVlbmN5WSgpKTsKKyAgICAgICAgcmV0dXJuIGJhc2VGcmVxdWVu
Y3lYQ2hhbmdlZCAhPSBGaWx0ZXJDaGFuZ2U6Ok5vbmUgPyBiYXNlRnJlcXVlbmN5WENoYW5nZWQg
OiBiYXNlRnJlcXVlbmN5WUNoYW5nZWQ7CisgICAgfQogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c2VlZEF0dHIpCi0gICAgICAgIHJldHVybiB0dXJidWxlbmNlLT5zZXRTZWVkKHNlZWQo
KSk7CisgICAgICAgIHJldHVybiBmZVR1cmJ1bGVuY2Uuc2V0U2VlZChzZWVkKCkpOwogICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bnVtT2N0YXZlc0F0dHIpCi0gICAgICAgIHJldHVybiB0
dXJidWxlbmNlLT5zZXROdW1PY3RhdmVzKG51bU9jdGF2ZXMoKSk7CisgICAgICAgIHJldHVybiBm
ZVR1cmJ1bGVuY2Uuc2V0TnVtT2N0YXZlcyhudW1PY3RhdmVzKCkpOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBGaWx0ZXJDaGFuZ2U6
Ok5vbmU7CiB9CiAKIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTExNyw3ICsxMjAsNyBAQCB2
b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpjcmVh
dGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9y
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBpZiAoYmFzZUZyZXF1ZW5j
eVgoKSA8IDAgfHwgYmFzZUZyZXF1ZW5jeVkoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKaW5kZXggMmZj
MzQ3ZTI4OGQ4NDhiMmVjZmQxMjdmNTRkYWM5ZTAwM2ExZDIzMC4uOTk4NzQ2YTM5MjIxNjRlYjk1
OGFjODE1ZjlhN2ZkYjExYzQzMmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oCkBAIC0xMTgsOCArMTE4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmls
dGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRl
eHQpIGNvbnN0IG92ZXJyaWRlOworICAgIEZpbHRlckNoYW5nZSBzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXIm
LCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3Rp
bmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBt
X2Jhc2VGcmVxdWVuY3lYIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcAppbmRleCAxNzljNzQ1YTBhMzc0MmRhNzUzZmYwNDE2ODA5NGY0NjEy
MDM3ZDU1Li42ZmE5YzRmMzcyMmE1OTU0MjdmYWZjMDJlZGNlNWVjNWE5NGFiOTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudElubGluZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKQEAgLTY2LDExICs2NywzNCBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbgogICAgIFNW
R0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotYm9vbCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShG
aWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsdGVyRWZmZWN0KGNvbnN0
IFNWR0ZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0cywgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiB7Ci0gICAgLy8gV2hlbiBh
bGwgZmlsdGVycyBzdXBwb3J0IHRoaXMgbWV0aG9kLCBpdCB3aWxsIGJlIGNoYW5nZWQgdG8gYSBw
dXJlIHZpcnR1YWwgbWV0aG9kLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIW1fZWZmZWN0KQorICAgICAgICBtX2VmZmVjdCA9IGNyZWF0ZUZp
bHRlckVmZmVjdChmaWx0ZXIsIGlucHV0cywgZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICByZXR1
cm4gbV9lZmZlY3Q7Cit9CisKK3ZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZSkKK3sKKyAgICBpZiAoIW1fZWZmZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGNoYW5nZSA9IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZSgqbV9lZmZlY3QsIGF0dHJpYnV0ZSk7
CisgICAgbWFya0ZpbHRlckZvckludmFsaWRhdGlvbihjaGFuZ2UpOworfQorCit2b2lkIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6bWFya0ZpbHRlckZvckludmFsaWRhdGlv
bihGaWx0ZXJDaGFuZ2UgY2hhbmdlKQoreworICAgIGlmICghbV9lZmZlY3QgfHwgY2hhbmdlID09
IEZpbHRlckNoYW5nZTo6Tm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUqPihyZW5kZXJlciktPm1hcmtGaWx0ZXJGb3JJbnZhbGlk
YXRpb24oKm1fZWZmZWN0LCBjaGFuZ2UpOworCisgICAgaWYgKGNoYW5nZSA9PSBGaWx0ZXJDaGFu
Z2U6OlJlYnVpbGQpCisgICAgICAgIG1fZWZmZWN0ID0gbnVsbHB0cjsKKworICAgIHNldFNWR1Jl
c291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IGFhNjFhMjlkMjg2M2Q3
MDE5ZGYzNjc0ZGRmNzhkZDdlZTQ0NjQ5MDAuLjg5YjhlODg5NGNlZDQ3ZTQzYWM5NzQ2NDZkNzBi
NzU3OGU2YTRjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNs
dWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MCwxMSArNDksMTIgQEAgcHVibGljOgogICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBo
ZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgU1ZHQW5pbWF0ZWRTdHJp
bmcmIHJlc3VsdEFuaW1hdGVkKCkgeyByZXR1cm4gbV9yZXN1bHQ7IH0KIAotICAgIC8vIFJldHVy
bnMgdHJ1ZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb2xkIG9uZS4K
LSAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZvaWQgbWFya0ZpbHRlckZvckludmFsaWRh
dGlvbihGaWx0ZXJDaGFuZ2UpOworCiAgICAgdmlydHVhbCBWZWN0b3I8QXRvbVN0cmluZz4gZmls
dGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCB7IHJldHVybiB7IH07IH0KICAgICB2aXJ0dWFs
IEludE91dHNldHMgb3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmLCBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlKSBjb25zdCB7IHJldHVybiB7IH07IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RW
ZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qg
PSAwOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRl
c3RpbmF0aW9uQ29udGV4dCk7CiAKICAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJp
bWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsKIApAQCAtNjUsNyArNjUsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOworICAgIHZpcnR1YWwgRmlsdGVyQ2hhbmdlIHNldEZpbHRl
ckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmLCBjb25zdCBRdWFsaWZpZWROYW1lJikgeyBy
ZXR1cm4gRmlsdGVyQ2hhbmdlOjpOb25lOyB9CisgICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNv
bnN0ID0gMDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzQsNiArNzUsOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fZWZmZWN0Owor
CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhl
IGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8g
U3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhl
IGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIwJSJfcykgfTsKQEAgLTgzLDEyICs4Niw2IEBAIHBy
aXZhdGU6CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jlc3VsdCB7IFNWR0FuaW1hdGVk
U3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKLWlubGluZSB2b2lkIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCi17Ci0gICAgaWYgKGF1dG8qIHByaW1pdGl2ZVJlbmRl
cmVyID0gcmVuZGVyZXIoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUqPihwcmltaXRpdmVSZW5kZXJlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNo
YW5nZWQoYXR0cmlidXRlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuY3BwCmluZGV4IDIyYjY4NDg2YjNiMmViNDE3YzQxYmE3NmNhMzNlNjk5YzQ1NGQ3
ZmUuLjMyMzhjMDkxZWEwNGUwNDM5MDEwOTE3NzEwNWE2NDExNDg0NGVhMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMzAs
MTEgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNWR0ZpbHRlcj4g
U1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmls
dGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5n
Qm94LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKK1JlZlB0cjxT
VkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1l
bnQsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiB7CiAgICAgYXV0byBmaWx0ZXIgPSBhZG9w
dFJlZigqbmV3IFNWR0ZpbHRlcihyZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgY2xpcE9wZXJh
dGlvbiwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyRWxlbWVudC5wcmlt
aXRpdmVVbml0cygpKSk7CiAKLSAgICBhdXRvIGV4cHJlc3Npb24gPSBidWlsZGVyLmJ1aWxkRmls
dGVyRXhwcmVzc2lvbihmaWx0ZXJFbGVtZW50LCBmaWx0ZXIsIGRlc3RpbmF0aW9uQ29udGV4dCk7
CisgICAgYXV0byBleHByZXNzaW9uID0gU1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRGaWx0ZXJFeHBy
ZXNzaW9uKGZpbHRlckVsZW1lbnQsIGZpbHRlciwgZGVzdGluYXRpb25Db250ZXh0KTsKICAgICBp
ZiAoIWV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCmluZGV4IDA4YmM5MWMxYjJi
MjJjMTUxNjlmZGI3ODM3ZTVlMzVjYmVkZDUyY2YuLjAyOGI3ZjdiMDdiYTg3MDZlYmZhOTFlMWQ3
NWMyMjAxZDEyZjZjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5oCkBAIC0zMiwxMiArMzIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGaWx0ZXJJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFNWR0Zp
bHRlckJ1aWxkZXI7CiBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50OwogCiBjbGFzcyBTVkdGaWx0ZXIg
ZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFNWR0Zp
bHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVyJiwgUmVuZGVy
aW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRp
bmdCb3gsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICBz
dGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBSZW5kZXJp
bmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGlu
Z0JveCwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRp
dmVVbml0cywgU1ZHRmlsdGVyRXhwcmVzc2lvbiYmKTsKIAogICAgIEZsb2F0UmVjdCB0YXJnZXRC
b3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5jcHAKaW5kZXggNDRmNzNiZDUxYzljN2FiYjNjYTgyZWFhZmViNDhmMjY5NjU4ZTAzYS4u
NmEwOWUxMzQzM2E4MGYyNzY0NTk1M2FkM2IzMDUzODYzMzY1YTJhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5j
cHAKQEAgLTE0NCw5ICsxNDQsNiBAQCBzdGQ6Om9wdGlvbmFsPFNWR0ZpbHRlckV4cHJlc3Npb24+
IFNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmlsdGVyRXhwcmVzc2lvbihTVkdGaQogICAgICAgICAg
ICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQigpKTsKICNlbmRpZgogCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gZWZm
ZWN0RWxlbWVudC5yZW5kZXJlcigpKQotICAgICAgICAgICAgbV9lZmZlY3RSZW5kZXJlci5hZGQo
cmVuZGVyZXIsIGVmZmVjdC5nZXQoKSk7Ci0KICAgICAgICAgZ3JhcGguYWRkTmFtZWROb2RlKGVm
ZmVjdEVsZW1lbnQucmVzdWx0KCksIHsgKmVmZmVjdCB9KTsKICAgICAgICAgZ3JhcGguc2V0Tm9k
ZUlucHV0cygqZWZmZWN0LCBXVEZNb3ZlKCppbnB1dHMpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5k
ZXggNjA5OWFiOWQyOTFlZjRmZTkwN2VjNjBiOWRlY2ZjYzRkNmEwYmU4My4uZGFlNzEwYmU5MjM5
OTExNGM4ZWJlNDg5YzRhODhhOWZhMjA4YTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMjcsOSArMjcs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZpbHRlckVmZmVjdDsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNWR0ZpbHRlcjsK
IGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKQEAgLTM3LDE1ICszNSw4IEBAIGNsYXNzIFNWR0Zp
bHRlckJ1aWxkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFNWR0ZpbHRlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPFNWR0Zp
bHRlckV4cHJlc3Npb24+IGJ1aWxkRmlsdGVyRXhwcmVzc2lvbihTVkdGaWx0ZXJFbGVtZW50Jiwg
Y29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRl
eHQpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNWR0ZpbHRlckV4cHJlc3Npb24+IGJ1aWxk
RmlsdGVyRXhwcmVzc2lvbihTVkdGaWx0ZXJFbGVtZW50JiwgY29uc3QgU1ZHRmlsdGVyJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpOwogICAgIHN0YXRpYyBJbnRP
dXRzZXRzIGNhbGN1bGF0ZUZpbHRlck91dHNldHMoU1ZHRmlsdGVyRWxlbWVudCYsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOwotCi0gICAgLy8gUmVxdWlyZWQgdG8gY2hhbmdl
IHRoZSBhdHRyaWJ1dGVzIG9mIGEgZmlsdGVyIGR1cmluZyBhbiBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
LgotICAgIEZpbHRlckVmZmVjdCogZWZmZWN0QnlSZW5kZXJlcihSZW5kZXJPYmplY3QqIG9iamVj
dCkgeyByZXR1cm4gbV9lZmZlY3RSZW5kZXJlci5nZXQob2JqZWN0KTsgfQotCi1wcml2YXRlOgot
ICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgRmlsdGVyRWZmZWN0Kj4gbV9lZmZlY3RSZW5kZXJl
cjsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458641</attachid>
            <date>2022-04-30 18:13:24 -0700</date>
            <delta_ts>2022-04-30 19:19:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232842-20220430181323.patch</filename>
            <type>text/plain</type>
            <size>153402</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZlNWNhNjkwNDI4NThm
Mjc1MzIzZjRjYWQzZDQxYzQxOTUyMGIwNC4uNjNiNjYwMzMyNTdmYjk4NGIyMWJjODk0ZDA4YjY3
MzE0YTNhNzQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwOSBAQAorMjAyMi0wNC0zMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFNpbXBsaWZ5IHRoZSBkeW5hbWljIHVwZGF0ZSBvZiB0aGUgU1ZHIGZpbHRlciBlbGVtZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQyCisg
ICAgICAgIHJkYXI6Ly84NTQyNjE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvbnNpZGVyIHRoaXMgU1ZHIGFzIGFuIGV4YW1wbGU6CisKKyAgICAg
ICAgPHN2Zz4KKyAgICAgICAgICAgIDxmaWx0ZXIgaWQ9ImJsdXIiPgorICAgICAgICAgICAgICAg
IDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjUiLz4KKyAgICAgICAgICAgIDwvZmlsdGVy
PgorICAgICAgICAgICAgPGNpcmNsZSAuLi4gZmlsdGVyPSJ1cmwoI2JsdXIpIi8+CisgICAgICAg
ICAgICA8cmVjdCAuLi4gZmlsdGVyPSJ1cmwoI2JsdXIpIi8+CisgICAgICAgIDwvc3ZnPgorCisg
ICAgICAgIFRoZSByZW5kZXJlcnMgb2YgdGhlIDxjaXJjbGU+IGFuZCB0aGUgPHJlY3Q+IGVsZW1l
bnRzIGFzayB0aGUgcmVuZGVyZXIgb2YKKyAgICAgICAgdGhlIDxmaWx0ZXI+IGVsZW1lbnQsIGku
ZS4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIgdG8gYXBwbHlSZXNvdXJjZSgpLiBJbgorICAgICAg
ICB0aGlzIGZ1bmN0aW9uIGEgbmV3IFNWR0ZpbHRlciBpcyBjcmVhdGVkIGZvciBlYWNoIHRhcmdl
dCByZW5kZXJlci4gQSBuZXcKKyAgICAgICAgZW50cnkgeyB0YXJnZXRfcmVuZGVyZXIsIEZpbHRl
ckRhdGEgfSBpcyBhZGRlZCB0byAKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6Om1f
cmVuZGVyZXJGaWx0ZXJEYXRhTWFwLgorCisgICAgICAgIFdoaWxlIGJ1aWxkaW5nIHRoZSBTVkdG
aWx0ZXIsIGEgbmV3IEZpbHRlckVmZmVjdCBpcyBjcmVhdGVkIGZvciBldmVyeSAKKyAgICAgICAg
dGFyZ2V0IHJlbmRlcmVyIGFuZCBhbiBlbnRyeSB7IHByaW1pdGl2ZV9yZW5kZXJlciwgZWZmZWN0
IH0gaXMgYWRkZWQgdG8KKyAgICAgICAgU1ZHRmlsdGVyQnVpbGRlcjo6bV9lZmZlY3RSZW5kZXJl
ci4KKworICAgICAgICBTdXBwb3NlICdzdGREZXZpYXRpb24nIG9mIDxmZUdhdXNzaWFuQmx1cj4g
aGFzIGJlZW4gY2hhbmdlZCwgdGhpcyBpcyB0aGUKKyAgICAgICAgb2xkIHdvcmtmbG93OgorCisg
ICAgICAgIC0tIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgp
IHdpbGwgY2FsbCAKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKCkgd2hpY2gKKyAgICAgICAgd2lsbCBjYWxsIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2Vk
KCkuCisgICAgICAgIFRoZSBsYXN0IG9uZSB3aWxsIGNhbGwgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoKQorICAgICAgICBhbmQgcGFzcyBpdHNlbGYg
YXMgYW4gYXJndW1lbnQuCisKKyAgICAgICAgLS0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBy
aW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoKSB3aWxsIGxvb3AgdGhyb3VnaAorICAgICAgICBhbGwg
dGhlIGVudHJpZXMgaW4gbV9yZW5kZXJlckZpbHRlckRhdGFNYXAgYW5kIGdldCB0aGUgRmlsdGVy
RGF0YS4gQW5kCisgICAgICAgIHRoZW4gaXQgZ2V0cyB0aGUgZWZmZWN0IGdpdmVuIHRoZSBrZXkg
cHJpbWl0aXZlIHJlbmRlcmVyIGZyb20gCisgICAgICAgIEZpbHRlckRhdGE6OlNWR0ZpbHRlckJ1
aWxkZXI6Om1fZWZmZWN0UmVuZGVyZXIuIEhhdmluZyB0aGlzIGVmZmVjdCwgaXRzCisgICAgICAg
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZSgpIHdpbGwgYmUgY2FsbGVkLgorCisgICAgICAgIEJ1
dCB0aGlzIHdvcmtmbG93IGlzIGN1bWJlcnNvbWUgc2luY2UgaXQgd2FzIG1haW5seSBkb25lIHRo
aXMgd2F5IGJlY2F1c2UKKyAgICAgICAgdGhlIHJlc3VsdCBGaWx0ZXJJbWFnZSB3YXMgc3RvcmVk
IHdpdGggdGhlIEZpbHRlckVmZmVjdC4gQnV0IHNpbmNlIHRoZSAKKyAgICAgICAgcmVzdWx0IEZp
bHRlckltYWdlIHdhcyBtb3ZlZCBvdXQgb2YgdGhlIEZpbHRlckVmZmVjdCwgd2UgZG8gbm90IG5l
ZWQgdG8KKyAgICAgICAgY3JlYXRlIGEgbmV3IEZpbHRlckVmZmVjdCBmb3IgZXZlcnkgdGFyZ2V0
IHJlbmRlcmVyLiBUaGUgc2FtZSBGaWx0ZXJFZmZlY3QKKyAgICAgICAgY2FuIGJlIHNoYXJlZCBh
bW9uZyBhbGwgdGhlIHRhcmdldCByZW5kZXJlcnMuCisKKyAgICAgICAgU28gdGhpcyBpcyB0aGUg
bmV3IHdvcmtmbG93IGZvciBkeW5hbWljYWxseSB1cGRhdGluZyB0aGUgRmlsdGVyRWZmZWN0Cisg
ICAgICAgIGF0dHJpYnV0ZXM6CisKKyAgICAgICAgLS0gTm8gbmVlZCB0byBjcmVhdGUgYSBzZXBh
cmF0ZSBGaWx0ZXJFZmZlY3QgZm9yIGV2ZXJ5IFNWR0ZpbHRlciAob3IgdGFyZ2V0CisgICAgICAg
IHJlbmRlcmVyKS4gVGhpcyB3aWxsIGJlIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6bV9lZmZlY3QuCisKKyAgICAgICAgLS0gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKCkgd2lsbCBjYWxsIAorICAgICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoKSB3aGljaAor
ICAgICAgICB3aWxsIGNhbGwgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoKSBpZiBtX2VmZmVjdAorICAgICAgICBpcyBub3QgbnVsbC4gc2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKCkgd2lsbCByZXR1cm4gdGhlIHR5cGUgb2YgaW52YWxpZGF0aW9uLgor
ICAgICAgICBUaGVuIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjptYXJrRmlsdGVy
Rm9ySW52YWxpZGF0aW9uKCkgd2lsbAorICAgICAgICBiZSBjYWxsZWQuCisKKyAgICAgICAgLS0g
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6Om1hcmtGaWx0ZXJGb3JJbnZhbGlkYXRp
b24oKSB3aWxsIAorICAgICAgICBkZWNpZGUgd2hpY2ggZnVuY3Rpb24gaW4gdGhlIHBhcmVudCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlciBiYXNlZCBvbiB0aGUKKyAgICAgICAgdHlwZSBvZiBpbnZh
bGlkYXRpb24uIElmIHRoZSB0eXBlIG9mIGludmFsaWRhdGlvbiBpcyAnUmVwYWludCcsIGl0IHdp
bGwKKyAgICAgICAgY2FsbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6bWFya0ZpbHRlckZvclJl
cGFpbnQoKS4KKworICAgICAgICAtLSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6bWFya0ZpbHRl
ckZvclJlcGFpbnQoKSB3aWxsIG1hcmsgdGhlIHRhcmdldAorICAgICAgICByZW5kZXJlciBmb3Ig
aW52YWxpZGF0aW9uIGFuZCBpdCB3aWxsIGNsZWFyIHRoZSBlZmZlY3QgcmVzdWx0cyBzdGFydGlu
ZworICAgICAgICBmcm9tIHRoZSBjaGFuZ2VkIGVmZmVjdCAoZmVHYXVzc2lhbkJsdXIgaW4gdGhl
IGV4YW1wbGUgYWJvdmUpLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzdGFudExpZ2h0U291cmNlOjpzZXRBemltdXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bnRMaWdodFNvdXJjZTo6c2V0RWxldmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpzZXRC
bGVuZE1vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpzZXRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFQ29sb3JNYXRyaXg6OnNldFZhbHVlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0
ZTo6c2V0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpzZXRLMSk6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6c2V0SzIpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb21wb3NpdGU6OnNldEszKToKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpz
ZXRLNCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpzZXREaXZpc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEJpYXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb252b2x2ZU1hdHJpeDo6c2V0VGFyZ2V0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZFQ29udm9sdmVNYXRyaXg6OnNldEVkZ2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29udm9sdmVNYXRyaXg6OnNldEtlcm5lbFVuaXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlmZnVzZUNvbnN0YW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRURyb3BTaGFkb3c6OnNldFN0ZERldmlhdGlvblgpOgorICAgICAgICAoV2ViQ29yZTo6
RkVEcm9wU2hhZG93OjpzZXRTdGREZXZpYXRpb25ZKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJv
cFNoYWRvdzo6c2V0RHgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpzZXREeSk6
CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnNldFNoYWRvd0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6c2V0U2hhZG93T3BhY2l0eSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFRHJvcFNoYWRvdzo6c2V0U3RkRGV2aWF0aW9uWCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGRURyb3BTaGFkb3c6OnNldFN0ZERldmlhdGlvblkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpzZXREeCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpGRURyb3BTaGFkb3c6OnNldER5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZF
RHJvcFNoYWRvdzo6c2V0U2hhZG93Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RkVEcm9wU2hhZG93OjpzZXRTaGFkb3dPcGFjaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVG
bG9vZDo6c2V0Rmxvb2RDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpzZXRGbG9v
ZE9wYWNpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblgpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblkpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnNldEVkZ2VNb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFTGlnaHRpbmc6OnNldFN1cmZhY2VTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUxpZ2h0
aW5nOjpzZXRMaWdodGluZ0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnNl
dEtlcm5lbFVuaXRMZW5ndGhYKToKKyAgICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnNldEtl
cm5lbFVuaXRMZW5ndGhZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
TGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhv
bG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnNldE1vcnBob2xvZ3lP
cGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1gpOgor
ICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVP
ZmZzZXQ6OnNldER4KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpzZXREeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6c2V0U3BlY3VsYXJDb25zdGFudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFyRXhwb25lbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0aW5nLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXRUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1ZW5jeVkpOgorICAgICAgICAoV2ViQ29yZTo6
RkVUdXJidWxlbmNlOjpzZXRCYXNlRnJlcXVlbmN5WCk6CisgICAgICAgIChXZWJDb3JlOjpGRVR1
cmJ1bGVuY2U6OnNldFNlZWQpOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpzZXRO
dW1PY3RhdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6c2V0U3RpdGNoVGls
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckludmFsaWRhdGlvbi5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJjZTo6c2V0QXppbXV0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWdodFNvdXJjZTo6c2V0RWxldmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
Z2h0U291cmNlOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRZKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRaKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpZ2h0U291cmNlOjpzZXRQb2ludHNBdFgpOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3Vy
Y2U6OnNldFBvaW50c0F0WSk6CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJjZTo6c2V0UG9p
bnRzQXRaKToKKyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRTcGVjdWxhckV4cG9u
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRMaW1pdGluZ0NvbmVBbmds
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50TGlnaHRTb3VyY2U6OnNldFgpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9pbnRMaWdodFNvdXJjZTo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpQ
b2ludExpZ2h0U291cmNlOjpzZXRaKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1BvaW50TGlnaHRTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3Vy
Y2U6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRZKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwb3RMaWdodFNvdXJjZTo6c2V0Wik6CisgICAgICAgIChXZWJDb3Jl
OjpTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WCk6CisgICAgICAgIChXZWJDb3JlOjpTcG90
TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WSk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRT
b3VyY2U6OnNldFBvaW50c0F0Wik6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6
OnNldFNwZWN1bGFyRXhwb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNl
OjpzZXRMaW1pdGluZ0NvbmVBbmdsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9TcG90TGlnaHRTb3VyY2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6Om1hcmtGaWx0ZXJGb3JSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjptYXJrRmlsdGVyRm9yUmVi
dWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjptYXJrRmlsdGVyRm9ySW52
YWxpZGF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUJsZW5kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50Ojppc0ludmFsaWRWYWx1ZXNMZW5ndGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6Y3JlYXRlRmls
dGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6Y3JlYXRl
RmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxl
bWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojpz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRl
RmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZpbHRlckVm
ZmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURy
b3BTaGFkb3dFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVtZW50OjpzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6
OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29k
RWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUlt
YWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUltYWdlRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGVG
aWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6
OmZpbHRlckVmZmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6Y3JlYXRlRmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OnNl
dEZpbHRlckVmZmVjdEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVs
ZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU9mZnNldEVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZp
bHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjptYXJrRmlsdGVyRm9ySW52
YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldEZpbHRlckVm
ZmVjdEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRl
ckV4cHJlc3Npb24pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1
aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmVmZmVjdEJ5UmVu
ZGVyZXIpOiBEZWxldGVkLgorCiAyMDIyLTA0LTI4ICBQYXRyaWNrIEdyaWZmaXMgIDxwZ3JpZmZp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIENTUDogRml4IG1peGluZyBzdHJpY3QtZHluYW1pYyBh
bmQgdW5zYWZlLWlubGluZSBwb2xpY2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZDA2MGFkOWYz
MWFkMmU2MTQ4Mzc5NTIzNzBiYTUwMDExOWQwYWFjNC4uMjY2MzI1NzY3OGYxNzViZmJmMTM5Yjlm
MjYyZDg5OWMxODlmOTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNjU4LDYgKzE2NTgsNyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJ
bWFnZVZlY3Rvci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbnZhbGlk
YXRpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyUmVzdWx0cy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWJhMWI4MjAzNTJj
MTRkOTYwNjYzM2YzMDFmOWQ0NTM3MjhlMmUyNS4uZDE4YTZjMzdjMzQzMjY3NDMxMjU1NDM4MzA3
Mzc5NTI5ZWNmNTgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjM2NCw2ICsyMzY0LDcgQEAKIAkJNzI5OUJDNjcyM0Q2QTUz
MjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlC
QzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4
IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTcyQTE0OUYxMjdGRkEyRTQwMEVBNDg3QyAvKiBGaWx0ZXJJbnZh
bGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyQTE0OUYwMjdGRjkxOEUwMEVBNDg3QyAvKiBGaWx0ZXJJbnZhbGlkYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE1RDE5MjI3NUU4
RkZFMDA2NTgzM0UgLyogU1ZHRmlsdGVyRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2Q0RFMjUyNzVCNDg5NzAwQTQ0NUIyIC8qIFNW
R0ZpbHRlckV4cHJlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJhbWVS
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJB
ODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQ0M5QzYyNzYyOUE3NzAw
RDUyM0Y3IC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RjIyNDYxREQzRDFDNTAwRTkyREEzIC8q
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTQ0Myw2ICsxMTQ0NCw3IEBACiAJCTcyQTEzQUQ1
Mjc0REU1NEUwMEUyQTg4RSAvKiBTb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTb3VyY2VBbHBoYVNvZnR3YXJlQXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MkExM0FENjI3NERFNTc4MDBFMkE4OEUgLyogU291cmNlR3JhcGhpY1NvZnR3
YXJlQXBwbGllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VHcmFwaGljU29mdHdhcmVB
cHBsaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBMTNBRDcyNzRERTU3
ODAwRTJBODhFIC8qIFNvdXJjZUdyYXBoaWNTb2Z0d2FyZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU291cmNlR3JhcGhpY1NvZnR3YXJlQXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MkExNDlGMDI3RkY5MThFMDBFQTQ4N0MgLyogRmlsdGVySW52YWxpZGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZpbHRlckludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MkI0RUY3NDI3NEUyMzMzMDAyOTNDMkYgLyogRkVCbGVuZFNvZnR3YXJlQXBw
bGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGRUJsZW5kU29mdHdhcmVBcHBsaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQjRFRjc1Mjc0RTIzMzQwMDI5M0MyRiAvKiBGRUJsZW5k
U29mdHdhcmVBcHBsaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZFQmxlbmRTb2Z0d2FyZUFw
cGxpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkI0RUY3QzI3NEVFMzdG
MDAyOTNDMkYgLyogRmlsdGVySW1hZ2VWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVySW1h
Z2VWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MTcyLDYgKzI3MTc0
LDcgQEAKIAkJCQk3MjQzNUVGNTI3M0QwNzY3MDAwNUU3RUUgLyogRmlsdGVySW1hZ2UuY3BwICov
LAogCQkJCTcyNDM1RUY0MjczRDA3NjcwMDA1RTdFRSAvKiBGaWx0ZXJJbWFnZS5oICovLAogCQkJ
CTcyQjRFRjdDMjc0RUUzN0YwMDI5M0MyRiAvKiBGaWx0ZXJJbWFnZVZlY3Rvci5oICovLAorCQkJ
CTcyQTE0OUYwMjdGRjkxOEUwMEVBNDg3QyAvKiBGaWx0ZXJJbnZhbGlkYXRpb24uaCAqLywKIAkJ
CQk0OUVDRUI2MzE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmNwcCAqLywKIAkJ
CQk0OUVDRUI2NDE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9uLmggKi8sCiAJCQkJ
NDlFQ0VCNjUxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwICovLApAQCAt
MzQ3OTUsNiArMzQ3OTgsNyBAQAogCQkJCTcyQjhCMDM1Mjc1MzQzODYwMEY3NTJBQSAvKiBGaWx0
ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzJCOEIwMzYyNzUzNDQxNDAwRjc1MkFB
IC8qIEZpbHRlckltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjQ2OTYzRTI3NUM2MTY3MDBB
OTE1NkEgLyogRmlsdGVySW1hZ2VWZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQTE0OUYx
MjdGRkEyRTQwMEVBNDg3QyAvKiBGaWx0ZXJJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5RUNFQjZFMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RUNFQjcwMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MkQ3MzY0NDI3ODQ2MUEwMDAzOTg2NjMgLyogRmlsdGVy
UmVzdWx0cy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAKaW5k
ZXggNjU1ZWU1NjRjZTM1YjhiNTUxMDJlYTZhNzI4MTBmMWVhNTJiMTg2OC4uNWRjOTkxNjQ5NDA4
YTBmZjYwMjI1NjgxOTlkMDcyMTdhZDFjZGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNl
LmNwcApAQCAtNjQsMjAgKzY0LDIwIEBAIExpZ2h0U291cmNlOjpDb21wdXRlZExpZ2h0aW5nRGF0
YSBEaXN0YW50TGlnaHRTb3VyY2U6OmNvbXB1dGVQaXhlbExpZ2h0aW5nRGF0YShjCiAgICAgcmV0
dXJuIHBhaW50aW5nRGF0YS5pbml0aWFsTGlnaHRpbmdEYXRhOwogfQogCi1ib29sIERpc3RhbnRM
aWdodFNvdXJjZTo6c2V0QXppbXV0aChmbG9hdCBhemltdXRoKQorRmlsdGVySW52YWxpZGF0aW9u
IERpc3RhbnRMaWdodFNvdXJjZTo6c2V0QXppbXV0aChmbG9hdCBhemltdXRoKQogewogICAgIGlm
IChtX2F6aW11dGggPT0gYXppbXV0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fYXppbXV0aCA9IGF6aW11dGg7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWlu
dDsKIH0KIAotYm9vbCBEaXN0YW50TGlnaHRTb3VyY2U6OnNldEVsZXZhdGlvbihmbG9hdCBlbGV2
YXRpb24pCitGaWx0ZXJJbnZhbGlkYXRpb24gRGlzdGFudExpZ2h0U291cmNlOjpzZXRFbGV2YXRp
b24oZmxvYXQgZWxldmF0aW9uKQogewogICAgIGlmIChtX2VsZXZhdGlvbiA9PSBlbGV2YXRpb24p
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlv
bjo6Tm9uZTsKICAgICBtX2VsZXZhdGlvbiA9IGVsZXZhdGlvbjsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCiBUZXh0U3RyZWFt
JiBEaXN0YW50TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaAppbmRleCAwNjYwMTQzZmMxY2Y4MWRm
MWMzMDMxZGJjMDM5YWFlYzJjYzQ4NTRmLi44MTBmMzZjNzllOTI3Y2FjYThiZTFlODk5M2I3Mjhk
NjkyZjljNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmgKQEAgLTM1LDggKzM1LDggQEAg
cHVibGljOgogICAgIGZsb2F0IGF6aW11dGgoKSBjb25zdCB7IHJldHVybiBtX2F6aW11dGg7IH0K
ICAgICBmbG9hdCBlbGV2YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VsZXZhdGlvbjsgfQogCi0g
ICAgYm9vbCBzZXRBemltdXRoKGZsb2F0KSBvdmVycmlkZTsKLSAgICBib29sIHNldEVsZXZhdGlv
bihmbG9hdCkgb3ZlcnJpZGU7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldEF6aW11dGgoZmxv
YXQpIG92ZXJyaWRlOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRFbGV2YXRpb24oZmxvYXQp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbml0UGFpbnRpbmdEYXRhKGNvbnN0IEZpbHRlciYsIGNv
bnN0IEZpbHRlckltYWdlJiByZXN1bHQsIFBhaW50aW5nRGF0YSYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIENvbXB1dGVkTGlnaHRpbmdEYXRhIGNvbXB1dGVQaXhlbExpZ2h0aW5nRGF0YShjb25zdCBQ
YWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IHopIGNvbnN0IGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAK
aW5kZXggOWI5MDFjNDdjYWNiODQxOTVkYzY5YmNkNzUxYmZjYTBkNmFmZmE1MS4uMDZjNmNlYzE3
YmJmMTJlYjUyY2U5MjkzYTgxY2M4NjM4M2IyNGNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC00NCwxMiArNDQs
MTIgQEAgRkVCbGVuZDo6RkVCbGVuZChCbGVuZE1vZGUgbW9kZSkKIHsKIH0KIAotYm9vbCBGRUJs
ZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlIG1vZGUpCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVC
bGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZSBtb2RlKQogewogICAgIGlmIChtX21vZGUgPT0g
bW9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVySW52YWxp
ZGF0aW9uOjpOb25lOwogICAgIG1fbW9kZSA9IG1vZGU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PEZpbHRlckVmZmVjdEFwcGxpZXI+IEZFQmxlbmQ6OmNyZWF0ZVNvZnR3YXJlQXBwbGllcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5oCmluZGV4IDk3ZjBhOTQzNDE3MjFlNTBiY2ZhZjFhMWJmM2ZlZTlhMDc2MGIzYmIuLjcw
NDQ0NDRjM2Y0NWYxMzhiZGNiNDAzNTY3NWYxZDAwYjY0NTU0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCkBAIC0zMyw3ICsz
Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFQmxlbmQ+IGNy
ZWF0ZShCbGVuZE1vZGUpOwogCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kZTsgfQotICAgIGJvb2wgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZSk7CisgICAgRmls
dGVySW52YWxpZGF0aW9uIHNldEJsZW5kTW9kZShCbGVuZE1vZGUpOwogCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxGRUJsZW5kPj4gZGVjb2Rl
KERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCmluZGV4IDVlOWZjNGU5NzVkOGQxNWM2Y2U4
NmFhYWI4OGExZDJkOWQxNzkyMzMuLjYyNWFmNGIyNDdiY2M2NzZhOTZjMWIzMzY3YmVhYjM4Y2Fk
YjA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApAQCAtNDYsMjAgKzQ2LDIwIEBAIEZFQ29sb3JN
YXRyaXg6OkZFQ29sb3JNYXRyaXgoQ29sb3JNYXRyaXhUeXBlIHR5cGUsIFZlY3RvcjxmbG9hdD4m
JiB2YWx1ZXMpCiB7CiB9CiAKLWJvb2wgRkVDb2xvck1hdHJpeDo6c2V0VHlwZShDb2xvck1hdHJp
eFR5cGUgdHlwZSkKK0ZpbHRlckludmFsaWRhdGlvbiBGRUNvbG9yTWF0cml4OjpzZXRUeXBlKENv
bG9yTWF0cml4VHlwZSB0eXBlKQogewogICAgIGlmIChtX3R5cGUgPT0gdHlwZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwog
ICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlcklu
dmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAotYm9vbCBGRUNvbG9yTWF0cml4OjpzZXRWYWx1ZXMo
Y29uc3QgVmVjdG9yPGZsb2F0PiAmdmFsdWVzKQorRmlsdGVySW52YWxpZGF0aW9uIEZFQ29sb3JN
YXRyaXg6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+ICZ2YWx1ZXMpCiB7CiAgICAgaWYg
KG1fdmFsdWVzID09IHZhbHVlcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fdmFsdWVzID0gdmFsdWVzOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9
CiAKIHZvaWQgRkVDb2xvck1hdHJpeDo6Y2FsY3VsYXRlU2F0dXJhdGVDb21wb25lbnRzKGZsb2F0
KiBjb21wb25lbnRzLCBmbG9hdCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggMWJmMTJmOTVm
NGRkYTVlMTg4ZDJiNDAzMDBmYmE5NzkzYzI0N2M0NS4uMmY3ZDZhMWQ2OTNkMWZiOTU5MmFkMGE4
ZjQ5MDU3ZTQzMThjMzI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTQwLDEwICs0MCwxMCBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGRUNvbG9yTWF0cml4PiBjcmVh
dGUoQ29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8ZmxvYXQ+JiYpOwogCiAgICAgQ29sb3JNYXRyaXhU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBib29sIHNldFR5cGUoQ29s
b3JNYXRyaXhUeXBlKTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0VHlwZShDb2xvck1hdHJp
eFR5cGUpOwogCiAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZXM7IH0KLSAgICBib29sIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7
CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7
CiAKICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVTYXR1cmF0ZUNvbXBvbmVudHMoZmxvYXQqIGNv
bXBvbmVudHMsIGZsb2F0IHZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVIdWVSb3Rh
dGVDb21wb25lbnRzKGZsb2F0KiBjb21wb25lbnRzLCBmbG9hdCB2YWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwCmluZGV4IDRjM2I2NzA4ZTU3ZjgyNDRhYzIyYWJkMzRiZDUyZThhNDU0ZDEwMTEuLjE1NDc5
YzhkMTQ1NzIzMTc3OWNiMDVmZmU3OGE1MWZlNWJhMGZhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBA
IC00Niw0NCArNDYsNDQgQEAgRkVDb21wb3NpdGU6OkZFQ29tcG9zaXRlKGNvbnN0IENvbXBvc2l0
ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwKIHsKIH0KIAotYm9vbCBG
RUNvbXBvc2l0ZTo6c2V0T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgdHlwZSkKK0Zp
bHRlckludmFsaWRhdGlvbiBGRUNvbXBvc2l0ZTo6c2V0T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJh
dGlvblR5cGUgdHlwZSkKIHsKICAgICBpZiAobV90eXBlID09IHR5cGUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBt
X3R5cGUgPSB0eXBlOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlk
YXRpb246OlJlcGFpbnQ7CiB9CiAKLWJvb2wgRkVDb21wb3NpdGU6OnNldEsxKGZsb2F0IGsxKQor
RmlsdGVySW52YWxpZGF0aW9uIEZFQ29tcG9zaXRlOjpzZXRLMShmbG9hdCBrMSkKIHsKICAgICBp
ZiAobV9rMSA9PSBrMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmls
dGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fazEgPSBrMTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCi1ib29sIEZFQ29t
cG9zaXRlOjpzZXRLMihmbG9hdCBrMikKK0ZpbHRlckludmFsaWRhdGlvbiBGRUNvbXBvc2l0ZTo6
c2V0SzIoZmxvYXQgazIpCiB7CiAgICAgaWYgKG1fazIgPT0gazIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX2sy
ID0gazI7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6
UmVwYWludDsKIH0KIAotYm9vbCBGRUNvbXBvc2l0ZTo6c2V0SzMoZmxvYXQgazMpCitGaWx0ZXJJ
bnZhbGlkYXRpb24gRkVDb21wb3NpdGU6OnNldEszKGZsb2F0IGszKQogewogICAgIGlmIChtX2sz
ID09IGszKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJJbnZh
bGlkYXRpb246Ok5vbmU7CiAgICAgbV9rMyA9IGszOwotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAKLWJvb2wgRkVDb21wb3NpdGU6
OnNldEs0KGZsb2F0IGs0KQorRmlsdGVySW52YWxpZGF0aW9uIEZFQ29tcG9zaXRlOjpzZXRLNChm
bG9hdCBrNCkKIHsKICAgICBpZiAobV9rNCA9PSBrNCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fazQgPSBrNDsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50
OwogfQogCiBGbG9hdFJlY3QgRkVDb21wb3NpdGU6OmNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBG
aWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgY29uc3QgRmxv
YXRSZWN0JiBwcmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgKaW5kZXggMTliNjhm
NGFlOWQyMDc0MGI3NzI2YzA4MDFjMWY0OWFiN2MxYjNjYy4uMjEzMGNmZDkyMmEwMjI2MjZiNzhj
NTVkNjRjM2I3YTI0NTJjNzdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaApAQCAtNDMsMTkgKzQzLDE5IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFQ29tcG9zaXRlPiBjcmVhdGUo
Y29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQg
azMsIGZsb2F0IGs0KTsKIAogICAgIENvbXBvc2l0ZU9wZXJhdGlvblR5cGUgb3BlcmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgYm9vbCBzZXRPcGVyYXRpb24oQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSk7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldE9wZXJhdGlvbihDb21w
b3NpdGVPcGVyYXRpb25UeXBlKTsKIAogICAgIGZsb2F0IGsxKCkgY29uc3QgeyByZXR1cm4gbV9r
MTsgfQotICAgIGJvb2wgc2V0SzEoZmxvYXQpOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRL
MShmbG9hdCk7CiAKICAgICBmbG9hdCBrMigpIGNvbnN0IHsgcmV0dXJuIG1fazI7IH0KLSAgICBi
b29sIHNldEsyKGZsb2F0KTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0SzIoZmxvYXQpOwog
CiAgICAgZmxvYXQgazMoKSBjb25zdCB7IHJldHVybiBtX2szOyB9Ci0gICAgYm9vbCBzZXRLMyhm
bG9hdCk7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldEszKGZsb2F0KTsKIAogICAgIGZsb2F0
IGs0KCkgY29uc3QgeyByZXR1cm4gbV9rNDsgfQotICAgIGJvb2wgc2V0SzQoZmxvYXQpOworICAg
IEZpbHRlckludmFsaWRhdGlvbiBzZXRLNChmbG9hdCk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPEZFQ29tcG9zaXRlPj4gZGVjb2RlKERl
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IGU2MWFjOGY5NTdiNDI3YTA2
ODBmZTUzY2IzNDcxMmIyMWE0YzNmYzkuLjZkNGQ4OTEwZmQwZjdmMDhiYjM3YWExMGU4ZTY1NjVl
OTI0NGM3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtNjMsNTUgKzYzLDU1IEBA
IHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtl
cm5lbCkKICAgICBtX2tlcm5lbE1hdHJpeCA9IGtlcm5lbDsgCiB9CiAKLWJvb2wgRkVDb252b2x2
ZU1hdHJpeDo6c2V0RGl2aXNvcihmbG9hdCBkaXZpc29yKQorRmlsdGVySW52YWxpZGF0aW9uIEZF
Q29udm9sdmVNYXRyaXg6OnNldERpdmlzb3IoZmxvYXQgZGl2aXNvcikKIHsKICAgICBBU1NFUlQo
ZGl2aXNvcik7CiAgICAgaWYgKG1fZGl2aXNvciA9PSBkaXZpc29yKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAgICAgbV9k
aXZpc29yID0gZGl2aXNvcjsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52
YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCi1ib29sIEZFQ29udm9sdmVNYXRyaXg6OnNldEJpYXMo
ZmxvYXQgYmlhcykKK0ZpbHRlckludmFsaWRhdGlvbiBGRUNvbnZvbHZlTWF0cml4OjpzZXRCaWFz
KGZsb2F0IGJpYXMpCiB7CiAgICAgaWYgKG1fYmlhcyA9PSBiaWFzKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAgICAgbV9i
aWFzID0gYmlhczsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0
aW9uOjpSZXBhaW50OwogfQogCi1ib29sIEZFQ29udm9sdmVNYXRyaXg6OnNldFRhcmdldE9mZnNl
dChjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0KQorRmlsdGVySW52YWxpZGF0aW9uIEZFQ29u
dm9sdmVNYXRyaXg6OnNldFRhcmdldE9mZnNldChjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0
KQogewogICAgIGlmIChtX3RhcmdldE9mZnNldCA9PSB0YXJnZXRPZmZzZXQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAg
ICBtX3RhcmdldE9mZnNldCA9IHRhcmdldE9mZnNldDsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCi1ib29sIEZFQ29udm9sdmVN
YXRyaXg6OnNldEVkZ2VNb2RlKEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSkKK0ZpbHRlckludmFsaWRh
dGlvbiBGRUNvbnZvbHZlTWF0cml4OjpzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUgZWRnZU1vZGUp
CiB7CiAgICAgaWYgKG1fZWRnZU1vZGUgPT0gZWRnZU1vZGUpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX2VkZ2VN
b2RlID0gZWRnZU1vZGU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFs
aWRhdGlvbjo6UmVwYWludDsKIH0KIAotYm9vbCBGRUNvbnZvbHZlTWF0cml4OjpzZXRLZXJuZWxV
bml0TGVuZ3RoKGNvbnN0IEZsb2F0UG9pbnQmIGtlcm5lbFVuaXRMZW5ndGgpCitGaWx0ZXJJbnZh
bGlkYXRpb24gRkVDb252b2x2ZU1hdHJpeDo6c2V0S2VybmVsVW5pdExlbmd0aChjb25zdCBGbG9h
dFBvaW50JiBrZXJuZWxVbml0TGVuZ3RoKQogewogICAgIEFTU0VSVChrZXJuZWxVbml0TGVuZ3Ro
LngoKSA+IDApOwogICAgIEFTU0VSVChrZXJuZWxVbml0TGVuZ3RoLnkoKSA+IDApOwogICAgIGlm
IChtX2tlcm5lbFVuaXRMZW5ndGggPT0ga2VybmVsVW5pdExlbmd0aCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1f
a2VybmVsVW5pdExlbmd0aCA9IGtlcm5lbFVuaXRMZW5ndGg7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAotYm9vbCBGRUNvbnZv
bHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKGJvb2wgcHJlc2VydmVBbHBoYSkKK0ZpbHRlcklu
dmFsaWRhdGlvbiBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKGJvb2wgcHJlc2Vy
dmVBbHBoYSkKIHsKICAgICBpZiAobV9wcmVzZXJ2ZUFscGhhID09IHByZXNlcnZlQWxwaGEpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6
Tm9uZTsKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAKIEZsb2F0
UmVjdCBGRUNvbnZvbHZlTWF0cml4OjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiBm
aWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRp
dmVTdWJyZWdpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCmluZGV4IDA3NTQ1Yjg3NDhk
MWZlOWNkNDVjMDAxN2E3MjFhZmQ0ZDc4ZmE0OTAuLmNmN2MxYjI1Zjg3NThkNmMyMzU4ZTIxY2Q1
MmU3NDRhM2I4MDdjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCkBAIC00NywyMiArNDcsMjIg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0S2VybmVsKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKIAog
ICAgIGZsb2F0IGRpdmlzb3IoKSBjb25zdCB7IHJldHVybiBtX2Rpdmlzb3I7IH0KLSAgICBib29s
IHNldERpdmlzb3IoZmxvYXQpOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXREaXZpc29yKGZs
b2F0KTsKIAogICAgIGZsb2F0IGJpYXMoKSBjb25zdCB7IHJldHVybiBtX2JpYXM7IH0KLSAgICBi
b29sIHNldEJpYXMoZmxvYXQpOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRCaWFzKGZsb2F0
KTsKIAogICAgIEludFBvaW50IHRhcmdldE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0
T2Zmc2V0OyB9Ci0gICAgYm9vbCBzZXRUYXJnZXRPZmZzZXQoY29uc3QgSW50UG9pbnQmKTsKKyAg
ICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0VGFyZ2V0T2Zmc2V0KGNvbnN0IEludFBvaW50Jik7CiAK
ICAgICBFZGdlTW9kZVR5cGUgZWRnZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VNb2RlOyB9
Ci0gICAgYm9vbCBzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUpOworICAgIEZpbHRlckludmFsaWRh
dGlvbiBzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUpOwogCiAgICAgRmxvYXRQb2ludCBrZXJuZWxV
bml0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoOyB9Ci0gICAgYm9v
bCBzZXRLZXJuZWxVbml0TGVuZ3RoKGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICBGaWx0ZXJJbnZh
bGlkYXRpb24gc2V0S2VybmVsVW5pdExlbmd0aChjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICBi
b29sIHByZXNlcnZlQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlQWxwaGE7IH0KLSAg
ICBib29sIHNldFByZXNlcnZlQWxwaGEoYm9vbCk7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNl
dFByZXNlcnZlQWxwaGEoYm9vbCk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UmVmPEZFQ29udm9sdmVNYXRyaXg+PiBkZWNvZGUoRGVjb2RlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpZmZ1c2VMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAppbmRleCAyMGQwMTNjODUzZjExMjBiNGJiZjc4
MGRmZjFmNTA4ODRiOTJmMDFkLi4wNTk3YzZhYzQ1MWExMTgxNTNlNWQ4MWU0OGY3NWJkZGQwMmZh
ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIEZF
RGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1c2VMaWdodGluZyhjb25zdCBDb2xvciYgbGlnaHRpbmdD
b2xvciwgZmxvYXQgc3VyZmFjZVNjCiB7CiB9CiAKLWJvb2wgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dERpZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29uc3RhbnQpCitGaWx0ZXJJbnZhbGlkYXRp
b24gRkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29u
c3RhbnQpCiB7CiAgICAgaWYgKG1fZGlmZnVzZUNvbnN0YW50ID09IGRpZmZ1c2VDb25zdGFudCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9u
OjpOb25lOwogICAgIG1fZGlmZnVzZUNvbnN0YW50ID0gZGlmZnVzZUNvbnN0YW50OwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAK
IFRleHRTdHJlYW0mIEZFRGlmZnVzZUxpZ2h0aW5nOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzLCBGaWx0ZXJSZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvbikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aWZmdXNlTGlnaHRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaWZmdXNlTGlnaHRpbmcuaAppbmRleCBiMmRmMmQxNTFjZjBkMDNjZjU1OTAwNWEzZmIy
NDJjMjY2N2FlNzMyLi45NTcwODU3ZTM4M2RjMDcwYTg1MGI2ODc3Y2YwNzEwMGE2ZDA0MWJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlm
ZnVzZUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpZmZ1c2VMaWdodGluZy5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEZFRGlmZnVzZUxpZ2h0aW5nPiBjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5n
Q29sb3IsIGZsb2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJj
ZT4mJik7CiAKICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX2Rp
ZmZ1c2VDb25zdGFudDsgfQotICAgIGJvb2wgc2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKKyAg
ICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0RGlmZnVzZUNvbnN0YW50KGZsb2F0KTsKIAogICAgIFdU
Rjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBG
aWx0ZXJSZXByZXNlbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVu
dE1hcC5jcHAKaW5kZXggNDkwOTliNjM3NjM5ODRhODE2MzhiY2M3YjlhNzgxN2ZjMDIyNTVjNi4u
ZjY3ODNhNGVhNzY2YTEwOTY4NGVhYzEzOTY3Yzk2ZTYzMThkMzg3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3Bs
YWNlbWVudE1hcC5jcHAKQEAgLTQ0LDI4ICs0NCwyOCBAQCBGRURpc3BsYWNlbWVudE1hcDo6RkVE
aXNwbGFjZW1lbnRNYXAoQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFu
bgogewogfQogCi1ib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRYQ2hhbm5lbFNlbGVjdG9yKGNv
bnN0IENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcikKK0ZpbHRlckludmFsaWRh
dGlvbiBGRURpc3BsYWNlbWVudE1hcDo6c2V0WENoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVs
U2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IpCiB7CiAgICAgaWYgKG1feENoYW5uZWxTZWxl
Y3RvciA9PSB4Q2hhbm5lbFNlbGVjdG9yKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAgICAgbV94Q2hhbm5lbFNlbGVjdG9y
ID0geENoYW5uZWxTZWxlY3RvcjsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVy
SW52YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCi1ib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRZ
Q2hhbm5lbFNlbGVjdG9yKGNvbnN0IENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3Rv
cikKK0ZpbHRlckludmFsaWRhdGlvbiBGRURpc3BsYWNlbWVudE1hcDo6c2V0WUNoYW5uZWxTZWxl
Y3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IpCiB7CiAgICAg
aWYgKG1feUNoYW5uZWxTZWxlY3RvciA9PSB5Q2hhbm5lbFNlbGVjdG9yKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAgICAg
bV95Q2hhbm5lbFNlbGVjdG9yID0geUNoYW5uZWxTZWxlY3RvcjsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCi1ib29sIEZFRGlz
cGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzY2FsZSkKK0ZpbHRlckludmFsaWRhdGlvbiBG
RURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgc2NhbGUpCiB7CiAgICAgaWYgKG1fc2Nh
bGUgPT0gc2NhbGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRl
ckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX3NjYWxlID0gc2NhbGU7Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAogRmxvYXRS
ZWN0IEZFRGlzcGxhY2VtZW50TWFwOjpjYWxjdWxhdGVJbWFnZVJlY3QoY29uc3QgRmlsdGVyJiBm
aWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJiwgY29uc3QgRmxvYXRSZWN0JiBwcmltaXRp
dmVTdWJyZWdpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKaW5kZXggZDhmY2RmZGEx
ZGQ2MzM3NTM5YTZjMDUzM2I2NDMwZDMwMDZjZGU4Yy4uZDA0NTVlMWE2Yzg3MTk3OWNhYzBmZDJi
YTQxMDAxMmNiYmVkODA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaApAQCAtNDAsMTMgKzQw
LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFRGlzcGxhY2Vt
ZW50TWFwPiBjcmVhdGUoQ2hhbm5lbFNlbGVjdG9yVHlwZSB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFu
bmVsU2VsZWN0b3JUeXBlIHlDaGFubmVsU2VsZWN0b3IsIGZsb2F0IHNjYWxlKTsKIAogICAgIENo
YW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1feENo
YW5uZWxTZWxlY3RvcjsgfQotICAgIGJvb2wgc2V0WENoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFu
bmVsU2VsZWN0b3JUeXBlKTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0WENoYW5uZWxTZWxl
Y3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBlKTsKIAogICAgIENoYW5uZWxTZWxlY3RvclR5
cGUgeUNoYW5uZWxTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1feUNoYW5uZWxTZWxlY3Rvcjsg
fQotICAgIGJvb2wgc2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFubmVsU2VsZWN0b3JUeXBl
KTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0WUNoYW5uZWxTZWxlY3Rvcihjb25zdCBDaGFu
bmVsU2VsZWN0b3JUeXBlKTsKIAogICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9z
Y2FsZTsgfQotICAgIGJvb2wgc2V0U2NhbGUoZmxvYXQpOworICAgIEZpbHRlckludmFsaWRhdGlv
biBzZXRTY2FsZShmbG9hdCk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVmPEZFRGlzcGxhY2VtZW50TWFwPj4gZGVjb2RlKERlY29kZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
cm9wU2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEcm9wU2hhZG93LmNwcAppbmRleCA2MWQ5NzcyMWUyZDA5ZTg1Njg0M2E3NDMzNGRiNDI4YWU3
NzI1ZTk4Li4wY2E3ZTAxMzIyYjUzYmNkNTY1MjNiOWYwZGUxNmIyNjc4NDBkOWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURy
b3BTaGFkb3cuY3BwCkBAIC00NSw2ICs0NSw1NCBAQCBGRURyb3BTaGFkb3c6OkZFRHJvcFNoYWRv
dyhmbG9hdCBzdGRYLCBmbG9hdCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbAog
ewogfQogCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVEcm9wU2hhZG93OjpzZXRTdGREZXZpYXRpb25Y
KGZsb2F0IHN0ZFgpCit7CisgICAgaWYgKG1fc3RkWCA9PSBzdGRYKQorICAgICAgICByZXR1cm4g
RmlsdGVySW52YWxpZGF0aW9uOjpOb25lOworICAgIG1fc3RkWCA9IHN0ZFg7CisgICAgcmV0dXJu
IEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKK30KKworRmlsdGVySW52YWxpZGF0aW9uIEZF
RHJvcFNoYWRvdzo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCBzdGRZKQoreworICAgIGlmIChtX3N0
ZFkgPT0gc3RkWSkKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKKyAg
ICBtX3N0ZFkgPSBzdGRZOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7
Cit9CisKK0ZpbHRlckludmFsaWRhdGlvbiBGRURyb3BTaGFkb3c6OnNldER4KGZsb2F0IGR4KQor
eworICAgIGlmIChtX2R4ID09IGR4KQorICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9u
OjpOb25lOworICAgIG1fZHggPSBkeDsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpS
ZXBhaW50OworfQorCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVEcm9wU2hhZG93OjpzZXREeShmbG9h
dCBkeSkKK3sKKyAgICBpZiAobV9keSA9PSBkeSkKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFs
aWRhdGlvbjo6Tm9uZTsKKyAgICBtX2R5ID0gZHk7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRh
dGlvbjo6UmVwYWludDsKK30KKworRmlsdGVySW52YWxpZGF0aW9uIEZFRHJvcFNoYWRvdzo6c2V0
U2hhZG93Q29sb3IoY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKQoreworICAgIGlmIChtX3NoYWRv
d0NvbG9yID09IHNoYWRvd0NvbG9yKQorICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9u
OjpOb25lOworICAgIG1fc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xvcjsKKyAgICByZXR1cm4gRmls
dGVySW52YWxpZGF0aW9uOjpSZXBhaW50OworfQorCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVEcm9w
U2hhZG93OjpzZXRTaGFkb3dPcGFjaXR5KGZsb2F0IHNoYWRvd09wYWNpdHkpCit7CisgICAgaWYg
KG1fc2hhZG93T3BhY2l0eSA9PSBzaGFkb3dPcGFjaXR5KQorICAgICAgICByZXR1cm4gRmlsdGVy
SW52YWxpZGF0aW9uOjpOb25lOworICAgIG1fc2hhZG93T3BhY2l0eSA9IHNoYWRvd09wYWNpdHk7
CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKK30KKwogRmxvYXRSZWN0
IEZFRHJvcFNoYWRvdzo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBj
b25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2
ZVN1YnJlZ2lvbikgY29uc3QKIHsKICAgICBhdXRvIGltYWdlUmVjdCA9IGlucHV0c1swXS0+aW1h
Z2VSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRHJvcFNoYWRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURyb3BTaGFkb3cuaAppbmRleCA3YTIwYjMyZjJkODA5OGI5ZmI1N2RkNTlhOGFl
NTIzMTcyMzQyOGNmLi5lOGNmNjA5YWY3NzZmNGQzYjU1YTBlYTRjN2Q3YmMwNDNlMTgzM2EwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJv
cFNoYWRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEcm9wU2hhZG93LmgKQEAgLTMwLDIyICszMCwyMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxGRURyb3BTaGFkb3c+IGNyZWF0ZShmbG9hdCBzdGRYLCBmbG9hdCBz
dGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgZmxvYXQg
c2hhZG93T3BhY2l0eSk7CiAKICAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3QgeyByZXR1
cm4gbV9zdGRYOyB9Ci0gICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0IHN0ZFgpIHsgbV9z
dGRYID0gc3RkWDsgfQorICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRTdGREZXZpYXRpb25YKGZs
b2F0KTsKIAogICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdCB7IHJldHVybiBtX3N0ZFk7
IH0KLSAgICB2b2lkIHNldFN0ZERldmlhdGlvblkoZmxvYXQgc3RkWSkgeyBtX3N0ZFkgPSBzdGRZ
OyB9CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFN0ZERldmlhdGlvblkoZmxvYXQpOwogCiAg
ICAgZmxvYXQgZHgoKSBjb25zdCB7IHJldHVybiBtX2R4OyB9Ci0gICAgdm9pZCBzZXREeChmbG9h
dCBkeCkgeyBtX2R4ID0gZHg7IH0KKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0RHgoZmxvYXQp
OwogCiAgICAgZmxvYXQgZHkoKSBjb25zdCB7IHJldHVybiBtX2R5OyB9Ci0gICAgdm9pZCBzZXRE
eShmbG9hdCBkeSkgeyBtX2R5ID0gZHk7IH0KKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0RHko
ZmxvYXQpOwogCiAgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9zaGFkb3dDb2xvcjsgfSAKLSAgICB2b2lkIHNldFNoYWRvd0NvbG9yKGNvbnN0IENvbG9yJiBz
aGFkb3dDb2xvcikgeyBtX3NoYWRvd0NvbG9yID0gc2hhZG93Q29sb3I7IH0KKyAgICBGaWx0ZXJJ
bnZhbGlkYXRpb24gc2V0U2hhZG93Q29sb3IoY29uc3QgQ29sb3ImKTsKIAogICAgIGZsb2F0IHNo
YWRvd09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd09wYWNpdHk7IH0KLSAgICB2b2lk
IHNldFNoYWRvd09wYWNpdHkoZmxvYXQgc2hhZG93T3BhY2l0eSkgeyBtX3NoYWRvd09wYWNpdHkg
PSBzaGFkb3dPcGFjaXR5OyB9CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFNoYWRvd09wYWNp
dHkoZmxvYXQpOwogCiAgICAgc3RhdGljIEludE91dHNldHMgY2FsY3VsYXRlT3V0c2V0cyhjb25z
dCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBzdGREZXZpYXRpb24pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxv
b2QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmNwcAppbmRleCBjNGMxYTFmZjdjN2YxOWIzMGE1YzY4YWU3OWU4YzQyZDkxMjQzNTlmLi5lMjEx
M2ExNTIxNTFjYmU0MzE4N2ZjODNjN2UyNGJjM2EyNGRmNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKQEAgLTQzLDIw
ICs0MywyMCBAQCBGRUZsb29kOjpGRUZsb29kKGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBmbG9h
dCBmbG9vZE9wYWNpdHkpCiB7CiB9CiAKLWJvb2wgRkVGbG9vZDo6c2V0Rmxvb2RDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVGbG9vZDo6c2V0Rmxvb2RDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKG1fZmxvb2RDb2xvciA9PSBjb2xvcikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9u
OjpOb25lOwogICAgIG1fZmxvb2RDb2xvciA9IGNvbG9yOwotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAKLWJvb2wgRkVGbG9vZDo6
c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb29kT3BhY2l0eSkKK0ZpbHRlckludmFsaWRhdGlvbiBG
RUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQogewogICAgIGlmICht
X2Zsb29kT3BhY2l0eSA9PSBmbG9vZE9wYWNpdHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX2Zsb29kT3BhY2l0
eSA9IGZsb29kT3BhY2l0eTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52
YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCiBGbG9hdFJlY3QgRkVGbG9vZDo6Y2FsY3VsYXRlSW1h
Z2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIGNv
bnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAppbmRleCA1M2Q0Y2M1
ZjlkZjE3YTE1OTMxODgwZjk1YWI3YmNkZjdhZjAwZDBiLi43NmRiZmI3NmI0ZjI0NDVlN2NhODkx
MmE1ZmNhNGI4YjIyYzY1NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaApAQCAtMzIsMTAgKzMyLDEwIEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFRmxvb2Q+IGNyZWF0ZShjb25zdCBDb2xvciYg
Zmxvb2RDb2xvciwgZmxvYXQgZmxvb2RPcGFjaXR5KTsKIAogICAgIGNvbnN0IENvbG9yJiBmbG9v
ZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mbG9vZENvbG9yOyB9Ci0gICAgYm9vbCBzZXRGbG9v
ZENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldEZsb29kQ29s
b3IoY29uc3QgQ29sb3ImKTsKIAogICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmxvb2RPcGFjaXR5OyB9Ci0gICAgYm9vbCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQpOwor
ICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRGbG9vZE9wYWNpdHkoZmxvYXQpOwogCiAjaWYgIVVT
RShDRykKICAgICAvLyBmZUZsb29kIGRvZXMgbm90IHBlcmZvcm0gY29sb3IgaW50ZXJwb2xhdGlv
biBvZiBhbnkga2luZCwgc28gdGhlIHJlc3VsdCBpcyBhbHdheXMgaW4gdGhlIGN1cnJlbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggNjk0NzUzY2Y0Yzc1ODBhZDg4OWNjZDNlYjdlOTY0OTFj
ZGJlMjIzYi4uMmMzODdlNjQ3ZDQxNDBkYzhiNzY4ZWQ1NDI0MDdiN2QxNGNjOTUzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKQEAgLTQ1LDE5ICs0NSwyOCBAQCBGRUdhdXNzaWFuQmx1cjo6RkVH
YXVzc2lhbkJsdXIoZmxvYXQgeCwgZmxvYXQgeSwgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQogewog
fQogCi12b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25YKGZsb2F0IHgpCitGaWx0
ZXJJbnZhbGlkYXRpb24gRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblgoZmxvYXQgc3Rk
WCkKIHsKLSAgICBtX3N0ZFggPSB4OworICAgIGlmIChtX3N0ZFggPT0gc3RkWCkKKyAgICAgICAg
cmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKKyAgICBtX3N0ZFggPSBzdGRYOworICAg
IHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAKLXZvaWQgRkVHYXVzc2lh
bkJsdXI6OnNldFN0ZERldmlhdGlvblkoZmxvYXQgeSkKK0ZpbHRlckludmFsaWRhdGlvbiBGRUdh
dXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9uWShmbG9hdCBzdGRZKQogewotICAgIG1fc3RkWSA9
IHk7CisgICAgaWYgKG1fc3RkWSA9PSBzdGRZKQorICAgICAgICByZXR1cm4gRmlsdGVySW52YWxp
ZGF0aW9uOjpOb25lOworICAgIG1fc3RkWSA9IHN0ZFk7CisgICAgcmV0dXJuIEZpbHRlckludmFs
aWRhdGlvbjo6UmVwYWludDsKIH0KIAotdm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0RWRnZU1vZGUo
RWRnZU1vZGVUeXBlIGVkZ2VNb2RlKQorRmlsdGVySW52YWxpZGF0aW9uIEZFR2F1c3NpYW5CbHVy
OjpzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUgZWRnZU1vZGUpCiB7CisgICAgaWYgKG1fZWRnZU1v
ZGUgPT0gZWRnZU1vZGUpCisgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7
CiAgICAgbV9lZGdlTW9kZSA9IGVkZ2VNb2RlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRp
b246OlJlcGFpbnQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQgZ2F1c3NpYW5LZXJuZWxGYWN0
b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5oCmluZGV4IDI0Y2I5MjZmNzY0OGQxYWZjNGQwODkzMmE0MjUy
MjNmMzQ4YmYwMGYuLjUzM2ZhOTZlZjIzY2VkZTVjNTQyZTc5Y2I1NmE1OGM3OWE0MzEzNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTMyLDEzICszMiwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxGRUdhdXNzaWFuQmx1cj4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0
IHksIEVkZ2VNb2RlVHlwZSk7CiAKICAgICBmbG9hdCBzdGREZXZpYXRpb25YKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGRYOyB9Ci0gICAgdm9pZCBzZXRTdGREZXZpYXRpb25YKGZsb2F0KTsKKyAgICBG
aWx0ZXJJbnZhbGlkYXRpb24gc2V0U3RkRGV2aWF0aW9uWChmbG9hdCk7CiAKICAgICBmbG9hdCBz
dGREZXZpYXRpb25ZKCkgY29uc3QgeyByZXR1cm4gbV9zdGRZOyB9Ci0gICAgdm9pZCBzZXRTdGRE
ZXZpYXRpb25ZKGZsb2F0KTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0U3RkRGV2aWF0aW9u
WShmbG9hdCk7CiAKICAgICBFZGdlTW9kZVR5cGUgZWRnZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2VkZ2VNb2RlOyB9Ci0gICAgdm9pZCBzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUpOworICAgIEZp
bHRlckludmFsaWRhdGlvbiBzZXRFZGdlTW9kZShFZGdlTW9kZVR5cGUpOwogCiAgICAgc3RhdGlj
IEludFNpemUgY2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0ZXImLCBGbG9hdFNpemUgc3Rk
RGV2aWF0aW9uKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNp
emUoRmxvYXRTaXplIHN0ZERldmlhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAppbmRleCBlYjQ5Yjc1ZDRl
YjNkNjRjYzBjZGJlMGU3MzhkMDI1Mjg2YTdiNzkzLi5kNTcxYWE2Y2I5NzgxM2IwYjE5YWJlNjIx
MTBmODQxMThlOTI2Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKQEAgLTQ2LDQwICs0NiwzNiBAQCBGRUxp
Z2h0aW5nOjpGRUxpZ2h0aW5nKFR5cGUgdHlwZSwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3Is
IGZsb2F0IHN1cmZhY2VTY2FsZQogewogfQogCi1ib29sIEZFTGlnaHRpbmc6OnNldFN1cmZhY2VT
Y2FsZShmbG9hdCBzdXJmYWNlU2NhbGUpCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVMaWdodGluZzo6
c2V0U3VyZmFjZVNjYWxlKGZsb2F0IHN1cmZhY2VTY2FsZSkKIHsKICAgICBpZiAobV9zdXJmYWNl
U2NhbGUgPT0gc3VyZmFjZVNjYWxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAgICAg
cmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX3N1cmZhY2VTY2FsZSA9IHN1
cmZhY2VTY2FsZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0
aW9uOjpSZXBhaW50OwogfQogCi1ib29sIEZFTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29sb3IoY29u
c3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IpCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVMaWdodGluZzo6
c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xvcikKIHsKICAgICBpZiAo
bV9saWdodGluZ0NvbG9yID09IGxpZ2h0aW5nQ29sb3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQorICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fbGlnaHRp
bmdDb2xvciA9IGxpZ2h0aW5nQ29sb3I7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZp
bHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAotYm9vbCBGRUxpZ2h0aW5nOjpzZXRLZXJu
ZWxVbml0TGVuZ3RoWChmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWCkKK0ZpbHRlckludmFsaWRhdGlv
biBGRUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCBrZXJuZWxVbml0TGVuZ3Ro
WCkKIHsKICAgICBpZiAobV9rZXJuZWxVbml0TGVuZ3RoWCA9PSBrZXJuZWxVbml0TGVuZ3RoWCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRp
b246Ok5vbmU7CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWCA9IGtlcm5lbFVuaXRMZW5ndGhYOwot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7
CiB9CiAKLWJvb2wgRkVMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQga2VybmVs
VW5pdExlbmd0aFkpCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVMaWdodGluZzo6c2V0S2VybmVsVW5p
dExlbmd0aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCiB7CiAgICAgaWYgKG1fa2VybmVsVW5p
dExlbmd0aFkgPT0ga2VybmVsVW5pdExlbmd0aFkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQor
ICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fa2VybmVsVW5p
dExlbmd0aFkgPSBrZXJuZWxVbml0TGVuZ3RoWTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCiBGbG9hdFJlY3QgRkVMaWdodGlu
Zzo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJ
bWFnZVZlY3RvciYsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZlU3VicmVnaW9uKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGln
aHRpbmcuaAppbmRleCAwYzA3M2JjMTNmOGNmMzY2ZjljZjY2MWNiMjYzNDM5NjhlMmQyMWRhLi5m
MDNiMDcxZDdlY2QyMGRmNmRiODlhMzJmNjIzYTE2MWQzZWNmNTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApAQCAt
NDAsMjAgKzQwLDIwIEBAIHN0cnVjdCBGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbjsKIGNs
YXNzIEZFTGlnaHRpbmcgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICBjb25z
dCBDb2xvciYgbGlnaHRpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlnaHRpbmdDb2xvcjsg
fQotICAgIGJvb2wgc2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYpOworICAgIEZpbHRlcklu
dmFsaWRhdGlvbiBzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJik7CiAKICAgICBmbG9hdCBz
dXJmYWNlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2VTY2FsZTsgfQotICAgIGJvb2wg
c2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0U3VyZmFj
ZVNjYWxlKGZsb2F0KTsKIAogICAgIGZsb2F0IGRpZmZ1c2VDb25zdGFudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlmZnVzZUNvbnN0YW50OyB9CiAgICAgZmxvYXQgc3BlY3VsYXJDb25zdGFudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJDb25zdGFudDsgfQogICAgIGZsb2F0IHNwZWN1bGFyRXhw
b25lbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyRXhwb25lbnQ7IH0KIAogICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWDsg
fQotICAgIGJvb2wgc2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQpOworICAgIEZpbHRlckludmFs
aWRhdGlvbiBzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCk7CiAKICAgICBmbG9hdCBrZXJuZWxV
bml0TGVuZ3RoWSgpIGNvbnN0IHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFk7IH0KLSAgICBi
b29sIHNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0KTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24g
c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQpOwogCiAgICAgY29uc3QgTGlnaHRTb3VyY2UmIGxp
Z2h0U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9saWdodFNvdXJjZS5nZXQoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhv
bG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9y
cGhvbG9neS5jcHAKaW5kZXggY2E2ZTUwNTE1NWRjMjgwOGMzMWNhNDVkMWYxMDFjNDc1OWQ0ZDhm
ZS4uZGQzNjliZDc0MDNhZjZkZmYwMjJlNmE5ZTJlNzkwYTkyN2QxM2U0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcApAQCAtNDQsMjggKzQ0LDI4IEBAIEZFTW9ycGhvbG9neTo6RkVNb3JwaG9sb2d5KE1v
cnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkCiB7CiB9
CiAKLWJvb2wgRkVNb3JwaG9sb2d5OjpzZXRNb3JwaG9sb2d5T3BlcmF0b3IoTW9ycGhvbG9neU9w
ZXJhdG9yVHlwZSB0eXBlKQorRmlsdGVySW52YWxpZGF0aW9uIEZFTW9ycGhvbG9neTo6c2V0TW9y
cGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgdHlwZSkKIHsKICAgICBpZiAo
bV90eXBlID09IHR5cGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZp
bHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX3R5cGUgPSB0eXBlOwotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAKLWJvb2wg
RkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNYKGZsb2F0IHJhZGl1c1gpCitGaWx0ZXJJbnZhbGlkYXRp
b24gRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNYKGZsb2F0IHJhZGl1c1gpCiB7CiAgICAgaWYgKG1f
cmFkaXVzWCA9PSByYWRpdXNYKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAgICAgbV9yYWRpdXNYID0gcmFkaXVzWDsKLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50Owog
fQogCi1ib29sIEZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQorRmlsdGVy
SW52YWxpZGF0aW9uIEZFTW9ycGhvbG9neTo6c2V0UmFkaXVzWShmbG9hdCByYWRpdXNZKQogewog
ICAgIGlmIChtX3JhZGl1c1kgPT0gcmFkaXVzWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fcmFkaXVzWSA9IHJh
ZGl1c1k7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6
UmVwYWludDsKIH0KIAogRmxvYXRSZWN0IEZFTW9ycGhvbG9neTo6Y2FsY3VsYXRlSW1hZ2VSZWN0
KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYgaW5wdXRzLCBj
b25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCmlu
ZGV4IDJmNmI2MjM4MTk2MGU0NzVlODlmNDY5ZTViNzc2MmRmMmJjOWVhOTguLjYyZDY3YjlhY2Zi
MGNiODFiOTU4YzNhZmM5NTE2YWZjNDkyMzc5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaApAQCAtMzcsMTMg
KzM3LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZFTW9ycGhv
bG9neT4gY3JlYXRlKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0
IHJhZGl1c1kpOwogCiAgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBtb3JwaG9sb2d5T3BlcmF0
b3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBib29sIHNldE1vcnBob2xvZ3lPcGVy
YXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0
TW9ycGhvbG9neU9wZXJhdG9yKE1vcnBob2xvZ3lPcGVyYXRvclR5cGUpOwogCiAgICAgZmxvYXQg
cmFkaXVzWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWDsgfQotICAgIGJvb2wgc2V0UmFkaXVz
WChmbG9hdCk7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFJhZGl1c1goZmxvYXQpOwogCiAg
ICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWTsgfQotICAgIGJvb2wg
c2V0UmFkaXVzWShmbG9hdCk7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFJhZGl1c1koZmxv
YXQpOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJlZjxGRU1vcnBob2xvZ3k+PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCA4Njlk
Y2Y2YzU4ZDI4MzVlM2NkZmFlNWI3ODdjMmU2YTliOWY5NDY3Li42ZDNhNWQ5YzNhNWI1MjhiYTg0
N2FkZDBiNjA0NzFlM2VkODRlYjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtNDMsMTQgKzQzLDIwIEBAIEZF
T2Zmc2V0OjpGRU9mZnNldChmbG9hdCBkeCwgZmxvYXQgZHkpCiB7CiB9CiAKLXZvaWQgRkVPZmZz
ZXQ6OnNldER4KGZsb2F0IGR4KQorRmlsdGVySW52YWxpZGF0aW9uIEZFT2Zmc2V0OjpzZXREeChm
bG9hdCBkeCkKIHsKKyAgICBpZiAobV9keCA9PSBkeCkKKyAgICAgICAgcmV0dXJuIEZpbHRlcklu
dmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX2R4ID0gZHg7CisgICAgcmV0dXJuIEZpbHRlckludmFs
aWRhdGlvbjo6UmVwYWludDsKIH0KIAotdm9pZCBGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCitG
aWx0ZXJJbnZhbGlkYXRpb24gRkVPZmZzZXQ6OnNldER5KGZsb2F0IGR5KQogeworICAgIGlmICht
X2R5ID09IGR5KQorICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAg
IG1fZHkgPSBkeTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50OwogfQog
CiBGbG9hdFJlY3QgRkVPZmZzZXQ6OmNhbGN1bGF0ZUltYWdlUmVjdChjb25zdCBGaWx0ZXImIGZp
bHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImIGlucHV0cywgY29uc3QgRmxvYXRSZWN0JiBw
cmltaXRpdmVTdWJyZWdpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKaW5kZXggMWIyNDY4NDE5Mzc2MzNhNWFhYjNm
YjYwYzE0Yjc5NTI1MWU2MGM1Mi4uOGY2YzQ1Yjc3MzQwZjdmYmFiOTViNmU4N2ZlNmM5OWMxMGYx
MjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU9mZnNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuaApAQCAtMzEsMTAgKzMxLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEZFT2Zmc2V0PiBjcmVhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KTsKIAog
ICAgIGZsb2F0IGR4KCkgY29uc3QgeyByZXR1cm4gbV9keDsgfQotICAgIHZvaWQgc2V0RHgoZmxv
YXQpOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXREeChmbG9hdCk7CiAKICAgICBmbG9hdCBk
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZHk7IH0KLSAgICB2b2lkIHNldER5KGZsb2F0KTsKKyAgICBG
aWx0ZXJJbnZhbGlkYXRpb24gc2V0RHkoZmxvYXQpOwogCiAgICAgc3RhdGljIEludE91dHNldHMg
Y2FsY3VsYXRlT3V0c2V0cyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcAppbmRleCA5ODQ5MmQ4MmYwYTRkYWI3OGMzNDQzMjg0M2FkOTA1ZTdi
Y2Q1MDM2Li45MDQxNzQ0YzdiMmFhYjEwYWJjZDc0YjA4ZjdjZWE4ZGNiM2JjMmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJM
aWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCkBAIC00NCwyMCArNDQsMjAgQEAgRkVTcGVjdWxhckxp
Z2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmcoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZs
b2F0IHN1cmZhY2UKIHsKIH0KIAotYm9vbCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFy
Q29uc3RhbnQoZmxvYXQgc3BlY3VsYXJDb25zdGFudCkKK0ZpbHRlckludmFsaWRhdGlvbiBGRVNw
ZWN1bGFyTGlnaHRpbmc6OnNldFNwZWN1bGFyQ29uc3RhbnQoZmxvYXQgc3BlY3VsYXJDb25zdGFu
dCkKIHsKICAgICBpZiAobV9zcGVjdWxhckNvbnN0YW50ID09IHNwZWN1bGFyQ29uc3RhbnQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6
Tm9uZTsKICAgICBtX3NwZWN1bGFyQ29uc3RhbnQgPSBzcGVjdWxhckNvbnN0YW50OwotICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAK
LWJvb2wgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0IHNwZWN1
bGFyRXhwb25lbnQpCitGaWx0ZXJJbnZhbGlkYXRpb24gRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRT
cGVjdWxhckV4cG9uZW50KGZsb2F0IHNwZWN1bGFyRXhwb25lbnQpCiB7CiAgICAgaWYgKG1fc3Bl
Y3VsYXJFeHBvbmVudCA9PSBzcGVjdWxhckV4cG9uZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAgICAgbV9zcGVjdWxh
ckV4cG9uZW50ID0gc3BlY3VsYXJFeHBvbmVudDsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZXBhaW50OwogfQogCiBUZXh0U3RyZWFtJiBGRVNwZWN1
bGFyTGlnaHRpbmc6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIEZpbHRl
clJlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmgKaW5kZXggMTI0ZGIzY2VlMGY5MTE5M2NjYzIyM2E3MWM5YTNhYjczMzAzNDhkZi4uY2Rk
MjU1YTAxNmYwN2I2YjNmZGRiOTRiMjE5ZjExYmNhOWZmOWQzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3VsYXJM
aWdodGluZy5oCkBAIC0zMiwxMCArMzIsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8RkVT
cGVjdWxhckxpZ2h0aW5nPiBjcmVhdGUoY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZsb2F0
IHN1cmZhY2VTY2FsZSwgZmxvYXQgc3BlY3VsYXJDb25zdGFudCwgZmxvYXQgc3BlY3VsYXJFeHBv
bmVudCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFgsIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZLCBS
ZWY8TGlnaHRTb3VyY2U+JiYpOwogCiAgICAgZmxvYXQgc3BlY3VsYXJDb25zdGFudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlY3VsYXJDb25zdGFudDsgfQotICAgIGJvb2wgc2V0U3BlY3VsYXJDb25z
dGFudChmbG9hdCk7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFNwZWN1bGFyQ29uc3RhbnQo
ZmxvYXQpOwogCiAgICAgZmxvYXQgc3BlY3VsYXJFeHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3BlY3VsYXJFeHBvbmVudDsgfQotICAgIGJvb2wgc2V0U3BlY3VsYXJFeHBvbmVudChmbG9hdCk7
CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFNwZWN1bGFyRXhwb25lbnQoZmxvYXQpOwogCiAg
ICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVh
bSYsIEZpbHRlclJlcHJlc2VudGF0aW9uKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2Uu
Y3BwCmluZGV4IGQ0MTI5NzJhN2UyZDA5MjRiZjBlZjQ0YzQ1MjI0OTNlOTE3NjhhMTEuLjMwNTY4
ZTc3ZDY0ZmNmNjU0OWRkZDEwM2UwNDIzZmE2Y2I1NGM3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAK
QEAgLTQ4LDUyICs0OCw1MiBAQCBGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShUdXJidWxlbmNl
VHlwZSB0eXBlLCBmbG9hdCBiYXNlRnJlcXVlbmN5WCwgZmxvYXQgYmFzZQogewogfQogCi1ib29s
IEZFVHVyYnVsZW5jZTo6c2V0VHlwZShUdXJidWxlbmNlVHlwZSB0eXBlKQorRmlsdGVySW52YWxp
ZGF0aW9uIEZFVHVyYnVsZW5jZTo6c2V0VHlwZShUdXJidWxlbmNlVHlwZSB0eXBlKQogewogICAg
IGlmIChtX3R5cGUgPT0gdHlwZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fdHlwZSA9IHR5cGU7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAot
Ym9vbCBGRVR1cmJ1bGVuY2U6OnNldEJhc2VGcmVxdWVuY3lZKGZsb2F0IGJhc2VGcmVxdWVuY3lZ
KQorRmlsdGVySW52YWxpZGF0aW9uIEZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1ZW5jeVkoZmxv
YXQgYmFzZUZyZXF1ZW5jeVkpCiB7CiAgICAgaWYgKG1fYmFzZUZyZXF1ZW5jeVkgPT0gYmFzZUZy
ZXF1ZW5jeVkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlcklu
dmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX2Jhc2VGcmVxdWVuY3lZID0gYmFzZUZyZXF1ZW5jeVk7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWlu
dDsKIH0KIAotYm9vbCBGRVR1cmJ1bGVuY2U6OnNldEJhc2VGcmVxdWVuY3lYKGZsb2F0IGJhc2VG
cmVxdWVuY3lYKQorRmlsdGVySW52YWxpZGF0aW9uIEZFVHVyYnVsZW5jZTo6c2V0QmFzZUZyZXF1
ZW5jeVgoZmxvYXQgYmFzZUZyZXF1ZW5jeVgpCiB7CiAgICAgaWYgKG1fYmFzZUZyZXF1ZW5jeVgg
PT0gYmFzZUZyZXF1ZW5jeVgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX2Jhc2VGcmVxdWVuY3lYID0gYmFzZUZy
ZXF1ZW5jeVg7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlv
bjo6UmVwYWludDsKIH0KIAotYm9vbCBGRVR1cmJ1bGVuY2U6OnNldFNlZWQoZmxvYXQgc2VlZCkK
K0ZpbHRlckludmFsaWRhdGlvbiBGRVR1cmJ1bGVuY2U6OnNldFNlZWQoZmxvYXQgc2VlZCkKIHsK
ICAgICBpZiAobV9zZWVkID09IHNlZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX3NlZWQgPSBzZWVkOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9
CiAKLWJvb2wgRkVUdXJidWxlbmNlOjpzZXROdW1PY3RhdmVzKGludCBudW1PY3RhdmVzKQorRmls
dGVySW52YWxpZGF0aW9uIEZFVHVyYnVsZW5jZTo6c2V0TnVtT2N0YXZlcyhpbnQgbnVtT2N0YXZl
cykKIHsKICAgICBpZiAobV9udW1PY3RhdmVzID09IG51bU9jdGF2ZXMpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBt
X251bU9jdGF2ZXMgPSBudW1PY3RhdmVzOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBG
aWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAKLWJvb2wgRkVUdXJidWxlbmNlOjpzZXRT
dGl0Y2hUaWxlcyhib29sIHN0aXRjaCkKK0ZpbHRlckludmFsaWRhdGlvbiBGRVR1cmJ1bGVuY2U6
OnNldFN0aXRjaFRpbGVzKGJvb2wgc3RpdGNoKQogewogICAgIGlmIChtX3N0aXRjaFRpbGVzID09
IHN0aXRjaCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVySW52
YWxpZGF0aW9uOjpOb25lOwogICAgIG1fc3RpdGNoVGlsZXMgPSBzdGl0Y2g7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAogRmxv
YXRSZWN0IEZFVHVyYnVsZW5jZTo6Y2FsY3VsYXRlSW1hZ2VSZWN0KGNvbnN0IEZpbHRlciYgZmls
dGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3RvciYsIGNvbnN0IEZsb2F0UmVjdCYgcHJpbWl0aXZl
U3VicmVnaW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKaW5kZXggZTgwODdjMzAwMmE2Njc4ZjBlNzMx
MzkwNWRkZDU0ODEzZTczZGUwZC4uYjA4OTIzNzlmN2E5NTgwMzhhMDVkYzM2NmRiMmJiZmE2ZTli
OGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVR1cmJ1bGVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCkBAIC00MCwyMiArNDAsMjIgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RkVUdXJidWxlbmNlPiBjcmVhdGUoVHVyYnVsZW5jZVR5
cGUsIGZsb2F0IGJhc2VGcmVxdWVuY3lYLCBmbG9hdCBiYXNlRnJlcXVlbmN5WSwgaW50IG51bU9j
dGF2ZXMsIGZsb2F0IHNlZWQsIGJvb2wgc3RpdGNoVGlsZXMpOwogCiAgICAgVHVyYnVsZW5jZVR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGJvb2wgc2V0VHlwZShUdXJi
dWxlbmNlVHlwZSk7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFR5cGUoVHVyYnVsZW5jZVR5
cGUpOwogCiAgICAgZmxvYXQgYmFzZUZyZXF1ZW5jeVgoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VG
cmVxdWVuY3lYOyB9Ci0gICAgYm9vbCBzZXRCYXNlRnJlcXVlbmN5WChmbG9hdCk7CisgICAgRmls
dGVySW52YWxpZGF0aW9uIHNldEJhc2VGcmVxdWVuY3lYKGZsb2F0KTsKIAogICAgIGZsb2F0IGJh
c2VGcmVxdWVuY3lZKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRnJlcXVlbmN5WTsgfQotICAgIGJv
b2wgc2V0QmFzZUZyZXF1ZW5jeVkoZmxvYXQpOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRC
YXNlRnJlcXVlbmN5WShmbG9hdCk7CiAKICAgICBmbG9hdCBzZWVkKCkgY29uc3QgeyByZXR1cm4g
bV9zZWVkOyB9Ci0gICAgYm9vbCBzZXRTZWVkKGZsb2F0KTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRp
b24gc2V0U2VlZChmbG9hdCk7CiAKICAgICBpbnQgbnVtT2N0YXZlcygpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtT2N0YXZlczsgfQotICAgIGJvb2wgc2V0TnVtT2N0YXZlcyhpbnQpOworICAgIEZpbHRl
ckludmFsaWRhdGlvbiBzZXROdW1PY3RhdmVzKGludCk7CiAKICAgICBib29sIHN0aXRjaFRpbGVz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGl0Y2hUaWxlczsgfQotICAgIGJvb2wgc2V0U3RpdGNoVGls
ZXMoYm9vbCk7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFN0aXRjaFRpbGVzKGJvb2wpOwog
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxG
RVR1cmJ1bGVuY2U+PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMmZkMTUz
MzQ4NWZhNzE1YWM1YWQ4OTFiNzIyMzQ0NTkxNzdmNjIzOC4uNzNkZmEzMDUwZTA1ZjdkNjM4NzJh
N2Q4M2FlNzZlNDRhODI4NmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0QXBwbGllci5oIgogI2luY2x1ZGUgIkZpbHRlckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiRmlsdGVySW1hZ2VWZWN0b3IuaCIKKyNpbmNsdWRlICJGaWx0ZXJJbnZh
bGlkYXRpb24uaCIKIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBUZXh0U3RyZWFtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbnZh
bGlkYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW52YWxpZGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRiYTk4NzA1OTI3ZDk0ZjA1ODNjMTE3ZDc3
ZTBhMTBjYzRjNjcwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW52YWxpZGF0aW9uLmgKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEZpbHRlckludmFsaWRhdGlv
biA6IHVpbnQ4X3QgeworICAgIE5vbmUsCisgICAgUmVwYWludCwKKyAgICBSZWJ1aWxkCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmgKaW5kZXggOTQ2ZDJkZTQ2YWRjZTU5
ZDU2NTA5ZjA2NGUzOTJkMmYzODFjNDE1YS4uOTVmODA4ZGNkM2RjY2Y3NWI2ZDM1Y2Y1NTlmYTNi
NjNjODU5MmZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9MaWdodFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkZpbHRlckludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkZsb2F0UG9p
bnQzRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTczLDE5ICs3NCwxOSBA
QCBwdWJsaWM6CiAgICAgLy8geCBhbmQgeSBhcmUgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBG
aWx0ZXJFZmZlY3QncyBidWZmZXIuCiAgICAgdmlydHVhbCBDb21wdXRlZExpZ2h0aW5nRGF0YSBj
b21wdXRlUGl4ZWxMaWdodGluZ0RhdGEoY29uc3QgUGFpbnRpbmdEYXRhJiwgaW50IHgsIGludCB5
LCBmbG9hdCB6KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2V0QXppbXV0aChmbG9h
dCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2V0RWxldmF0aW9uKGZsb2F0
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgRmlsdGVySW52YWxpZGF0aW9uIHNldEF6
aW11dGgoZmxvYXQpIHsgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsgfQorICAgIHZp
cnR1YWwgRmlsdGVySW52YWxpZGF0aW9uIHNldEVsZXZhdGlvbihmbG9hdCkgeyByZXR1cm4gRmls
dGVySW52YWxpZGF0aW9uOjpOb25lOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgYXJlIGluIHVzZXIg
c3BhY2UgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCBib29sIHNldFgoZmxvYXQpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNldFkoZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIHNldFooZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIHNldFBvaW50c0F0WChmbG9hdCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgc2V0UG9pbnRzQXRZKGZsb2F0KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBzZXRQb2ludHNBdFooZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0WChmbG9hdCkgeyByZXR1cm4gRmlsdGVySW52YWxpZGF0
aW9uOjpOb25lOyB9CisgICAgdmlydHVhbCBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0WShmbG9hdCkg
eyByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOyB9CisgICAgdmlydHVhbCBGaWx0ZXJJ
bnZhbGlkYXRpb24gc2V0WihmbG9hdCkgeyByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25l
OyB9CisgICAgdmlydHVhbCBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0UG9pbnRzQXRYKGZsb2F0KSB7
IHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7IH0KKyAgICB2aXJ0dWFsIEZpbHRlcklu
dmFsaWRhdGlvbiBzZXRQb2ludHNBdFkoZmxvYXQpIHsgcmV0dXJuIEZpbHRlckludmFsaWRhdGlv
bjo6Tm9uZTsgfQorICAgIHZpcnR1YWwgRmlsdGVySW52YWxpZGF0aW9uIHNldFBvaW50c0F0Wihm
bG9hdCkgeyByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOyB9CiAgICAgCi0gICAgdmly
dHVhbCBib29sIHNldFNwZWN1bGFyRXhwb25lbnQoZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIHNldExpbWl0aW5nQ29uZUFuZ2xlKGZsb2F0KSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgRmlsdGVySW52YWxpZGF0aW9uIHNldFNwZWN1bGFyRXhwb25lbnQo
ZmxvYXQpIHsgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsgfQorICAgIHZpcnR1YWwg
RmlsdGVySW52YWxpZGF0aW9uIHNldExpbWl0aW5nQ29uZUFuZ2xlKGZsb2F0KSB7IHJldHVybiBG
aWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7IH0KIAogcHJpdmF0ZToKICAgICBMaWdodFR5cGUgbV90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Qb2ludExpZ2h0U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAKaW5kZXggZWVkNzk1ZmRmZTFiNjZkMWE4NGNk
YzVlMzZmYTc0MDczNGFiNzllMy4uM2U1Zjk1NDMxYWUyZTljNjA3ODFhNGQ0MDYyNjA0OWYxYWY1
MzMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Qb2ludExpZ2h0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuY3BwCkBAIC03MCwyOCArNzAsMjggQEAgTGln
aHRTb3VyY2U6OkNvbXB1dGVkTGlnaHRpbmdEYXRhIFBvaW50TGlnaHRTb3VyY2U6OmNvbXB1dGVQ
aXhlbExpZ2h0aW5nRGF0YShjb24KICAgICByZXR1cm4geyBsaWdodFZlY3RvciwgcGFpbnRpbmdE
YXRhLmluaXRpYWxMaWdodGluZ0RhdGEuY29sb3JWZWN0b3IsIGxpZ2h0VmVjdG9yLmxlbmd0aCgp
IH07CiB9CiAKLWJvb2wgUG9pbnRMaWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQorRmlsdGVySW52
YWxpZGF0aW9uIFBvaW50TGlnaHRTb3VyY2U6OnNldFgoZmxvYXQgeCkKIHsKICAgICBpZiAobV91
c2VyU3BhY2VQb3NpdGlvbi54KCkgPT0geCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fdXNlclNwYWNlUG9zaXRp
b24uc2V0WCh4KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0
aW9uOjpSZXBhaW50OwogfQogCi1ib29sIFBvaW50TGlnaHRTb3VyY2U6OnNldFkoZmxvYXQgeSkK
K0ZpbHRlckludmFsaWRhdGlvbiBQb2ludExpZ2h0U291cmNlOjpzZXRZKGZsb2F0IHkpCiB7CiAg
ICAgaWYgKG1fdXNlclNwYWNlUG9zaXRpb24ueSgpID09IHkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX3VzZXJT
cGFjZVBvc2l0aW9uLnNldFkoeSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRl
ckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAotYm9vbCBQb2ludExpZ2h0U291cmNlOjpzZXRa
KGZsb2F0IHopCitGaWx0ZXJJbnZhbGlkYXRpb24gUG9pbnRMaWdodFNvdXJjZTo6c2V0WihmbG9h
dCB6KQogewogICAgIGlmIChtX3VzZXJTcGFjZVBvc2l0aW9uLnooKSA9PSB6KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAg
ICAgbV91c2VyU3BhY2VQb3NpdGlvbi5zZXRaKHopOwotICAgIHJldHVybiB0cnVlOworICAgIHJl
dHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CiB9CiAKIFRleHRTdHJlYW0mIFBvaW50
TGlnaHRTb3VyY2U6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Bv
aW50TGlnaHRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvUG9pbnRMaWdodFNvdXJjZS5oCmluZGV4IDVjOWM3ZmI3ODNlNjZlNzFmNWYyOWI4ZjU4Yzky
MDhmMjUzM2RmY2UuLmQ2NDRjYWMzYWMxODMwMWIwMDNmZjAzODMxNjEwNGQwMDk1ZDE2NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRM
aWdodFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvUG9pbnRMaWdodFNvdXJjZS5oCkBAIC0zMyw5ICszMyw5IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBvaW50TGlnaHRTb3VyY2U+IGNyZWF0ZShjb25zdCBGbG9h
dFBvaW50M0QmIHBvc2l0aW9uKTsKIAogICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3VzZXJTcGFjZVBvc2l0aW9uOyB9Ci0gICAgYm9vbCBzZXRYKGZs
b2F0KSBvdmVycmlkZTsKLSAgICBib29sIHNldFkoZmxvYXQpIG92ZXJyaWRlOwotICAgIGJvb2wg
c2V0WihmbG9hdCkgb3ZlcnJpZGU7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFgoZmxvYXQp
IG92ZXJyaWRlOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRZKGZsb2F0KSBvdmVycmlkZTsK
KyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0WihmbG9hdCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGluaXRQYWludGluZ0RhdGEoY29uc3QgRmlsdGVyJiwgY29uc3QgRmlsdGVySW1hZ2UmIHJlc3Vs
dCwgUGFpbnRpbmdEYXRhJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29tcHV0ZWRMaWdodGluZ0Rh
dGEgY29tcHV0ZVBpeGVsTGlnaHRpbmdEYXRhKGNvbnN0IFBhaW50aW5nRGF0YSYsIGludCB4LCBp
bnQgeSwgZmxvYXQgeikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAKaW5kZXgg
MDc0YmQ5MzcyMWQ4ZjU3N2U5MTQxYmVhYjcwMDAxOTRlZTQ0Y2I4Yi4uMTZiYmEwNWVmNmY2MDc4
N2Q3MzVlZTM4ZmI3MGFlNmQ1NTRkZGU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcApAQCAt
MTMzLDY4ICsxMzMsNjggQEAgTGlnaHRTb3VyY2U6OkNvbXB1dGVkTGlnaHRpbmdEYXRhIFNwb3RM
aWdodFNvdXJjZTo6Y29tcHV0ZVBpeGVsTGlnaHRpbmdEYXRhKGNvbnMKICAgICB9OwogfQogCi1i
b29sIFNwb3RMaWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQorRmlsdGVySW52YWxpZGF0aW9uIFNw
b3RMaWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQogewogICAgIGlmIChtX3VzZXJTcGFjZVBvc2l0
aW9uLngoKSA9PSB4KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBGaWx0
ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAgICAgbV91c2VyU3BhY2VQb3NpdGlvbi5zZXRYKHgpOwot
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7
CiB9CiAKLWJvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRZKGZsb2F0IHkpCitGaWx0ZXJJbnZhbGlk
YXRpb24gU3BvdExpZ2h0U291cmNlOjpzZXRZKGZsb2F0IHkpCiB7CiAgICAgaWYgKG1fdXNlclNw
YWNlUG9zaXRpb24ueSgpID09IHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX3VzZXJTcGFjZVBvc2l0aW9uLnNl
dFkoeSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6
UmVwYWludDsKIH0KIAotYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFooZmxvYXQgeikKK0ZpbHRl
ckludmFsaWRhdGlvbiBTcG90TGlnaHRTb3VyY2U6OnNldFooZmxvYXQgeikKIHsKICAgICBpZiAo
bV91c2VyU3BhY2VQb3NpdGlvbi56KCkgPT0geikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fdXNlclNwYWNlUG9z
aXRpb24uc2V0Wih6KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxp
ZGF0aW9uOjpSZXBhaW50OwogfQogCi1ib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0UG9pbnRzQXRY
KGZsb2F0IHBvaW50c0F0WCkKK0ZpbHRlckludmFsaWRhdGlvbiBTcG90TGlnaHRTb3VyY2U6OnNl
dFBvaW50c0F0WChmbG9hdCBwb2ludHNBdFgpCiB7CiAgICAgaWYgKG1fdXNlclNwYWNlUG9pbnRz
QXQueCgpID09IHBvaW50c0F0WCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogICAgIG1fdXNlclNwYWNlUG9pbnRzQXQuc2V0
WChwb2ludHNBdFgpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlk
YXRpb246OlJlcGFpbnQ7CiB9CiAKLWJvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFko
ZmxvYXQgcG9pbnRzQXRZKQorRmlsdGVySW52YWxpZGF0aW9uIFNwb3RMaWdodFNvdXJjZTo6c2V0
UG9pbnRzQXRZKGZsb2F0IHBvaW50c0F0WSkKIHsKICAgICBpZiAobV91c2VyU3BhY2VQb2ludHNB
dC55KCkgPT0gcG9pbnRzQXRZKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiAgICAgbV91c2VyU3BhY2VQb2ludHNBdC5zZXRZ
KHBvaW50c0F0WSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRh
dGlvbjo6UmVwYWludDsKIH0KIAotYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0Wihm
bG9hdCBwb2ludHNBdFopCitGaWx0ZXJJbnZhbGlkYXRpb24gU3BvdExpZ2h0U291cmNlOjpzZXRQ
b2ludHNBdFooZmxvYXQgcG9pbnRzQXRaKQogewogICAgIGlmIChtX3VzZXJTcGFjZVBvaW50c0F0
LnooKSA9PSBwb2ludHNBdFopCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX3VzZXJTcGFjZVBvaW50c0F0LnNldFoo
cG9pbnRzQXRaKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0
aW9uOjpSZXBhaW50OwogfQogCi1ib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0U3BlY3VsYXJFeHBv
bmVudChmbG9hdCBzcGVjdWxhckV4cG9uZW50KQorRmlsdGVySW52YWxpZGF0aW9uIFNwb3RMaWdo
dFNvdXJjZTo6c2V0U3BlY3VsYXJFeHBvbmVudChmbG9hdCBzcGVjdWxhckV4cG9uZW50KQogewog
ICAgIGlmIChtX3NwZWN1bGFyRXhwb25lbnQgPT0gc3BlY3VsYXJFeHBvbmVudCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwog
ICAgIG1fc3BlY3VsYXJFeHBvbmVudCA9IHNwZWN1bGFyRXhwb25lbnQ7Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAotYm9vbCBT
cG90TGlnaHRTb3VyY2U6OnNldExpbWl0aW5nQ29uZUFuZ2xlKGZsb2F0IGxpbWl0aW5nQ29uZUFu
Z2xlKQorRmlsdGVySW52YWxpZGF0aW9uIFNwb3RMaWdodFNvdXJjZTo6c2V0TGltaXRpbmdDb25l
QW5nbGUoZmxvYXQgbGltaXRpbmdDb25lQW5nbGUpCiB7CiAgICAgaWYgKG1fbGltaXRpbmdDb25l
QW5nbGUgPT0gbGltaXRpbmdDb25lQW5nbGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKICAgICBtX2xpbWl0aW5nQ29uZUFu
Z2xlID0gbGltaXRpbmdDb25lQW5nbGU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEZp
bHRlckludmFsaWRhdGlvbjo6UmVwYWludDsKIH0KIAogVGV4dFN0cmVhbSYgU3BvdExpZ2h0U291
cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExp
Z2h0U291cmNlLmgKaW5kZXggMDRlMzMxZWM0ZWMwOGFkMGIzY2M1YTgwMWQ1Y2NkMjdlNTk2MjQ4
Mi4uMWFhMzc5MTFjZDAzYzgwYmY0M2I4YjI2NDc3MzU5NGFlYjc4ZGU1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdo
dFNvdXJjZS5oCkBAIC0zNywxNSArMzcsMTUgQEAgcHVibGljOgogICAgIGZsb2F0IHNwZWN1bGFy
RXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyRXhwb25lbnQ7IH0KICAgICBmbG9h
dCBsaW1pdGluZ0NvbmVBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRpbmdDb25lQW5nbGU7
IH0KIAotICAgIGJvb2wgc2V0WChmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXRZKGZsb2F0
KSBvdmVycmlkZTsKLSAgICBib29sIHNldFooZmxvYXQpIG92ZXJyaWRlOwotICAgIGJvb2wgc2V0
UG9pbnRzQXRYKGZsb2F0KSBvdmVycmlkZTsKLSAgICBib29sIHNldFBvaW50c0F0WShmbG9hdCkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBzZXRQb2ludHNBdFooZmxvYXQpIG92ZXJyaWRlOwotCi0gICAg
Ym9vbCBzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0KSBvdmVycmlkZTsKLSAgICBib29sIHNldExp
bWl0aW5nQ29uZUFuZ2xlKGZsb2F0KSBvdmVycmlkZTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24g
c2V0WChmbG9hdCkgb3ZlcnJpZGU7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldFkoZmxvYXQp
IG92ZXJyaWRlOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRaKGZsb2F0KSBvdmVycmlkZTsK
KyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0UG9pbnRzQXRYKGZsb2F0KSBvdmVycmlkZTsKKyAg
ICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0UG9pbnRzQXRZKGZsb2F0KSBvdmVycmlkZTsKKyAgICBG
aWx0ZXJJbnZhbGlkYXRpb24gc2V0UG9pbnRzQXRaKGZsb2F0KSBvdmVycmlkZTsKKworICAgIEZp
bHRlckludmFsaWRhdGlvbiBzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0KSBvdmVycmlkZTsKKyAg
ICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0TGltaXRpbmdDb25lQW5nbGUoZmxvYXQpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBpbml0UGFpbnRpbmdEYXRhKGNvbnN0IEZpbHRlciYsIGNvbnN0IEZpbHRl
ckltYWdlJiByZXN1bHQsIFBhaW50aW5nRGF0YSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbXB1
dGVkTGlnaHRpbmdEYXRhIGNvbXB1dGVQaXhlbExpZ2h0aW5nRGF0YShjb25zdCBQYWludGluZ0Rh
dGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IHopIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCAyOTFjNzIwYzIwM2RiNjUxZDRlZWY5NThiODdkYWFj
OWM4ZjdlMmNkLi40M2Q4Zjk0MDc0ODdkYzkxZDQwNGM2NDI3ZDE5MTUxMjEyNWQ5MmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtMjY0LDggKzI2NCw3IEBAIHN0
YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGVSZWZlcmVuY2VGaWx0ZXIoQ1NTRmlsdGVyJiBm
aWx0ZXIsIGNvbnN0IFJlZmVyZW5jCiAKICAgICBhdXRvIGZpbHRlclJlZ2lvbiA9IFNWR0xlbmd0
aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyRWxlbWVudD4oZmlsdGVyRWxlbWVu
dCwgZmlsdGVyRWxlbWVudC0+ZmlsdGVyVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwogCi0g
ICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyOwotICAgIHJldHVybiBTVkdGaWx0ZXI6OmNyZWF0
ZSgqZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgZmlsdGVy
LmZpbHRlclNjYWxlKCksIGZpbHRlci5jbGlwT3BlcmF0aW9uKCksIGZpbHRlclJlZ2lvbiwgdGFy
Z2V0Qm91bmRpbmdCb3gsIGRlc3RpbmF0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIFNWR0ZpbHRl
cjo6Y3JlYXRlKCpmaWx0ZXJFbGVtZW50LCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBmaWx0ZXIu
ZmlsdGVyU2NhbGUoKSwgZmlsdGVyLmNsaXBPcGVyYXRpb24oKSwgZmlsdGVyUmVnaW9uLCB0YXJn
ZXRCb3VuZGluZ0JveCwgZGVzdGluYXRpb25Db250ZXh0KTsKIH0KIAogYm9vbCBDU1NGaWx0ZXI6
OmJ1aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5n
Qm94LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXIuaAppbmRleCBlYjQyMDlkNjdlYTMxZDQwM2QyYmQ5ZWQ4YjdlMjIzM2IxZmI1MDJjLi5k
ZjQyNDNkYTQwZjAxOTFhNDdiZDNkOWExZDhmZGY2MTY3ZDNiYTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ci5oCkBAIC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtBbGxDbGllbnRzRm9y
UmVwYWludCgpOwogICAgIHZvaWQgYWRkQ2xpZW50UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXIqKTsK
ICAgICB2b2lkIHJlbW92ZUNsaWVudFJlbmRlckxheWVyKFJlbmRlckxheWVyKik7CisgICAgdm9p
ZCBtYXJrQWxsQ2xpZW50TGF5ZXJzRm9ySW52YWxpZGF0aW9uKCk7CiAKIHByb3RlY3RlZDoKICAg
ICBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihTVkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7
CkBAIC02MCw3ICs2MSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2VsZk5lZWRz
Q2xpZW50SW52YWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gZXZlckhhZExheW91dCgpICYmIHNl
bGZOZWVkc0xheW91dCgpOyB9CiAKICAgICB2b2lkIG1hcmtBbGxDbGllbnRzRm9ySW52YWxpZGF0
aW9uKEludmFsaWRhdGlvbk1vZGUpOwotICAgIHZvaWQgbWFya0FsbENsaWVudExheWVyc0Zvcklu
dmFsaWRhdGlvbigpOwogICAgIHZvaWQgbWFya0NsaWVudEZvckludmFsaWRhdGlvbihSZW5kZXJP
YmplY3QmLCBJbnZhbGlkYXRpb25Nb2RlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5k
ZXggYTdhNzc3ODFiMDVmOGUxZWFlMmUwYjAzNDUxMWI3OWI1MmE5YTdjYS4uYWRlOTFjOTE2OTAz
ZmVlMjNkMGNkZTdiYWVmZTM0ZWNkYTAyMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI1LDI0
ICsyNSwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmgiCiAKLSNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkltYWdlLmgi
Ci0jaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcklubGluZXMuaCIK
LSNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIgotI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhlbHBlcnMuaCIKLSNpbmNs
dWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJT
ZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKICNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAt
MTI5LDggKzExOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgYXV0byByZW5kZXJp
bmdNb2RlID0gcmVuZGVyZXIucGFnZSgpLmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IFJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsK
IAogICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KLSAgICBmaWx0ZXJEYXRhLT5i
dWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigpOwotICAgIGZpbHRlckRhdGEt
PmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckVsZW1lbnQoKSwgKmZpbHRlckRhdGEt
PmJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBGaWx0ZXI6OkNsaXBPcGVyYXRp
b246OkludGVyc2VjdCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRpbmdCb3gs
ICpjb250ZXh0KTsKKyAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShm
aWx0ZXJFbGVtZW50KCksIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBGaWx0ZXI6OkNsaXBP
cGVyYXRpb246OkludGVyc2VjdCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRp
bmdCb3gsICpjb250ZXh0KTsKICAgICBpZiAoIWZpbHRlckRhdGEtPmZpbHRlcikgewogICAgICAg
ICBtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5yZW1vdmUoJnJlbmRlcmVyKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjI1LDMxICsyMTQsMjcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpyZXNvdXJjZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWMK
ICAgICByZXR1cm4gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJF
bGVtZW50PigmZmlsdGVyRWxlbWVudCgpLCBmaWx0ZXJFbGVtZW50KCkuZmlsdGVyVW5pdHMoKSwg
b2JqZWN0Lm9iamVjdEJvdW5kaW5nQm94KCkpOwogfQogCi12b2lkIFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCit2b2lkIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjptYXJrRmlsdGVyRm9yUmVwYWludChGaWx0ZXJFZmZlY3QmIGVmZmVjdCkKIHsKLSAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIHByaW1pdHZlID0gc3RhdGljX2Nh
c3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKj4ob2JqZWN0LT5ub2RlKCkp
OwotCi0gICAgTE9HKEZpbHRlcnMsICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciAlcCBwcmltaXRp
dmVBdHRyaWJ1dGVDaGFuZ2VkIHJlbmRlcmVyICVwIiwgdGhpcywgb2JqZWN0KTsKKyAgICBMT0co
RmlsdGVycywgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyICVwIG1hcmtGaWx0ZXJGb3JSZXBhaW50
IGVmZmVjdCAlcCIsIHRoaXMsICZlZmZlY3QpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvYmpl
Y3RGaWx0ZXJEYXRhUGFpciA6IG1fcmVuZGVyZXJGaWx0ZXJEYXRhTWFwKSB7CiAgICAgICAgIGNv
bnN0IGF1dG8mIGZpbHRlckRhdGEgPSBvYmplY3RGaWx0ZXJEYXRhUGFpci52YWx1ZTsKICAgICAg
ICAgaWYgKGZpbHRlckRhdGEtPnN0YXRlICE9IEZpbHRlckRhdGE6OkJ1aWx0KQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgU1ZHRmlsdGVyQnVpbGRlciogYnVpbGRlciA9IGZpbHRl
ckRhdGEtPmJ1aWxkZXIuZ2V0KCk7Ci0gICAgICAgIEZpbHRlckVmZmVjdCogZWZmZWN0ID0gYnVp
bGRlci0+ZWZmZWN0QnlSZW5kZXJlcihvYmplY3QpOwotICAgICAgICBpZiAoIWVmZmVjdCkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBTaW5jZSBhbGwgZWZmZWN0cyBzaGFyZXMg
dGhlIHNhbWUgYXR0cmlidXRlIHZhbHVlLCBhbGwKLSAgICAgICAgLy8gb3Igbm9uZSBvZiB0aGVt
IHdpbGwgYmUgY2hhbmdlZC4KLSAgICAgICAgaWYgKCFwcmltaXR2ZS0+c2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKGVmZmVjdCwgYXR0cmlidXRlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgZmlsdGVyRGF0YS0+cmVzdWx0cy5jbGVhckVmZmVjdFJlc3VsdCgqZWZmZWN0KTsKLQogICAg
ICAgICAvLyBSZXBhaW50IHRoZSBpbWFnZSBvbiB0aGUgc2NyZWVuLgogICAgICAgICBtYXJrQ2xp
ZW50Rm9ySW52YWxpZGF0aW9uKCpvYmplY3RGaWx0ZXJEYXRhUGFpci5rZXksIFJlcGFpbnRJbnZh
bGlkYXRpb24pOworCisgICAgICAgIGZpbHRlckRhdGEtPnJlc3VsdHMuY2xlYXJFZmZlY3RSZXN1
bHQoZWZmZWN0KTsKICAgICB9Ci0gICAgbWFya0FsbENsaWVudExheWVyc0ZvckludmFsaWRhdGlv
bigpOworfQorCit2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjptYXJrRmlsdGVyRm9yUmVi
dWlsZCgpCit7CisgICAgTE9HKEZpbHRlcnMsICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciAlcCBt
YXJrRmlsdGVyRm9yUmVidWlsZCIsIHRoaXMpOworCisgICAgcmVtb3ZlQWxsQ2xpZW50c0Zyb21D
YWNoZSgpOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmRyYXdpbmdS
ZWdpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKaW5kZXggOGEwNzI4
ODZmYTk2ZTJkODdlMjhjY2Y4YjM0Njk1OTg0NjhiNWIzOC4uMzMzYjc5OTkyNDRiYmViYTRlMjQz
MzdkYzYzMTk2YzFhZjYzYTkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaApAQCAtMjcsNyArMjcsNiBAQAogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ1LDcgKzQ0LDYgQEAgcHVibGljOgogICAg
IEZpbHRlckRhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICBSZWZQdHI8U1ZHRmlsdGVyPiBmaWx0ZXI7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IGJ1aWxkZXI7CiAgICAgUmVm
UHRyPEltYWdlQnVmZmVyPiBzb3VyY2VHcmFwaGljQnVmZmVyOwogICAgIEdyYXBoaWNzQ29udGV4
dCogc2F2ZWRDb250ZXh0IHsgbnVsbHB0ciB9OwogICAgIEZsb2F0UmVjdCBib3VuZGFyaWVzOwpA
QCAtNzMsMTIgKzcxLDExIEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVjdCByZXNvdXJjZUJvdW5k
aW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFNWR0ZpbHRlckJ1aWxkZXI+IGJ1aWxkUHJpbWl0aXZlcyhTVkdGaWx0ZXImKSBjb25zdDsK
LQogICAgIGlubGluZSBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIGZpbHRlclVuaXRzKCkgY29u
c3Q7CiAgICAgaW5saW5lIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMo
KSBjb25zdDsKIAotICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdm9pZCBtYXJrRmlsdGVyRm9yUmVwYWlu
dChGaWx0ZXJFZmZlY3QmKTsKKyAgICB2b2lkIG1hcmtGaWx0ZXJGb3JSZWJ1aWxkKCk7CiAKICAg
ICBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gRmlsdGVyUmVzb3VyY2VUeXBlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZS5jcHAKaW5kZXggMmJmNzdhOTBlYzAxOTY2ZGZmN2M2OWI4MmM1OTMzNmQ0ZWM3YTFjZS4uODNj
ZjczOTBkOTg0ODJmYWU2ZmVjY2VmODg3N2MxYzk3YWZhZWNiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
VW5pdmVyc2l0eSBvZiBTemVnZWQKICAqIENvcHlyaWdodCAoQykgMjAxMCBab2x0YW4gSGVyY3pl
ZwogICogQ29weXJpZ2h0IChDKSAyMDExIFJlbmF0YSBIb2RvdmFuIChyZW5pQHdlYmtpdC5vcmcp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzEsNyBAQAogCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR0ZFRmxvb2RFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oIgpAQCAtNTQsMjMgKzU2LDM4IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQ
cmltaXRpdmU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zCiB7CiAg
ICAgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHls
ZSk7CiAKLSAgICBhdXRvKiBmaWx0ZXIgPSBwYXJlbnQoKTsKLSAgICBpZiAoIWZpbHRlcikKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgaWYgKGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlOjpFcXVhbCB8
fCAhb2xkU3R5bGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxl
JiBuZXdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKLSAgICBpZiAoaXM8U1ZHRkVGbG9vZEVs
ZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSkpIHsKKyAgICBpZiAoaXM8U1ZHRkVGbG9v
ZEVsZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQoKSkgfHwgaXM8U1ZHRkVEcm9wU2hhZG93
RWxlbWVudD4oZmlsdGVyUHJpbWl0aXZlRWxlbWVudCgpKSkgewogICAgICAgICBpZiAobmV3U3R5
bGUuZmxvb2RDb2xvcigpICE9IG9sZFN0eWxlLT5zdmdTdHlsZSgpLmZsb29kQ29sb3IoKSkKLSAg
ICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqZmlsdGVyKS5wcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVzOjpmbG9vZF9jb2xvckF0dHIpOwor
ICAgICAgICAgICAgZmlsdGVyUHJpbWl0aXZlRWxlbWVudCgpLnByaW1pdGl2ZUF0dHJpYnV0ZUNo
YW5nZWQoU1ZHTmFtZXM6OmZsb29kX2NvbG9yQXR0cik7CiAgICAgICAgIGlmIChuZXdTdHlsZS5m
bG9vZE9wYWNpdHkoKSAhPSBvbGRTdHlsZS0+c3ZnU3R5bGUoKS5mbG9vZE9wYWNpdHkoKSkKLSAg
ICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyPigqZmlsdGVyKS5wcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIFNWR05hbWVzOjpmbG9vZF9vcGFjaXR5QXR0cik7
CisgICAgICAgICAgICBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkucHJpbWl0aXZlQXR0cmlidXRl
Q2hhbmdlZChTVkdOYW1lczo6Zmxvb2Rfb3BhY2l0eUF0dHIpOwogICAgIH0gZWxzZSBpZiAoaXM8
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PihmaWx0ZXJQcmltaXRpdmVFbGVtZW50KCkpIHx8
IGlzPFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ+KGZpbHRlclByaW1pdGl2ZUVsZW1lbnQo
KSkpIHsKICAgICAgICAgaWYgKG5ld1N0eWxlLmxpZ2h0aW5nQ29sb3IoKSAhPSBvbGRTdHlsZS0+
c3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpCi0gICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcj4oKmZpbHRlcikucHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZCh0aGlz
LCBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKTsKKyAgICAgICAgICAgIGZpbHRlclByaW1p
dGl2ZUVsZW1lbnQoKS5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFNWR05hbWVzOjpsaWdodGlu
Z19jb2xvckF0dHIpOwogICAgIH0KIH0KIAordm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZTo6bWFya0ZpbHRlckZvckludmFsaWRhdGlvbihGaWx0ZXJFZmZlY3QqIGVmZmVjdCwg
RmlsdGVySW52YWxpZGF0aW9uIGludmFsaWRhdGlvbikKK3sKKyAgICBpZiAoaW52YWxpZGF0aW9u
ID09IEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBwYXJlbnRSZW5kZXJlciA9IHBhcmVudCgpOworICAgIGlmICghcGFyZW50UmVuZGVyZXIgfHwg
IXBhcmVudFJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8mIGZpbHRlclJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI+KCpwYXJlbnRSZW5kZXJlcik7CisgICAgCisgICAgaWYgKGludmFsaWRhdGlvbiA9PSBG
aWx0ZXJJbnZhbGlkYXRpb246OlJlYnVpbGQpCisgICAgICAgIGZpbHRlclJlbmRlcmVyLm1hcmtG
aWx0ZXJGb3JSZWJ1aWxkKCk7CisgICAgZWxzZSBpZiAoZWZmZWN0KQorICAgICAgICBmaWx0ZXJS
ZW5kZXJlci5tYXJrRmlsdGVyRm9yUmVwYWludCgqZWZmZWN0KTsKKworICAgIGZpbHRlclJlbmRl
cmVyLm1hcmtBbGxDbGllbnRMYXllcnNGb3JJbnZhbGlkYXRpb24oKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCmluZGV4IDdjMTJhYjVh
MmU1OTUzZmEyYjgxYmRlMWVkMjI5YWMzNDI3NWNmNWUuLmQ1MmViZjM4NTdlZGRmNzE2ZTcwYzAz
NTg0NmVlOTU0YWJlZGQwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKQEAgLTQz
LDEzICs0Myw4IEBAIHB1YmxpYzoKIAogICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIl9z
OyB9CiAKLSAgICBpbmxpbmUgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKLSAgICB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogZmls
dGVyID0gcGFyZW50KCk7Ci0gICAgICAgIGlmICghZmlsdGVyIHx8ICFmaWx0ZXItPmlzU1ZHUmVz
b3VyY2VGaWx0ZXIoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3RhdGljX2Nhc3Q8
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqPihmaWx0ZXIpLT5wcmltaXRpdmVBdHRyaWJ1dGVDaGFu
Z2VkKHRoaXMsIGF0dHJpYnV0ZSk7Ci0gICAgfQorICAgIHZvaWQgbWFya0ZpbHRlckZvckludmFs
aWRhdGlvbihGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJJbnZhbGlkYXRpb24pOworICAgIAogcHJpdmF0
ZToKICAgICBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcAppbmRleCAyYjMxNzQyMDRjZDJhM2NjYTYxNDMxZjhiYjA1MDZjNmQ1NmE5NGQyLi5jNzAz
NGFjNWU2MTMwZTRmZGM0YzI1Mjc5MjM0NGVhODBiZTRkYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQ3Nyw4
ICs0NzcsNyBAQCB2b2lkIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICAvLyBDcmVhdGluZyBh
IHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBwYXNzZWQgdG8gdGhlIGJ1aWxkZXIuCiAgICAg
ICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7CiAgICAgICAgIEZsb2F0U2l6ZSBkdW1teVNjYWxlKDEs
IDEpOwotICAgICAgICBTVkdGaWx0ZXJCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGF1dG8gZHVt
bXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXIuZmlsdGVyRWxlbWVudCgpLCBidWls
ZGVyLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkdW1teVNjYWxlLCBGaWx0ZXI6OkNs
aXBPcGVyYXRpb246OkludGVyc2VjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIE51bGxHcmFwaGlj
c0NvbnRleHQoKSk7CisgICAgICAgIGF1dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0
ZShmaWx0ZXIuZmlsdGVyRWxlbWVudCgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBk
dW1teVNjYWxlLCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OkludGVyc2VjdCwgZHVtbXlSZWN0LCBk
dW1teVJlY3QsIE51bGxHcmFwaGljc0NvbnRleHQoKSk7CiAgICAgICAgIGlmIChkdW1teUZpbHRl
cikgewogICAgICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMp
OwogICAgICAgICAgICAgZHVtbXlGaWx0ZXItPmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMsIEZp
bHRlclJlcHJlc2VudGF0aW9uOjpUZXN0T3V0cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwCmluZGV4IGQ4Y2U4ZjExNjBjMGQzYWEwZGQ0MWQ0OTc4YmM1MzhjNDM5
N2E3NzAuLjZmMzE1MWE5OTQ4OGQ3NTU4OWY5YjQ1N2MzZWM5YmZlN2UzNzRiNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtNzEsMTQgKzcxLDE1IEBAIHZv
aWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdHJpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLWJvb2wgU1ZHRkVCbGVu
ZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCitGaWx0ZXJJbnZhbGlkYXRpb24gU1ZHRkVC
bGVuZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmIGVmZmVj
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgRkVCbGVuZCogYmxlbmQg
PSBzdGF0aWNfY2FzdDxGRUJsZW5kKj4oZWZmZWN0KTsKKyAgICBhdXRvJiBmZUJsZW5kID0gZG93
bmNhc3Q8RkVCbGVuZD4oZWZmZWN0KTsKKwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
bW9kZUF0dHIpCi0gICAgICAgIHJldHVybiBibGVuZC0+c2V0QmxlbmRNb2RlKG1vZGUoKSk7Cisg
ICAgICAgIHJldHVybiBmZUJsZW5kLnNldEJsZW5kTW9kZShtb2RlKCkpOwogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBGaWx0ZXJJbnZh
bGlkYXRpb246Ok5vbmU7CiB9CiAKIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC05Nyw3ICs5OCw3IEBA
IHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBj
b25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAor
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmNyZWF0ZUZpbHRlckVmZmVj
dChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdAogewogICAgIHJldHVybiBGRUJsZW5kOjpjcmVhdGUobW9kZSgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKaW5kZXggNzhiOThmNjM0
OTJmNzA0NWMxNzkyODUyNGNjNGFmYzc5OGM2MzdhYi4uZGM2ZWM1NDU1OWYwYzhjZjIxZDU5ZWNh
MWIwMzZlMDFkZmMzZDE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgK
QEAgLTY5LDkgKzY5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAg
IGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0
SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IEF0b21TdHJpbmcgeyBpbjEo
KSB9LCBBdG9tU3RyaW5nIHsgaW4yKCkgfSB9OyB9Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0
cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCBlYzk4M2Jk
ZTM4ZDZiZmIzMTFmZjg0MWFlOGRkYWFhNTk2MzQ3YjFlLi4xOTA0NzQ4ZmI2YzQ3MzlhNmU1MzA1
YTFhNGRkZmU1ZmRiODZhNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5jcHAKQEAgLTQ4LDYgKzQ4LDE2IEBAIFJlZjxTVkdGRUNvbG9yTWF0cml4
RWxlbWVudD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorYm9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6aXNJ
bnZhbGlkVmFsdWVzTGVuZ3RoKCkgY29uc3QKK3sKKyAgICBhdXRvIGZpbHRlclR5cGUgPSB0eXBl
KCk7CisgICAgYXV0byBzaXplID0gdmFsdWVzKCkuc2l6ZSgpOworCisgICAgcmV0dXJuIChmaWx0
ZXJUeXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVggICAgJiYgc2l6ZSAhPSAyMCkKKyAg
ICAgICAgfHwgKGZpbHRlclR5cGUgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSAmJiBz
aXplICE9IDEpCisgICAgICAgIHx8IChmaWx0ZXJUeXBlID09IEZFQ09MT1JNQVRSSVhfVFlQRV9T
QVRVUkFURSAgJiYgc2l6ZSAhPSAxKTsKK30KKwogdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CkBA
IC03MCwxNiArODAsMjQgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXQKICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
IH0KIAotYm9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
K0ZpbHRlckludmFsaWRhdGlvbiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYgZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKLSAgICBGRUNvbG9yTWF0cml4KiBjb2xvck1hdHJpeCA9IHN0YXRpY19jYXN0
PEZFQ29sb3JNYXRyaXgqPihlZmZlY3QpOwotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
dHlwZUF0dHIpCi0gICAgICAgIHJldHVybiBjb2xvck1hdHJpeC0+c2V0VHlwZSh0eXBlKCkpOwot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikKLSAgICAgICAgcmV0dXJu
IGNvbG9yTWF0cml4LT5zZXRWYWx1ZXModmFsdWVzKCkpOworICAgIGF1dG8mIGZlQ29sb3JNYXRy
aXggPSBkb3duY2FzdDxGRUNvbG9yTWF0cml4PihlZmZlY3QpOworCisgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp0eXBlQXR0cikgeworICAgICAgICBpZiAoaXNJbnZhbGlkVmFsdWVzTGVu
Z3RoKCkpCisgICAgICAgICAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpSZWJ1aWxkOwor
ICAgICAgICByZXR1cm4gZmVDb2xvck1hdHJpeC5zZXRUeXBlKHR5cGUoKSk7CisgICAgfQorCisg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKSB7CisgICAgICAgIGlmIChp
c0ludmFsaWRWYWx1ZXNMZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlk
YXRpb246OlJlYnVpbGQ7CisgICAgICAgIHJldHVybiBmZUNvbG9yTWF0cml4LnNldFZhbHVlcyh2
YWx1ZXMoKSk7CisgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiB9CiAKIHZvaWQg
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCkBAIC05OCw3ICsxMTYsNyBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmls
dGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3Qo
Y29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKIHsKICAgICBWZWN0b3I8ZmxvYXQ+IGZpbHRlclZhbHVlczsKICAg
ICBDb2xvck1hdHJpeFR5cGUgZmlsdGVyVHlwZSA9IHR5cGUoKTsKQEAgLTEyMywxMSArMTQxLDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb24KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHZhbHVlcygpLnNpemUoKTsK
LQotICAgICAgICBpZiAoKGZpbHRlclR5cGUgPT0gRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCAm
JiBzaXplICE9IDIwKQotICAgICAgICAgICAgfHwgKGZpbHRlclR5cGUgPT0gRkVDT0xPUk1BVFJJ
WF9UWVBFX0hVRVJPVEFURSAmJiBzaXplICE9IDEpCi0gICAgICAgICAgICB8fCAoZmlsdGVyVHlw
ZSA9PSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgJiYgc2l6ZSAhPSAxKSkKKyAgICAgICAg
aWYgKGlzSW52YWxpZFZhbHVlc0xlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgZmlsdGVyVmFsdWVzID0gdmFsdWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCmluZGV4IDI1YTc2MzYwNThkOTJjYmNmN2U3ODIy
YjU4NTgzOWZkYjk1YjMwNzkuLjhhOGRhMDc1YTJhZGI1NGQwMGM5YjkxOTBiNmIxY2NjNGIxZDgw
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCkBA
IC04MiwxMiArODIsMTQgQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0g
U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVn
aXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5
UmVnaXN0cnk7IH0KIAorICAgIGJvb2wgaXNJbnZhbGlkVmFsdWVzTGVuZ3RoKCkgY29uc3Q7CisK
ICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBG
aWx0ZXJJbnZhbGlkYXRpb24gc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYs
IGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4g
ZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IEF0b21T
dHJpbmcgeyBpbjEoKSB9IH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBj
b25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0
aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2lu
MSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDUxNzE5
NmI5OGRiMmVhYjQ0YjczZmM3ZTUxMThkM2RkNWUyYWZkYWEuLjIzYTZmOGY3Zjc3NmE0N2QxNDMw
MDUxNmJhNTEwMzZkZTFhYTEyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtNjIsNyArNjIsMTggQEAgdm9pZCBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY28KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdAordm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWlu
QXJlRGlydHkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Cit9
CisKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Ojpj
cmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVj
dG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uIHJlZDsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGdyZWVuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
aAppbmRleCA2OWJjMzY5MTUwNzU4MzlhZWYzYjk4OTUzOWMxOGFiZTI1MzY0ODA0Li5lMGFhNzdk
NWIzMzU0MTk5NDUzMTM1ZjIzZjE1YTNjNTUzZDBjY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtNDAsMTEgKzQwLDEx
IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeTxTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBw
cm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5
OyB9CiAKLSAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNzcwMiAtIHByb3ZpZGUgc3ZnQXR0cmlidXRlIGltcGxlbWVudGF0aW9uIGZvciBTVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC4KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAg
IFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHsgQXRvbVN0cmluZyB7IGluMSgpIH0gfTsgfQotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZl
Y3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBy
b3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZH
QW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAppbmRleCBh
MjkyNGIyMTk2ZGZiMjU2ZTY0YTVlMDY2ODgxMTQwZmNjMGIxNjAzLi40NmRmNTQ5NWZjNTJjODc3
M2E1YTgyNjk0YjdjZjU0MmI2YWFkOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmNwcApAQCAtOTQsNDIgKzk0LDQxIEBAIHZvaWQgU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKLWJvb2wgU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQorRmlsdGVySW52YWxpZGF0aW9uIFNWR0ZFQ29tcG9zaXRlRWxl
bWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYgZWZmZWN0LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBGRUNvbXBvc2l0ZSogY29tcG9zaXRl
ID0gc3RhdGljX2Nhc3Q8RkVDb21wb3NpdGUqPihlZmZlY3QpOworICAgIGF1dG8mIGZlQ29tcG9z
aXRlID0gZG93bmNhc3Q8RkVDb21wb3NpdGU+KGVmZmVjdCk7CiAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpCi0gICAgICAgIHJldHVybiBjb21wb3NpdGUtPnNldE9w
ZXJhdGlvbihzdmdPcGVyYXRvcigpKTsKKyAgICAgICAgcmV0dXJuIGZlQ29tcG9zaXRlLnNldE9w
ZXJhdGlvbihzdmdPcGVyYXRvcigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omsx
QXR0cikKLSAgICAgICAgcmV0dXJuIGNvbXBvc2l0ZS0+c2V0SzEoazEoKSk7CisgICAgICAgIHJl
dHVybiBmZUNvbXBvc2l0ZS5zZXRLMShrMSgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmsyQXR0cikKLSAgICAgICAgcmV0dXJuIGNvbXBvc2l0ZS0+c2V0SzIoazIoKSk7CisgICAg
ICAgIHJldHVybiBmZUNvbXBvc2l0ZS5zZXRLMihrMigpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmszQXR0cikKLSAgICAgICAgcmV0dXJuIGNvbXBvc2l0ZS0+c2V0SzMoazMoKSk7
CisgICAgICAgIHJldHVybiBmZUNvbXBvc2l0ZS5zZXRLMyhrMygpKTsKICAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Oms0QXR0cikKLSAgICAgICAgcmV0dXJuIGNvbXBvc2l0ZS0+c2V0SzQo
azQoKSk7CisgICAgICAgIHJldHVybiBmZUNvbXBvc2l0ZS5zZXRLNChrNCgpKTsKIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gRmlsdGVy
SW52YWxpZGF0aW9uOjpOb25lOwogfQogCiAKIHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6azFBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjprMkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmszQXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6azRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpIHsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjppbjJBdHRyKQotICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmsxQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azJBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjprM0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Oms0QXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRyKTsKLSAgICAgICAgICAgIHByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisgICAgfQor
CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluMkF0dHIpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KCk7CiAgICAgfQogCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29u
c3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEZFQ29tcG9zaXRlOjpjcmVhdGUo
c3ZnT3BlcmF0b3IoKSwgazEoKSwgazIoKSwgazMoKSwgazQoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKaW5kZXggZDNlMjRhNDI5ZmFiNDFhMDhmNDYz
NzQ0OTBjNjQ3ZDFhYzlkYjIyMi4uODFlYmMyMzU4MWFhNTRmZGVjYmI2ZmI2OTk2YTI4MDc3ZjNh
MDcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaApAQCAt
MTA4LDkgKzEwOCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBi
b29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJikgb3ZlcnJpZGU7CisgICAgRmlsdGVySW52YWxpZGF0aW9uIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4geyBBdG9tU3RyaW5nIHsgaW4xKCkgfSwgQXRvbVN0cmluZyB7IGlu
MigpIH0gfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBT
VkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5p
bWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKaW5kZXggN2MxNjY0M2VlOWQ2OTdkMTBkNGQ2
Mzc4MWYxY2UzOGY1MmQ2ZWU4MS4uNjQxZjZmZDYwM2MyZTA2MmYyNTdkMzk3NjhjZjY5YzkyYzZi
MDYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuY3BwCkBAIC0xMzUsMjYgKzEzNSwyNyBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdAog
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQogCi1ib29sIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQorRmlsdGVySW52YWxpZGF0aW9uIFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIEZFQ29udm9sdmVNYXRyaXgqIGNv
bnZvbHZlTWF0cml4ID0gc3RhdGljX2Nhc3Q8RkVDb252b2x2ZU1hdHJpeCo+KGVmZmVjdCk7Cisg
ICAgYXV0byYgZmVDb252b2x2ZU1hdHJpeCA9IGRvd25jYXN0PEZFQ29udm9sdmVNYXRyaXg+KGVm
ZmVjdCk7CisKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cikKLSAg
ICAgICAgcmV0dXJuIGNvbnZvbHZlTWF0cml4LT5zZXRFZGdlTW9kZShlZGdlTW9kZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGZlQ29udm9sdmVNYXRyaXguc2V0RWRnZU1vZGUoZWRnZU1vZGUoKSk7CiAg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkaXZpc29yQXR0cikKLSAgICAgICAgcmV0dXJu
IGNvbnZvbHZlTWF0cml4LT5zZXREaXZpc29yKGRpdmlzb3IoKSk7CisgICAgICAgIHJldHVybiBm
ZUNvbnZvbHZlTWF0cml4LnNldERpdmlzb3IoZGl2aXNvcigpKTsKICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmJpYXNBdHRyKQotICAgICAgICByZXR1cm4gY29udm9sdmVNYXRyaXgtPnNl
dEJpYXMoYmlhcygpKTsKKyAgICAgICAgcmV0dXJuIGZlQ29udm9sdmVNYXRyaXguc2V0Qmlhcyhi
aWFzKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0WEF0dHIpCi0gICAg
ICAgIHJldHVybiBjb252b2x2ZU1hdHJpeC0+c2V0VGFyZ2V0T2Zmc2V0KEludFBvaW50KHRhcmdl
dFgoKSwgdGFyZ2V0WSgpKSk7CisgICAgICAgIHJldHVybiBmZUNvbnZvbHZlTWF0cml4LnNldFRh
cmdldE9mZnNldChJbnRQb2ludCh0YXJnZXRYKCksIHRhcmdldFkoKSkpOwogICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0WUF0dHIpCi0gICAgICAgIHJldHVybiBjb252b2x2ZU1h
dHJpeC0+c2V0VGFyZ2V0T2Zmc2V0KEludFBvaW50KHRhcmdldFgoKSwgdGFyZ2V0WSgpKSk7Cisg
ICAgICAgIHJldHVybiBmZUNvbnZvbHZlTWF0cml4LnNldFRhcmdldE9mZnNldChJbnRQb2ludCh0
YXJnZXRYKCksIHRhcmdldFkoKSkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2Vy
bmVsVW5pdExlbmd0aEF0dHIpCi0gICAgICAgIHJldHVybiBjb252b2x2ZU1hdHJpeC0+c2V0S2Vy
bmVsVW5pdExlbmd0aChGbG9hdFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRM
ZW5ndGhZKCkpKTsKKyAgICAgICAgcmV0dXJuIGZlQ29udm9sdmVNYXRyaXguc2V0S2VybmVsVW5p
dExlbmd0aChGbG9hdFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZ
KCkpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyKQot
ICAgICAgICByZXR1cm4gY29udm9sdmVNYXRyaXgtPnNldFByZXNlcnZlQWxwaGEocHJlc2VydmVB
bHBoYSgpKTsKKyAgICAgICAgcmV0dXJuIGZlQ29udm9sdmVNYXRyaXguc2V0UHJlc2VydmVBbHBo
YShwcmVzZXJ2ZUFscGhhKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiB9CiAKIHZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVyKGZsb2F0IHgsIGZsb2F0IHkp
CkBAIC0xODgsNyArMTg5LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmEKICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0CiB7CiAgICAgaW50IG9yZGVyWFZhbHVlID0gb3JkZXJYKCk7CiAgICAgaW50IG9yZGVy
WVZhbHVlID0gb3JkZXJZKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5oCmluZGV4IDE0N2JiNWVhOWY3MWJiNmZiMDBlODUyMWM0YTNhNGEzOTBl
NGJjMWUuLjUyNzk2ZmY1ODhhYTEwNWE2YTQ4ZjMwYTNlOTVmODQ3YTMwZWVlNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCkBAIC0xMDMs
OSArMTAzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIGJvb2wg
c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB7IEF0b21TdHJpbmcgeyBpbjEoKSB9IH07IH0KLSAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVj
dChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNW
R0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHAKaW5kZXggN2VjMDVkZjBjMjVkMGE3MWFmNjc0Yjc5MDQ4NGIwOGRhYjdhMDMwMy4uMWMy
ZTNiYzgyMDA0OTNiOTA3ZjE5ODViMzQzNmQ2YmVhOTg5YTU5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTc5LDIyICs3
OSwyMiBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29ucwogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1ib29s
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK0ZpbHRl
ckludmFsaWRhdGlvbiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmIGVmZmVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7Ci0gICAgRkVEaWZmdXNlTGlnaHRpbmcqIGRpZmZ1c2VMaWdodGluZyA9IHN0YXRp
Y19jYXN0PEZFRGlmZnVzZUxpZ2h0aW5nKj4oZWZmZWN0KTsKKyAgICBhdXRvJiBmZURpZmZ1c2VM
aWdodGluZyA9IGRvd25jYXN0PEZFRGlmZnVzZUxpZ2h0aW5nPihlZmZlY3QpOwogCiAgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpIHsKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgICAgIEFTU0VSVChy
ZW5kZXJlcik7CiAgICAgICAgIENvbG9yIGNvbG9yID0gcmVuZGVyZXItPnN0eWxlKCkuY29sb3JC
eUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCkuc3ZnU3R5bGUoKS5saWdodGlu
Z0NvbG9yKCkpOwotICAgICAgICByZXR1cm4gZGlmZnVzZUxpZ2h0aW5nLT5zZXRMaWdodGluZ0Nv
bG9yKGNvbG9yKTsKKyAgICAgICAgcmV0dXJuIGZlRGlmZnVzZUxpZ2h0aW5nLnNldExpZ2h0aW5n
Q29sb3IoY29sb3IpOwogICAgIH0KICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZh
Y2VTY2FsZUF0dHIpCi0gICAgICAgIHJldHVybiBkaWZmdXNlTGlnaHRpbmctPnNldFN1cmZhY2VT
Y2FsZShzdXJmYWNlU2NhbGUoKSk7CisgICAgICAgIHJldHVybiBmZURpZmZ1c2VMaWdodGluZy5z
ZXRTdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxlKCkpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0cikKLSAgICAgICAgcmV0dXJuIGRpZmZ1c2VMaWdodGlu
Zy0+c2V0RGlmZnVzZUNvbnN0YW50KGRpZmZ1c2VDb25zdGFudCgpKTsKKyAgICAgICAgcmV0dXJu
IGZlRGlmZnVzZUxpZ2h0aW5nLnNldERpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQoKSk7
CiAKLSAgICBhdXRvJiBsaWdodFNvdXJjZSA9IGNvbnN0X2Nhc3Q8TGlnaHRTb3VyY2UmPihkaWZm
dXNlTGlnaHRpbmctPmxpZ2h0U291cmNlKCkpOworICAgIGF1dG8mIGxpZ2h0U291cmNlID0gY29u
c3RfY2FzdDxMaWdodFNvdXJjZSY+KGZlRGlmZnVzZUxpZ2h0aW5nLmxpZ2h0U291cmNlKCkpOwog
ICAgIGNvbnN0IFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdodEVsZW1lbnQgPSBTVkdGRUxpZ2h0RWxl
bWVudDo6ZmluZExpZ2h0RWxlbWVudCh0aGlzKTsKICAgICBBU1NFUlQobGlnaHRFbGVtZW50KTsK
IApAQCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojpz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsCiAgICAgICAgIHJl
dHVybiBsaWdodFNvdXJjZS5zZXRMaW1pdGluZ0NvbmVBbmdsZShsaWdodEVsZW1lbnQtPmxpbWl0
aW5nQ29uZUFuZ2xlKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7CiB9CiAKIHZvaWQg
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNW
R0ZFTGlnaHRFCiAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAK
LVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVy
RWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0CiB7CiAgICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVt
ZW50OjpmaW5kTGlnaHRFbGVtZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCmluZGV4
IGViZTFiNGE3MWNiNjkzMjdhNjYyNzQzZDczYzZmOWZiZGZhZmJkMDIuLjRiMTE3NjEwOTFiZTBi
ZjJlYTUzYTIzZjdiOWI1NTg3NGM4YTlhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKQEAgLTU3LDkgKzU3LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBG
aWx0ZXJJbnZhbGlkYXRpb24gc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYs
IGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4g
ZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IEF0b21T
dHJpbmcgeyBpbjEoKSB9IH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBj
b25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0
aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2lu
MSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggYTE1YmE0YjNl
MWUxNDdmZjRlMjFjOGRiYWJhNmZiYWQwODhhNTMzZC4uYzc2MzI2NDdmNDg5MTA2NmY3ZTg5Y2Zj
Y2QyNDljODJmYWU5NmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTgzLDE4ICs4MywxOCBAQCB2b2lkIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29ucwogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFy
c2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCi1ib29sIFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK0ZpbHRlckludmFsaWRhdGlvbiBTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZl
Y3QmIGVmZmVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgRkVEaXNw
bGFjZW1lbnRNYXAqIGRpc3BsYWNlbWVudE1hcCA9IHN0YXRpY19jYXN0PEZFRGlzcGxhY2VtZW50
TWFwKj4oZWZmZWN0KTsKKyAgICBhdXRvJiBmZURpc3BsYWNlbWVudE1hcCA9IGRvd25jYXN0PEZF
RGlzcGxhY2VtZW50TWFwPihlZmZlY3QpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eENoYW5uZWxTZWxlY3RvckF0dHIpCi0gICAgICAgIHJldHVybiBkaXNwbGFjZW1lbnRNYXAtPnNl
dFhDaGFubmVsU2VsZWN0b3IoeENoYW5uZWxTZWxlY3RvcigpKTsKKyAgICAgICAgcmV0dXJuIGZl
RGlzcGxhY2VtZW50TWFwLnNldFhDaGFubmVsU2VsZWN0b3IoeENoYW5uZWxTZWxlY3RvcigpKTsK
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyKQotICAg
ICAgICByZXR1cm4gZGlzcGxhY2VtZW50TWFwLT5zZXRZQ2hhbm5lbFNlbGVjdG9yKHlDaGFubmVs
U2VsZWN0b3IoKSk7CisgICAgICAgIHJldHVybiBmZURpc3BsYWNlbWVudE1hcC5zZXRZQ2hhbm5l
bFNlbGVjdG9yKHlDaGFubmVsU2VsZWN0b3IoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpzY2FsZUF0dHIpCi0gICAgICAgIHJldHVybiBkaXNwbGFjZW1lbnRNYXAtPnNldFNjYWxl
KHNjYWxlKCkpOworICAgICAgICByZXR1cm4gZmVEaXNwbGFjZW1lbnRNYXAuc2V0U2NhbGUoc2Nh
bGUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKIH0KIAogdm9pZCBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck4K
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpjcmVhdGVGaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICByZXR1cm4gRkVEaXNwbGFjZW1lbnRNYXA6OmNy
ZWF0ZSh4Q2hhbm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgK
aW5kZXggYjJjOWU5YmY4YmU5MWRiYTA2M2ZkMmI4MDQ4ZTRjNGYwNmQzYjM5ZS4uMGNhMDAzMmRj
YTJkMTkzMDUxMzZiZmMxYTY5OTNmYjZkNzQxYzAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaApAQCAtOTAsOSArOTAsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92
ZXJyaWRlOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwog
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHsgQXRvbVN0cmluZyB7IGluMSgpIH0sIEF0b21TdHJpbmcgeyBpbjIo
KSB9IH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1h
dGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCBkMWU2MTg0OGFhYzE4MjZmNDE2N2I1ZjExMTViZjE1
ZDlmYWRjYjkyLi5mODVmMDMwNDhiNDc2YzkzNjY1ZjdmMmY4NDQzNmNjNzZiMGYyNTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC04Nyw3
ICs4NywxMyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0bwogCiB2b2lkIFNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5
QXR0cikgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
KyAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAg
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtOTYsNiArMTAyLDM4IEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwogfQogCitGaWx0ZXJJbnZhbGlkYXRpb24gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYgZWZmZWN0LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBhdXRvJiBmZURyb3BTaGFkb3cgPSBkb3duY2FzdDxG
RURyb3BTaGFkb3c+KGVmZmVjdCk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0
ZERldmlhdGlvbkF0dHIpIHsKKyAgICAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3Rk
RGV2aWF0aW9uWSgpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246
OlJlYnVpbGQ7CisKKyAgICAgICAgYXV0byBzdGREZXZpYXRpb25YQ2hhbmdlZCA9IGZlRHJvcFNo
YWRvdy5zZXRTdGREZXZpYXRpb25YKHN0ZERldmlhdGlvblgoKSk7CisgICAgICAgIGF1dG8gc3Rk
RGV2aWF0aW9uWUNoYW5nZWQgPSBmZURyb3BTaGFkb3cuc2V0U3RkRGV2aWF0aW9uWShzdGREZXZp
YXRpb25ZKCkpOworICAgICAgICByZXR1cm4gc3RkRGV2aWF0aW9uWENoYW5nZWQgIT0gRmlsdGVy
SW52YWxpZGF0aW9uOjpOb25lID8gc3RkRGV2aWF0aW9uWENoYW5nZWQgOiBzdGREZXZpYXRpb25Z
Q2hhbmdlZDsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikK
KyAgICAgICAgcmV0dXJuIGZlRHJvcFNoYWRvdy5zZXREeChkeCgpKTsKKyAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikKKyAgICAgICAgcmV0dXJuIGZlRHJvcFNoYWRvdy5zZXRE
eShkeSgpKTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
OworICAgIEFTU0VSVChyZW5kZXJlcik7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0g
cmVuZGVyZXItPnN0eWxlKCk7CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmZsb29k
X2NvbG9yQXR0cikKKyAgICAgICAgcmV0dXJuIGZlRHJvcFNoYWRvdy5zZXRTaGFkb3dDb2xvcihz
dHlsZS5zdmdTdHlsZSgpLmZsb29kQ29sb3IoKSk7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpmbG9vZF9vcGFjaXR5QXR0cikKKyAgICAgICAgcmV0dXJuIGZlRHJvcFNoYWRvdy5zZXRT
aGFkb3dPcGFjaXR5KHN0eWxlLnN2Z1N0eWxlKCkuZmxvb2RPcGFjaXR5KCkpOworCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsK
K30KKworCiBJbnRPdXRzZXRzIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6Om91dHNldHMoY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBw
cmltaXRpdmVVbml0cykgY29uc3QKIHsKICAgICBhdXRvIG9mZnNldCA9IFNWR0ZpbHRlcjo6Y2Fs
Y3VsYXRlUmVzb2x2ZWRTaXplKHsgZHgoKSwgZHkoKSB9LCB0YXJnZXRCb3VuZGluZ0JveCwgcHJp
bWl0aXZlVW5pdHMpOwpAQCAtMTAzLDcgKzE0MSw3IEBAIEludE91dHNldHMgU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudDo6b3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBT
CiAgICAgcmV0dXJuIEZFRHJvcFNoYWRvdzo6Y2FsY3VsYXRlT3V0c2V0cyhvZmZzZXQsIHN0ZERl
dmlhdGlvbik7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0
b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5oCmluZGV4IGU4YTg5ODcxNGRjNGM3ODUzZGIzMTBhMzllNmFlNDZkNDI3Mjg4MWYuLmU4
YTg5ZTY1MzA1Y2I3YWEyNDBiY2JmY2VhYzUyNzQ1Njg1Mjc5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaApAQCAtNTMsOSArNTMsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAorICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1l
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgQXRvbVN0cmluZyB7IGluMSgpIH0gfTsgfQog
ICAgIEludE91dHNldHMgb3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94
LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVy
JiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0
aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RW
ZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0
aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3Ry
aW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUZsb29kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwCmluZGV4IDk1MjEzMzMzN2NhZTcwMGM2ZjdkOTI0MGUwMjFlZDBmOWZmYTU0MTEuLjgzODY0
MDc2OWI4YzRmNWMyYTA5YjdjMWY0OTExMWExYmJkMDgxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcApAQCAtNDMsMjMgKzQzLDIzIEBAIFJlZjxTVkdGRUZsb29k
RWxlbWVudD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBECiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVGbG9vZEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6c2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKK0ZpbHRlckludmFsaWRhdGlvbiBTVkdGRUZsb29kRWxlbWVudDo6c2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYgZWZmZWN0LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKTsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwotICAgIEZFRmxvb2QqIGZsb29kID0gc3RhdGljX2Nh
c3Q8RkVGbG9vZCo+KGVmZmVjdCk7Ci0KKyAgICAKKyAgICBhdXRvJiBmZUZsb29kID0gZG93bmNh
c3Q8RkVGbG9vZD4oZWZmZWN0KTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmZsb29k
X2NvbG9yQXR0cikKLSAgICAgICAgcmV0dXJuIGZsb29kLT5zZXRGbG9vZENvbG9yKHN0eWxlLnN2
Z1N0eWxlKCkuZmxvb2RDb2xvcigpKTsKKyAgICAgICAgcmV0dXJuIGZlRmxvb2Quc2V0Rmxvb2RD
b2xvcihzdHlsZS5zdmdTdHlsZSgpLmZsb29kQ29sb3IoKSk7CiAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpmbG9vZF9vcGFjaXR5QXR0cikKLSAgICAgICAgcmV0dXJuIGZsb29kLT5zZXRG
bG9vZE9wYWNpdHkoc3R5bGUuc3ZnU3R5bGUoKS5mbG9vZE9wYWNpdHkoKSk7CisgICAgICAgIHJl
dHVybiBmZUZsb29kLnNldEZsb29kT3BhY2l0eShzdHlsZS5zdmdTdHlsZSgpLmZsb29kT3BhY2l0
eSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogfQogCi1SZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxv
b2RFbGVtZW50LmgKaW5kZXggOWM0OGRhMGViMDdiYWNiNDg1ZWJhMDRhODNjMDVjZTM2MDEyZWYy
Mi4uZTg2ZDQ2YTA0Njc4YzVkZjY4MTE5ZDgzNDRmNWY5ZjcwZTEyMjAxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKQEAgLTM2LDggKzM2LDggQEAgcHJpdmF0ZToKICAg
ICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZF
Rmxvb2RFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIEZpbHRlckludmFs
aWRhdGlvbiBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZp
bHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApp
bmRleCBjYjE5MGFkMzU0MWQyMmNmZjBjZTdjY2JmNThlMzZjYzBmYjVjNzNlLi5iNDQxYjFkNjM3
YTZlODIzZWJkYjY1N2ZlZDJiZjI2OTAzNGZkMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtODUsNyArODUsMTMgQEAgdm9pZCBT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEEKIAogdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjplZGdlTW9kZUF0dHIpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjppbkF0dHIpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7CiAgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTk0LDEzICsxMDAsMzMgQEAgdm9pZCBTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCitGaWx0ZXJJbnZhbGlkYXRpb24gU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBl
ZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIGF1dG8mIGZlR2F1
c3NpYW5CbHVyID0gZG93bmNhc3Q8RkVHYXVzc2lhbkJsdXI+KGVmZmVjdCk7CisKKyAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIpIHsKKyAgICAgICAgaWYgKHN0
ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKKyAgICAgICAgICAgIHJl
dHVybiBGaWx0ZXJJbnZhbGlkYXRpb246OlJlYnVpbGQ7CisgICAgICAgIAorICAgICAgICBhdXRv
IHN0ZERldmlhdGlvblhDaGFuZ2VkID0gZmVHYXVzc2lhbkJsdXIuc2V0U3RkRGV2aWF0aW9uWChz
dGREZXZpYXRpb25YKCkpOworICAgICAgICBhdXRvIHN0ZERldmlhdGlvbllDaGFuZ2VkID0gZmVH
YXVzc2lhbkJsdXIuc2V0U3RkRGV2aWF0aW9uWShzdGREZXZpYXRpb25ZKCkpOworICAgICAgICBy
ZXR1cm4gc3RkRGV2aWF0aW9uWENoYW5nZWQgIT0gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lID8g
c3RkRGV2aWF0aW9uWENoYW5nZWQgOiBzdGREZXZpYXRpb25ZQ2hhbmdlZDsKKyAgICB9CisKKyAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cikKKyAgICAgICAgcmV0dXJu
IGZlR2F1c3NpYW5CbHVyLnNldEVkZ2VNb2RlKGVkZ2VNb2RlKCkpOworCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKK30KKwog
SW50T3V0c2V0cyBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om91dHNldHMoY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRp
dmVVbml0cykgY29uc3QKIHsKICAgICBhdXRvIHN0ZERldmlhdGlvbiA9IFNWR0ZpbHRlcjo6Y2Fs
Y3VsYXRlUmVzb2x2ZWRTaXplKHsgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCkgfSwg
dGFyZ2V0Qm91bmRpbmdCb3gsIHByaW1pdGl2ZVVuaXRzKTsKICAgICByZXR1cm4gRkVHYXVzc2lh
bkJsdXI6OmNhbGN1bGF0ZU91dHNldHMoc3RkRGV2aWF0aW9uKTsKIH0KIAotUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
Y3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgaWYgKHN0ZERldmlh
dGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKaW5k
ZXggNDFmYTU1MzM0ZTBjM2FjNGJmMjE4Yjc0MzQ1NTI0MWY5NWJmYWUxMy4uN2EzZGMyMjE1NWRi
ZDYzYjM3ODAyY2JiNTBjMTJkYTk4MTI1NWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaApAQCAtNTMsOSArNTMsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIAorICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRGaWx0ZXJF
ZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgQXRvbVN0cmluZyB7IGluMSgpIH0gfTsgfQogICAgIElu
dE91dHNldHMgb3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29u
c3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlv
bkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0
ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpj
cmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDRkNzMyMjk0ZmQ1ODIzYzY5ZGY0MDhhZTE2ZWFjOTQyN2JjNmM5NWIuLmZkYjA4NzhkMTNm
MzkwMWExMjMzZDAyZGNjZmMwNzdiMmM4OGI0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcApAQCAtMTM3LDYgKzEzNyw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGJ1
aWxkUGVuZGluZ1Jlc291cmNlKCk7CisgICAgICAgIG1hcmtGaWx0ZXJGb3JJbnZhbGlkYXRpb24o
RmlsdGVySW52YWxpZGF0aW9uOjpSZWJ1aWxkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMjEwLDcgKzIxMSw3IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRS
ZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZlCiAgICAgcmV0dXJuIHsg
aW1hZ2VCdWZmZXIsIGltYWdlUmVjdCB9OwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0
KSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZp
bHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3QKIHsKICAgICBp
ZiAobV9jYWNoZWRJbWFnZSkgewogICAgICAgICBhdXRvIGltYWdlID0gbV9jYWNoZWRJbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmgKaW5kZXggYTVmNWIwNmE0NDU5YWMyYzkwMTZmN2NmNjMyMTMyMzA1OTEyNjY2Yy4u
YzBlNmFhNGY1MmU0YjFjODg4MTVkMjFiZTcwMjgxMjRjYTJlM2VmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBpbWFnZUJ1ZmZlckZv
ckVmZmVjdChjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Q7
CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVy
JiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0
aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RW
ZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7CiAgICAgdm9p
ZCByZXF1ZXN0SW1hZ2VSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxl
bWVudC5jcHAKaW5kZXggNzIyMmIyMzNjOGEyMDYxZDlmNzdlNWMxMmExYjBlMjcwOGFiOThlMS4u
MjRiZTMxNzQyMTQ4ZTQ5MGYzZmNlZTQ4OTkyYTU3ZDUyODlhMDI0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCkBAIC00NCw2ICs0NCwxMyBAQCBSZWY8U1ZHRkVN
ZXJnZUVsZW1lbnQ+IFNWR0ZFTWVyZ2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFTWVyZ2VFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK3ZvaWQgU1ZHRkVNZXJnZUVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQoreworICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CisgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgbWFya0ZpbHRlckZv
ckludmFsaWRhdGlvbihGaWx0ZXJJbnZhbGlkYXRpb246OlJlYnVpbGQpOworfQorCiBWZWN0b3I8
QXRvbVN0cmluZz4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdElucHV0c05hbWVzKCkg
Y29uc3QKIHsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gaW5wdXRzTmFtZXM7CkBAIC01Miw3ICs1
OSw3IEBAIFZlY3RvcjxBdG9tU3RyaW5nPiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0
SW5wdXRzTmFtZXMoKSBjb25zdAogICAgIHJldHVybiBpbnB1dHNOYW1lczsKIH0KIAotUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0cywgY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50Ojpj
cmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVj
dG9yJiBpbnB1dHMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IEZFTWVyZ2U6OmNyZWF0ZShpbnB1dHMuc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50LmgKaW5kZXggNzU4Y2NkNmMyZWY4NGY5NzQ2Njc1NWEwNzI3NDU2OTJhNzJl
ODYzNi4uYTJjMDQ0MDI0ZWM0MWI4NjdiZmM1M2Y4ZGJlMzRmYTJjMTc3OTU1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKQEAgLTM2LDggKzM2LDEwIEBAIHByaXZhdGU6
CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxT
VkdGRU1lcmdlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsK
ICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKKyAgICB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOworCiAgICAgVmVjdG9yPEF0b21T
dHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVGaWx0
ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCA2
MTA4MmE0OTgzOTMxZDhhYjcwMzg1MzQ0ZTYyN2MzY2I1NzUyNzQxLi40NzM0OWFhNDkzY2VjOTFj
Yjg3ZWU1NGI4ZTQ3ZWEzYTAxOThhYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC04MCwzOSArODAsNDAgQEAgdm9pZCBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG8KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotYm9vbCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50
OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorRmlsdGVySW52YWxpZGF0aW9uIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QmIGVmZmVjdCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgRkVNb3JwaG9sb2d5KiBtb3Jw
aG9sb2d5ID0gc3RhdGljX2Nhc3Q8RkVNb3JwaG9sb2d5Kj4oZWZmZWN0KTsKKyAgICBhdXRvJiBm
ZU1vcnBob2xvZ3kgPSBkb3duY2FzdDxGRU1vcnBob2xvZ3k+KGVmZmVjdCk7CiAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpCi0gICAgICAgIHJldHVybiBtb3JwaG9s
b2d5LT5zZXRNb3JwaG9sb2d5T3BlcmF0b3Ioc3ZnT3BlcmF0b3IoKSk7CisgICAgICAgIHJldHVy
biBmZU1vcnBob2xvZ3kuc2V0TW9ycGhvbG9neU9wZXJhdG9yKHN2Z09wZXJhdG9yKCkpOwogICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmFkaXVzQXR0cikgewogICAgICAgICAvLyBCb3Ro
IHNldFJhZGl1cyBmdW5jdGlvbnMgc2hvdWxkIGJlIGV2YWx1YXRlZCBzZXBhcmF0ZWx5LgotICAg
ICAgICBib29sIGlzUmFkaXVzWENoYW5nZWQgPSBtb3JwaG9sb2d5LT5zZXRSYWRpdXNYKHJhZGl1
c1goKSk7Ci0gICAgICAgIGJvb2wgaXNSYWRpdXNZQ2hhbmdlZCA9IG1vcnBob2xvZ3ktPnNldFJh
ZGl1c1kocmFkaXVzWSgpKTsKLSAgICAgICAgcmV0dXJuIGlzUmFkaXVzWENoYW5nZWQgfHwgaXNS
YWRpdXNZQ2hhbmdlZDsKKyAgICAgICAgYXV0byByYWRpdXNYQ2hhbmdlZCA9IGZlTW9ycGhvbG9n
eS5zZXRSYWRpdXNYKHJhZGl1c1goKSk7CisgICAgICAgIGF1dG8gcmFkaXVzWUNoYW5nZWQgPSBm
ZU1vcnBob2xvZ3kuc2V0UmFkaXVzWShyYWRpdXNZKCkpOworICAgICAgICByZXR1cm4gcmFkaXVz
WENoYW5nZWQgIT0gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lID8gcmFkaXVzWENoYW5nZWQgOiBy
YWRpdXNZQ2hhbmdlZDsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEZpbHRlckludmFsaWRhdGlvbjo6Tm9uZTsKIH0KIAog
dm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
b3BlcmF0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRpdXNBdHRyKSB7CiAgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKLSAgICAgICAgICAgIHNldFNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
QVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnJhZGl1c0F0dHIpOwotICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWlu
QXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9
CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAg
aWYgKHJhZGl1c1goKSA8IDAgfHwgcmFkaXVzWSgpIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAppbmRleCA1
ZmUwZDc2NjAwY2JkYThhZDcxMWIzZmIyZTNmMmMzMTE0NjZhODFiLi4wZTYyZmM5NzBmZTU0NTUy
ODYwMTZjZWQwMzg5ZmI1NzRhMGEzNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmgKQEAgLTgwLDkgKzgwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKIAotICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBGaWx0ZXJJbnZhbGlk
YXRpb24gc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0
SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IEF0b21TdHJpbmcgeyBpbjEo
KSB9IH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1h
dGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5jcHAKaW5kZXggY2I5NDFkNDUxNDI0ZTAwY2I0NjcyY2FmZmIyMDliMzJmMDg2OGU0
ZC4uMjc1ODIxZWZjYmQ2ZWYwMWE4NzE2Yzk0ZjIxNzhmMWQ5MGNiYTUzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcwLDcgKzcwLDEzIEBAIHZvaWQg
U1ZHRkVPZmZzZXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyCiAKIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpkeUF0dHIp
IHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAg
ICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKICAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHNldFNW
R1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTc5LDEzICs4NSwyNiBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQog
CitGaWx0ZXJJbnZhbGlkYXRpb24gU1ZHRkVPZmZzZXRFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQoreworICAgIGF1dG8mIG9mZnNldCA9IGRvd25jYXN0PEZFT2Zmc2V0PihlZmZlY3QpOwor
CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIpCisgICAgICAgIHJldHVybiBv
ZmZzZXQuc2V0RHgoZHgoKSk7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkeUF0dHIp
CisgICAgICAgIHJldHVybiBvZmZzZXQuc2V0RHkoZHkoKSk7CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOworfQorCiBJbnRP
dXRzZXRzIFNWR0ZFT2Zmc2V0RWxlbWVudDo6b3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dEJvdW5kaW5nQm94LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKSBj
b25zdAogewogICAgIGF1dG8gb2Zmc2V0ID0gU1ZHRmlsdGVyOjpjYWxjdWxhdGVSZXNvbHZlZFNp
emUoeyBkeCgpLCBkeSgpIH0sIHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVVbml0cyk7CiAg
ICAgcmV0dXJuIEZFT2Zmc2V0OjpjYWxjdWxhdGVPdXRzZXRzKG9mZnNldCk7CiB9CiAKLVJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmNyZWF0
ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIHJldHVybiBGRU9mZnNldDo6
Y3JlYXRlKGR4KCksIGR5KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5oCmluZGV4IDRjYWYwM2I5NjI5YjNjYzNhMzk3YjM2MTBkOWUyYWJlMmVjYTIyNjkuLmIxMGEw
ZGNlYWM2ODcyY2VkYWU0YTc1ZTZkNDQwMThiM2UzYzQ2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmgKQEAgLTQ3LDkgKzQ3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAKKyAgICBGaWx0ZXJJbnZhbGlkYXRpb24gc2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
ICAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB7IEF0b21TdHJpbmcgeyBpbjEoKSB9IH07IH0KICAgICBJbnRPdXRz
ZXRzIG91dHNldHMoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVGaWx0
ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRl
KHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAKaW5kZXggMDllMTdiZDA1ODFmODRhMTNmM2FjZTc4ZmVjZWQxZWQ2YWUw
NzUzZi4uMzgwYTZhNTdiMWE5MzQ3NDdiNGQyMWNhZjMyZTYxYjQwM2E1MWM4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApA
QCAtODcsMjQgKzg3LDI0IEBAIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uCiAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiB9CiAKLWJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKK0ZpbHRlckludmFsaWRhdGlvbiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIEZFU3BlY3VsYXJMaWdodGluZyogc3BlY3VsYXJM
aWdodGluZyA9IHN0YXRpY19jYXN0PEZFU3BlY3VsYXJMaWdodGluZyo+KGVmZmVjdCk7CisgICAg
YXV0byYgZmVTcGVjdWxhckxpZ2h0aW5nID0gZG93bmNhc3Q8RkVTcGVjdWxhckxpZ2h0aW5nPihl
ZmZlY3QpOwogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0
dHIpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7
CiAgICAgICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAgICAgIENvbG9yIGNvbG9yID0gcmVuZGVy
ZXItPnN0eWxlKCkuY29sb3JCeUFwcGx5aW5nQ29sb3JGaWx0ZXIocmVuZGVyZXItPnN0eWxlKCku
c3ZnU3R5bGUoKS5saWdodGluZ0NvbG9yKCkpOwotICAgICAgICByZXR1cm4gc3BlY3VsYXJMaWdo
dGluZy0+c2V0TGlnaHRpbmdDb2xvcihjb2xvcik7CisgICAgICAgIHJldHVybiBmZVNwZWN1bGFy
TGlnaHRpbmcuc2V0TGlnaHRpbmdDb2xvcihjb2xvcik7CiAgICAgfQogICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cikKLSAgICAgICAgcmV0dXJuIHNwZWN1bGFy
TGlnaHRpbmctPnNldFN1cmZhY2VTY2FsZShzdXJmYWNlU2NhbGUoKSk7CisgICAgICAgIHJldHVy
biBmZVNwZWN1bGFyTGlnaHRpbmcuc2V0U3VyZmFjZVNjYWxlKHN1cmZhY2VTY2FsZSgpKTsKICAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyKQotICAgICAg
ICByZXR1cm4gc3BlY3VsYXJMaWdodGluZy0+c2V0U3BlY3VsYXJDb25zdGFudChzcGVjdWxhckNv
bnN0YW50KCkpOworICAgICAgICByZXR1cm4gZmVTcGVjdWxhckxpZ2h0aW5nLnNldFNwZWN1bGFy
Q29uc3RhbnQoc3BlY3VsYXJDb25zdGFudCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotICAgICAgICByZXR1cm4gc3BlY3VsYXJMaWdodGlu
Zy0+c2V0U3BlY3VsYXJFeHBvbmVudChzcGVjdWxhckV4cG9uZW50KCkpOworICAgICAgICByZXR1
cm4gZmVTcGVjdWxhckxpZ2h0aW5nLnNldFNwZWN1bGFyRXhwb25lbnQoc3BlY3VsYXJFeHBvbmVu
dCgpKTsKIAotICAgIGF1dG8mIGxpZ2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSY+
KHNwZWN1bGFyTGlnaHRpbmctPmxpZ2h0U291cmNlKCkpOworICAgIGF1dG8mIGxpZ2h0U291cmNl
ID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSY+KGZlU3BlY3VsYXJMaWdodGluZy5saWdodFNvdXJj
ZSgpKTsKICAgICBjb25zdCBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHRFbGVtZW50ID0gU1ZHRkVM
aWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7CiAgICAgQVNTRVJUKGxpZ2h0RWxl
bWVudCk7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdAogICAg
ICAgICByZXR1cm4gbGlnaHRTb3VyY2Uuc2V0TGltaXRpbmdDb25lQW5nbGUobGlnaHRFbGVtZW50
LT5saW1pdGluZ0NvbmVBbmdsZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogfQog
CiB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFNWR0ZFTGlnaHQKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZl
Y3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0KGNv
bnN0IFNWR0ZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIFJlZlB0ciBsaWdodEVsZW1lbnQgPSBTVkdG
RUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0RWxlbWVudCh0aGlzKTsKICAgICBpZiAoIWxpZ2h0RWxl
bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5oCmluZGV4IDE5NTFjM2U3ZGMwOTM1MDkzYzM5NWU4NDU1M2Q4YWNhNmRlZWRhMmUuLmUz
OGVhYWNiNTk0Y2MzMGQyYmRjY2Y4YzI5YWUxZTBhMWQzMTc2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaApAQCAtNTcsOSArNTcs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOworICAgIEZpbHRlckludmFsaWRhdGlvbiBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHsgQXRvbVN0cmluZyB7IGluMSgpIH0gfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0
b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0
IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0
ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4IDVjNWE2ODgzYjc4ZTY4ZmJi
MDg2YjJhNGZhMTRmODI1ZDU2MWQ4ODQuLjFjNTdkNWQzZmYyNTc2YjE3MjkyNDU3MzRiZGM1MDRj
NjMxYmU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTY4
LDcgKzY4LDcgQEAgdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6Y3JlYXRlRmls
dGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEZFVGlsZTo6Y3JlYXRl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCAwMTIzYTg3MzZh
OGVlYTMxYTY0NTBlN2JiNGUzNTBlNWRiNDhjZDMyLi5lY2U2MTQ1YWZkY2Y0ZWFmOGU4ODI2Zjk2
MDVjZTE4Y2YwZDkzZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZp
bHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBBdG9tU3Ry
aW5nIHsgaW4xKCkgfSB9OyB9Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVGaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29u
c3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlv
bkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEg
eyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5kZXggNmI4NDZjNjcwZGM5MWVmYjk0ZGNk
NmFjMGJhNWNiYjY2ZDNjNzhlNy4uMDZiOWJiNmJiOWE1YmUxNTdmOGY4NGIzMDg4YzNiYjAxYjg4
MDY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNw
cApAQCAtODgsMjIgKzg4LDI1IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSk7CiB9CiAKLWJvb2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKK0ZpbHRlckludmFsaWRhdGlvbiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzZXRGaWx0ZXJF
ZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0JiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogewotICAgIEZFVHVyYnVsZW5jZSogdHVyYnVsZW5jZSA9IHN0YXRpY19jYXN0
PEZFVHVyYnVsZW5jZSo+KGVmZmVjdCk7CisgICAgYXV0byYgZmVUdXJidWxlbmNlID0gZG93bmNh
c3Q8RkVUdXJidWxlbmNlPihlZmZlY3QpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
dHlwZUF0dHIpCi0gICAgICAgIHJldHVybiB0dXJidWxlbmNlLT5zZXRUeXBlKHR5cGUoKSk7Cisg
ICAgICAgIHJldHVybiBmZVR1cmJ1bGVuY2Uuc2V0VHlwZSh0eXBlKCkpOwogICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyKQotICAgICAgICByZXR1cm4gdHVyYnVs
ZW5jZS0+c2V0U3RpdGNoVGlsZXMoc3RpdGNoVGlsZXMoKSk7Ci0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0cikKLSAgICAgICAgcmV0dXJuICh0dXJidWxlbmNl
LT5zZXRCYXNlRnJlcXVlbmN5WChiYXNlRnJlcXVlbmN5WCgpKSB8fCB0dXJidWxlbmNlLT5zZXRC
YXNlRnJlcXVlbmN5WShiYXNlRnJlcXVlbmN5WSgpKSk7CisgICAgICAgIHJldHVybiBmZVR1cmJ1
bGVuY2Uuc2V0U3RpdGNoVGlsZXMoc3RpdGNoVGlsZXMoKSk7CisgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0cikgeworICAgICAgICBhdXRvIGJhc2VGcmVxdWVu
Y3lYQ2hhbmdlZCA9IGZlVHVyYnVsZW5jZS5zZXRCYXNlRnJlcXVlbmN5WChiYXNlRnJlcXVlbmN5
WCgpKTsKKyAgICAgICAgYXV0byBiYXNlRnJlcXVlbmN5WUNoYW5nZWQgPSBmZVR1cmJ1bGVuY2Uu
c2V0QmFzZUZyZXF1ZW5jeVkoYmFzZUZyZXF1ZW5jeVkoKSk7CisgICAgICAgIHJldHVybiBiYXNl
RnJlcXVlbmN5WENoYW5nZWQgIT0gRmlsdGVySW52YWxpZGF0aW9uOjpOb25lID8gYmFzZUZyZXF1
ZW5jeVhDaGFuZ2VkIDogYmFzZUZyZXF1ZW5jeVlDaGFuZ2VkOworICAgIH0KICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnNlZWRBdHRyKQotICAgICAgICByZXR1cm4gdHVyYnVsZW5jZS0+
c2V0U2VlZChzZWVkKCkpOworICAgICAgICByZXR1cm4gZmVUdXJidWxlbmNlLnNldFNlZWQoc2Vl
ZCgpKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKQotICAg
ICAgICByZXR1cm4gdHVyYnVsZW5jZS0+c2V0TnVtT2N0YXZlcyhudW1PY3RhdmVzKCkpOworICAg
ICAgICByZXR1cm4gZmVUdXJidWxlbmNlLnNldE51bU9jdGF2ZXMobnVtT2N0YXZlcygpKTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
RmlsdGVySW52YWxpZGF0aW9uOjpOb25lOwogfQogCiB2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBA
IC0xMTcsNyArMTIwLDcgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmZpbHRl
ckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6Y3JlYXRlRmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAg
ICAgaWYgKGJhc2VGcmVxdWVuY3lYKCkgPCAwIHx8IGJhc2VGcmVxdWVuY3lZKCkgPCAwKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5oCmluZGV4IDJmYzM0N2UyODhkODQ4YjJlY2ZkMTI3ZjU0ZGFjOWUwMDNhMWQyMzAu
LmNiNjIxNjE3ZTM1ZmJlZWJjY2YxNjFmM2M4NWRlNWU3ZGMyNDA3NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaApAQCAtMTE4LDggKzExOCw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKKyAgICBGaWx0ZXJJbnZhbGlk
YXRpb24gc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBjcmVhdGVGaWx0
ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4gbV9iYXNlRnJlcXVlbmN5WCB7IFNWR0FuaW1hdGVkTnVt
YmVyOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXggMTc5Yzc0NWEw
YTM3NDJkYTc1M2ZmMDQxNjgwOTRmNDYxMjAzN2Q1NS4uYzA1OGNmNzNiMDAzYmNkNmJiZDc1Zjlj
YTIwNjI5MGQwYTg1MGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbmxpbmVzLmgiCisjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC02NiwxMSArNjcsMzMgQEAgdm9pZCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG4KICAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSk7CiB9CiAKLWJvb2wgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpCitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVy
RWZmZWN0VmVjdG9yJiBpbnB1dHMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25D
b250ZXh0KQogewotICAgIC8vIFdoZW4gYWxsIGZpbHRlcnMgc3VwcG9ydCB0aGlzIG1ldGhvZCwg
aXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGEgcHVyZSB2aXJ0dWFsIG1ldGhvZC4KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2VmZmVjdCkKKyAg
ICAgICAgbV9lZmZlY3QgPSBjcmVhdGVGaWx0ZXJFZmZlY3QoZmlsdGVyLCBpbnB1dHMsIGRlc3Rp
bmF0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIG1fZWZmZWN0OworfQorCit2b2lkIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCit7CisgICAgYXV0byBpbnZhbGlkYXRpb24g
PSBGaWx0ZXJJbnZhbGlkYXRpb246OlJlcGFpbnQ7CisKKyAgICBpZiAobV9lZmZlY3QpCisgICAg
ICAgIGludmFsaWRhdGlvbiA9IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZSgqbV9lZmZlY3QsIGF0
dHJpYnV0ZSk7CisKKyAgICBtYXJrRmlsdGVyRm9ySW52YWxpZGF0aW9uKGludmFsaWRhdGlvbik7
Cit9CisKK3ZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjptYXJrRmls
dGVyRm9ySW52YWxpZGF0aW9uKEZpbHRlckludmFsaWRhdGlvbiBpbnZhbGlkYXRpb24pCit7Cisg
ICAgaWYgKGludmFsaWRhdGlvbiA9PSBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmUpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisg
ICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKj4ocmVu
ZGVyZXIpLT5tYXJrRmlsdGVyRm9ySW52YWxpZGF0aW9uKG1fZWZmZWN0LmdldCgpLCBpbnZhbGlk
YXRpb24pOworCisgICAgaWYgKGludmFsaWRhdGlvbiA9PSBGaWx0ZXJJbnZhbGlkYXRpb246OlJl
YnVpbGQpCisgICAgICAgIG1fZWZmZWN0ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKaW5kZXggYWE2MWEyOWQyODYz
ZDcwMTlkZjM2NzRkZGY3OGRkN2VlNDQ2NDkwMC4uNzM3MGZiZGQ1MTQ5NDE3ZjJjZjQ0MzQ2NWEw
MGRkODczNjQ1MDc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaApAQCAtMjQsNyArMjQsNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTUwLDExICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGgm
IGhlaWdodEFuaW1hdGVkKCkgeyByZXR1cm4gbV9oZWlnaHQ7IH0KICAgICBTVkdBbmltYXRlZFN0
cmluZyYgcmVzdWx0QW5pbWF0ZWQoKSB7IHJldHVybiBtX3Jlc3VsdDsgfQogCi0gICAgLy8gUmV0
dXJucyB0cnVlLCBpZiB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbGQgb25l
LgotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdm9pZCBtYXJrRmlsdGVyRm9ySW52YWxp
ZGF0aW9uKEZpbHRlckludmFsaWRhdGlvbik7CisKICAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3Ry
aW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogICAg
IHZpcnR1YWwgSW50T3V0c2V0cyBvdXRzZXRzKGNvbnN0IEZsb2F0UmVjdCYsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQotICAgIHZpcnR1YWwgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0
KSBjb25zdCA9IDA7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0
IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsKIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVG
aWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCopOwogCkBAIC02NSw3ICs2NSw4IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CisgICAgdmlydHVhbCBGaWx0ZXJJbnZhbGlk
YXRpb24gc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSB7IHJldHVybiBGaWx0ZXJJbnZhbGlkYXRpb246Ok5vbmU7IH0KKyAgICB2aXJ0
dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZUZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRl
c3RpbmF0aW9uQ29udGV4dCkgY29uc3QgPSAwOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNGaWx0
ZXJFZmZlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC03NCw2ICs3NSw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5v
ZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gbV9lZmZlY3Q7CisKICAgICAvLyBTcGVjOiBJZiB0aGUgeC95IGF0dHJpYnV0ZSBp
cyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjAlIiB3ZXJl
IHNwZWNpZmllZC4KICAgICAvLyBTcGVjOiBJZiB0aGUgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZSBp
cyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdl
cmUgc3BlY2lmaWVkLgogICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjAlIl9zKSB9OwpA
QCAtODMsMTIgKzg2LDYgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1f
cmVzdWx0IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAotaW5saW5l
IHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwcmltaXRpdmVBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKLXsKLSAgICBpZiAo
YXV0byogcHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigpKQotICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSo+KHByaW1pdGl2ZVJlbmRlcmVyKS0+
cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKaW5kZXggMjJiNjg0ODZiM2IyZWI0MTdj
NDFiYTc2Y2EzM2U2OTljNDU0ZDdmZS4uMzIzOGMwOTFlYTA0ZTA0MzkwMTA5MTc3MTA1YTY0MTE0
ODQ0ZWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBm
aWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24g
Y2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRp
b25Db250ZXh0KQorUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVy
RWxlbWVudCYgZmlsdGVyRWxlbWVudCwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5k
aW5nQm94LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKIHsKICAg
ICBhdXRvIGZpbHRlciA9IGFkb3B0UmVmKCpuZXcgU1ZHRmlsdGVyKHJlbmRlcmluZ01vZGUsIGZp
bHRlclNjYWxlLCBjbGlwT3BlcmF0aW9uLCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94
LCBmaWx0ZXJFbGVtZW50LnByaW1pdGl2ZVVuaXRzKCkpKTsKIAotICAgIGF1dG8gZXhwcmVzc2lv
biA9IGJ1aWxkZXIuYnVpbGRGaWx0ZXJFeHByZXNzaW9uKGZpbHRlckVsZW1lbnQsIGZpbHRlciwg
ZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICBhdXRvIGV4cHJlc3Npb24gPSBTVkdGaWx0ZXJCdWls
ZGVyOjpidWlsZEZpbHRlckV4cHJlc3Npb24oZmlsdGVyRWxlbWVudCwgZmlsdGVyLCBkZXN0aW5h
dGlvbkNvbnRleHQpOwogICAgIGlmICghZXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmgKaW5kZXggMDhiYzkxYzFiMmIyMmMxNTE2OWZkYjc4MzdlNWUzNWNiZWRkNTJjZi4uMDI4Yjdm
N2IwN2JhODcwNmViZmE5MWUxZDc1YzIyMDFkMTJmNmM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTMyLDEyICszMiwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlckltYWdlOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwotY2xhc3MgU1ZHRmlsdGVyQnVpbGRlcjsKIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7
CiAKIGNsYXNzIFNWR0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0Zp
bHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxl
LCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5h
dGlvbkNvbnRleHQpOworICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmls
dGVyRWxlbWVudCYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0
aW9uQ29udGV4dCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+
IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzLCBTVkdGaWx0ZXJFeHByZXNzaW9uJiYpOwogCiAg
ICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRC
b3VuZGluZ0JveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCA0Nzc0MGZhOTVlMjc4MzhjNTkwYmRm
Y2VjYTEwNDdlMmUwYmRkYjhiLi4zNDE3YmIzNjg5ODk4ODBiNWQwNzczNTc3ODQ0MWQ5Mjk4Mjcw
NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXJCdWlsZGVyLmNwcApAQCAtMTQ0LDkgKzE0NCw2IEBAIHN0ZDo6b3B0aW9uYWw8
U1ZHRmlsdGVyRXhwcmVzc2lvbj4gU1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRGaWx0ZXJFeHByZXNz
aW9uKFNWR0ZpCiAgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkpOwogI2VuZGlmCiAKLSAgICAgICAgaWYg
KGF1dG8gcmVuZGVyZXIgPSBlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBt
X2VmZmVjdFJlbmRlcmVyLmFkZChyZW5kZXJlciwgZWZmZWN0LmdldCgpKTsKLQogICAgICAgICBn
cmFwaC5hZGROYW1lZE5vZGUoQXRvbVN0cmluZyB7IGVmZmVjdEVsZW1lbnQucmVzdWx0KCkgfSwg
eyAqZWZmZWN0IH0pOwogICAgICAgICBncmFwaC5zZXROb2RlSW5wdXRzKCplZmZlY3QsIFdURk1v
dmUoKmlucHV0cykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRleCA2MDk5YWI5ZDI5MWVmNGZlOTA3
ZWM2MGI5ZGVjZmNjNGQ2YTBiZTgzLi5kYWU3MTBiZTkyMzk5MTE0YzhlYmU0ODljNGE4OGE5ZmEy
MDhhNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0yNyw5ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgRmlsdGVyRWZmZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xh
c3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZHRmlsdGVyOwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVu
dDsKIApAQCAtMzcsMTUgKzM1LDggQEAgY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHRmlsdGVyQnVpbGRlcigpID0g
ZGVmYXVsdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8U1ZHRmlsdGVyRXhwcmVzc2lvbj4gYnVpbGRG
aWx0ZXJFeHByZXNzaW9uKFNWR0ZpbHRlckVsZW1lbnQmLCBjb25zdCBTVkdGaWx0ZXImLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCk7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U1ZHRmlsdGVyRXhwcmVzc2lvbj4gYnVpbGRGaWx0ZXJFeHByZXNzaW9uKFNWR0Zp
bHRlckVsZW1lbnQmLCBjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRl
c3RpbmF0aW9uQ29udGV4dCk7CiAgICAgc3RhdGljIEludE91dHNldHMgY2FsY3VsYXRlRmlsdGVy
T3V0c2V0cyhTVkdGaWx0ZXJFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGlu
Z0JveCk7Ci0KLSAgICAvLyBSZXF1aXJlZCB0byBjaGFuZ2UgdGhlIGF0dHJpYnV0ZXMgb2YgYSBm
aWx0ZXIgZHVyaW5nIGFuIHN2Z0F0dHJpYnV0ZUNoYW5nZWQuCi0gICAgRmlsdGVyRWZmZWN0KiBl
ZmZlY3RCeVJlbmRlcmVyKFJlbmRlck9iamVjdCogb2JqZWN0KSB7IHJldHVybiBtX2VmZmVjdFJl
bmRlcmVyLmdldChvYmplY3QpOyB9Ci0KLXByaXZhdGU6Ci0gICAgSGFzaE1hcDxSZW5kZXJPYmpl
Y3QqLCBGaWx0ZXJFZmZlY3QqPiBtX2VmZmVjdFJlbmRlcmVyOwogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="487544"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>