<?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>262559</bug_id>
          
          <creation_ts>2023-10-03 11:35:24 -0700</creation_ts>
          <short_desc>[IFC][Cleanup] Detach (and rename) InlineFormattingGeometry from base class</short_desc>
          <delta_ts>2023-10-04 13:06:26 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</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>1982175</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-10-03 11:35:24 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1982176</commentid>
    <comment_count>1</comment_count>
      <attachid>468049</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-10-03 11:37:37 -0700</bug_when>
    <thetext>Created attachment 468049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1982431</commentid>
    <comment_count>2</comment_count>
      <attachid>468061</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-10-04 08:27:51 -0700</bug_when>
    <thetext>Created attachment 468061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1982440</commentid>
    <comment_count>3</comment_count>
      <attachid>468064</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-10-04 08:48:06 -0700</bug_when>
    <thetext>Created attachment 468064
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1982538</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-10-04 13:05:37 -0700</bug_when>
    <thetext>Committed 268867@main (d0d053701c57): &lt;https://commits.webkit.org/268867@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 468064.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1982539</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-10-04 13:06:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/116481504&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468049</attachid>
            <date>2023-10-03 11:37:37 -0700</date>
            <delta_ts>2023-10-04 08:27:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-262559-20231003113736.patch</filename>
            <type>text/plain</type>
            <size>81750</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBjNTkwNWI4Y2U1MGFhNjA3OGFhMTBiZjAwYjE5YjZhZmE2ZDk3NTk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMyBPY3QgMjAyMyAxMTozNTozMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtJRkNdW0Ns
ZWFudXBdIERldGFjaCAoYW5kIHJlbmFtZSkgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5CiBmcm9t
IGJhc2UgY2xhc3MgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjU1
OQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpBcyBpdCB0dXJucyBvdXQgdGhlcmUncyBu
b3QgbXVjaCBnZW9tZXRyeSBjb21wdXRhdGlvbiB0byBzaGFyZSBiZXR3ZWVuIGZvcm1hdHRpbmcg
Y29udGV4dHMuCgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0OgoqIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaDoKKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5Ojppc0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5Ojppc0lubGluZUZv
cm1hdHRpbmdHZW9tZXRyeSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tX
aXRoRml4ZWRIZWlnaHQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oOgooV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhG
aXhlZEhlaWdodCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CihXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdHZW9tZXRyeSBjb25zdCk6CigpOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdo
dCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2Vy
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Y29tcHV0ZUJyZWFrT3Bwb3J0dW5pdGllcyk6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6aW5pdGlhbGl6ZSk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6YmFsYW5jZVJhbmdlV2l0aExpbmVSZXF1
aXJlbWVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6YmFsYW5j
ZVJhbmdlV2l0aE5vTGluZVJlcXVpcmVtZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsaW5lTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OnVwZGF0ZUlubGluZUxheW91dFN0YXRlV2l0aExpbmVMYXlvdXRSZXN1bHQpOgoo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNv
bnRlbnRGb3JJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZUZyb21DYWNoZWRDb250ZW50KToK
KiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Zm9ybWF0dGluZ1V0aWxzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcC4KKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ1V0aWxzOjpJbmxpbmVGb3JtYXR0aW5nVXRpbHMpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nVXRpbHM6OmxvZ2ljYWxUb3BGb3JOZXh0TGluZSBjb25zdCk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lQmxvY2tDb250ZW50V2lkdGhB
bmRNYXJnaW4gY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6
OmlubGluZUJsb2NrQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb25zdCk6CihXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveCBj
b25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6ZmxpcFZpc3Vh
bFJlY3RUb0xvZ2ljYWxGb3JXcml0aW5nTW9kZSk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdVdGlsczo6Y29tcHV0ZWRUZXh0SW5kZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ1V0aWxzOjppbml0aWFsTGluZUhlaWdodCBjb25zdCk6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6ZmxvYXRDb25zdHJhaW50c0Zvckxp
bmUgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6Omhvcml6
b250YWxBbGlnbm1lbnRPZmZzZXQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
VXRpbHM6OmxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0TGluZSk6CihXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lSXRlbVdpZHRoIGNvbnN0KToKKFdl
YkNvcmU6OkxheW91dDo6ZW5kc1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5KToKKFdlYkNvcmU6Okxh
eW91dDo6aXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHkpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nVXRpbHM6Om5leHRXcmFwT3Bwb3J0dW5pdHkpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGluZUxheW91dFN0YXRlIGNvbnN0KToKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
VXRpbHMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oLgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmZvcm1hdHRpbmdDb250ZXh0IGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJv
eC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
VmVydGljYWxBbGlnbmVyOjpMaW5lQm94VmVydGljYWxBbGlnbmVyKToKKFdlYkNvcmU6OkxheW91
dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0IGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZVJv
b3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZSBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVy
dGljYWxBbGlnbmVyOjpmb3JtYXR0aW5nVXRpbHMgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpM
aW5lQm94VmVydGljYWxBbGlnbmVyOjpmb3JtYXR0aW5nR2VvbWV0cnkgY29uc3QpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmxheW91dElu
bGluZUNvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aW5pdGlhbENvbnN0
cmFpbnRzRm9yTGluZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjYW5k
aWRhdGVDb250ZW50Rm9yTGluZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpmbG9h
dENvbnN0cmFpbmVkUmVjdCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjph
ZGp1c3RlZExpbmVSZWN0V2l0aENhbmRpZGF0ZUlubGluZUNvbnRlbnQgY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cmVidWlsZExpbmVXaXRoSW5saW5lQ29udGVudCk6Ciog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2lj
V2lkdGhIYW5kbGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW50cmluc2ljV2lkdGhIYW5kbGVy
Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludCk6CiogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRl
ci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OlRleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXI6OmxheW91
dElubGluZUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpmbGlwTG9naWNhbFJlY3RU
b1Zpc3VhbEZvcldyaXRpbmdNb2RlV2l0aGluTGluZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6ZmxpcFJvb3RJbmxpbmVCb3hSZWN0VG9WaXN1
YWxGb3JXcml0aW5nTW9kZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwOgoo
V2ViQ29yZTo6TGF5b3V0OjpmbGlwTG9naWNhbExpbmVSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9k
ZSk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVi
eS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpSdWJ5Rm9ybWF0
dGluZ0NvbnRleHQ6OnBsYWNlUnVieUNvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpSdWJ5Rm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyk6CihXZWJDb3JlOjpMYXlv
dXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6bG9naWNhV2lkdGhGb3JSdWJ5UmFuZ2UgY29uc3Qp
OgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVG
b3JtYXR0aW5nQ29udGV4dC5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0ICAgICAg
ICAgICAgICAgICAgICB8ICAyICstCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogfCAxMiArKy0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdD
b250ZXh0LmggICAgfCAgMiAtCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9t
ZXRyeS5oICAgfCAgMSAtCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3Mu
Y3BwICAgfCAyOSAtLS0tLS0tLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVp
cmtzLmggICAgIHwgIDIgKy0KIC4uLi9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggICAg
ICAgICAgICB8ICAyICstCiAuLi4vYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcCAgICAg
ICAgICAgfCAyOSArKysrKysrKwogLi4uL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oICAg
ICAgICAgICAgIHwgIDEgKwogLi4uL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmggICAgICAg
ICAgICAgIHwgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmNwcCAgICAg
ICAgICB8IDE4ICsrLS0tCiAuLi4vaW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5oICAgICAg
ICAgICAgfCAgMiArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgICAg
ICAgIHwgMTQgKystLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oICAgICAg
ICAgIHwgIDggKy0tCiAuLi5HZW9tZXRyeS5jcHAgPT4gSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNw
cH0gfCA2NiArKysrKystLS0tLS0tLS0tLS0tCiAuLi50aW5nR2VvbWV0cnkuaCA9PiBJbmxpbmVG
b3JtYXR0aW5nVXRpbHMuaH0gfCAxNCArKy0tCiAuLi4vaW5saW5lL0lubGluZUxldmVsQm94Lmgg
ICAgICAgICAgICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGlj
YWxBbGlnbmVyLmNwcCAgIHwgMjAgKysrLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuaCAgICAgfCAgNiArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAgICAgICAgICAgICAgIHwgMjYgKysrKy0tLS0KIC4uLi9pbmxpbmUvSW50cmluc2ljV2lkdGhI
YW5kbGVyLmNwcCAgICAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL1RleHRPbmx5U2ltcGxlTGlu
ZUJ1aWxkZXIuY3BwICAgICAgfCAgMiArLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyLmNwcCAgIHwgIDYgKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVp
bGRlci5jcHAgICAgICB8ICAyICstCiAuLi4vaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250
ZXh0LmNwcCAgICAgfCAxNCArKy0tCiAuLi4vdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5o
ICAgICAgICAgICAgfCAgMiArLQogMjYgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyks
IDE1NiBkZWxldGlvbnMoLSkKIHJlbmFtZSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS97SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCA9PiBJbmxpbmVG
b3JtYXR0aW5nVXRpbHMuY3BwfSAoODYlKQogcmVuYW1lIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3tJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCA9PiBJ
bmxpbmVGb3JtYXR0aW5nVXRpbHMuaH0gKDkwJSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDE4ZmY0ZThl
YjJmYi4uODhiZTk2ZDg3ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTczMSw3ICsxNzMxLDcgQEAg
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvQWJzdHJhY3RMaW5lQnVpbGRlci5jcHAK
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5j
cHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2Vy
LmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCi1sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwCitsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nVXRpbHMuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNC
dWlsZGVyLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2Y2E4OWQwOWZkYmEuLjg4N2FkYmYyZjc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcxMSw3ICsxNzExLDcg
QEAKIAkJNDZGRUZCQzgyNkRENjdBMjAwQjBDNDg4IC8qIFN0cnVjdHVyZWRTZXJpYWxpemVPcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkZF
RkJDNjI2REQ2NzgyMDBCMEM0ODggLyogU3RydWN0dXJlZFNlcmlhbGl6ZU9wdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NzVDODlBNDI2
NTBBQzNDMDBGM0I0NTYgLyogRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NzVDODlBMzI2NTBBQzNCMDBGM0I0NTYgLyog
Rm9ybWF0dGluZ0dlb21ldHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDc4NjM1NjUyNjUwN0EzODAwQzVFMkUwIC8qIEJsb2NrRm9ybWF0dGlu
Z0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0Nzg2MzU2NDI2NTA3QTM3MDBDNUUyRTAgLyogQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0N0M0RDU3
RDI2NTA4QkNCMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0M0RDU3QzI2NTA4QkNBMDBD
N0FCMUYgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDdDNEQ1N0QyNjUwOEJDQjAwQzdBQjFGIC8q
IElubGluZUZvcm1hdHRpbmdVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDdDNEQ1N0MyNjUwOEJDQTAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRp
bmdVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ3Rjk0N0RCMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3Rjk0N0RBMjY1
MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0N0ZBOTcwMDI2NTA5ODJCMDA4NDE0
MTYgLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3RkE5NkZGMjY1MDk4MkEwMDg0MTQxNiAvKiBUYWJsZUZv
cm1hdHRpbmdHZW9tZXRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ4MjI5NzBFMjlDOEVCQzAwMDMzQTEyNiAvKiBSZWdpb25Db250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0ODIyOTcwQzI5
QzhFQkMwMDAzM0ExMjYgLyogUmVnaW9uQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDY0NSw3ICsxMDY0NSw3IEBACiAJCTQ2RkVG
QkM3MjZERDY3ODMwMEIwQzQ4OCAvKiBTdHJ1Y3R1cmVkU2VyaWFsaXplT3B0aW9ucy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gU3RydWN0dXJlZFNlcmlhbGl6ZU9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NzVDODlBMzI2NTBBQzNCMDBGM0I0NTYgLyogRm9ybWF0dGluZ0dlb21ldHJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdHRpbmdHZW9tZXRyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Nzg2MzU2NDI2NTA3QTM3MDBDNUUyRTAgLyog
QmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNDdDNEQ1N0MyNjUwOEJDQTAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDdDNEQ1N0MyNjUwOEJDQTAwQzdB
QjFGIC8qIElubGluZUZvcm1hdHRpbmdVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmxpbmVGb3JtYXR0aW5nVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDdGOTQ3REEyNjUwMkYyRjAwODc5NjhDIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0Zvcm1hdHRpbmdRdWlya3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDdGQTk2RkYyNjUwOTgyQTAwODQxNDE2
IC8qIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ4MjI5NzBCMjlDOEVCQzAwMDMzQTEyNiAvKiBSZWdpb25Db250ZXh0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lvbkNvbnRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzNDUsNyArMTIzNDUsNyBAQAogCQk2RjI2QkI2
OTIzMzQzRTVBMDAyRjJCRUEgLyogTGF5b3V0Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMYXlvdXRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYyNkJC
NkIyMzM0M0U1QjAwMkYyQkVBIC8qIExheW91dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5
b3V0Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjI2RUI0NjIzNDAw
NEE1MDA2OTA2RTIgLyogSW5saW5lTGluZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5saW5lTGluZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNkYzNUVGQUYyMTg3Q0JENTAwNDRFMEY0IC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRy
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RjM1RUZBRjIx
ODdDQkQ1MDA0NEUwRjQgLyogSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUZvcm1hdHRpbmdVdGlscy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMzYwRTRFMjM5OTk0MjAwMDE1MTJBNyAvKiBJbmxp
bmVTb2Z0TGluZUJyZWFrSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmxpbmVTb2Z0TGluZUJyZWFrSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RjNGQkE5NjI1NTZFMzA4MDAzNTMwRkQgLyogTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50
QnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNv
bnRlbnRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYzRkJBOTcy
NTU2RTMxMjAwMzUzMEZEIC8qIExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25Jbmxp
bmVDb250ZW50QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzOTks
OCArMjEzOTksOCBAQAogCQkJCURERkNCNDgwMjkxNzAxNDUwMEM3OTlDNiAvKiBJbmxpbmVGb3Jt
YXR0aW5nQ29uc3RyYWludHMuaCAqLywKIAkJCQk2RjdDQTNDOTIwOEMyQjJFMDAyRjI5QUIgLyog
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICovLAogCQkJCTZGN0NBM0M4MjA4QzJCMkUwMDJG
MjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oICovLAotCQkJCTZGMzVFRkFGMjE4N0NC
RDUwMDQ0RTBGNCAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwICovLAotCQkJCTQ3QzRE
NTdDMjY1MDhCQ0EwMEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLywKKwkJ
CQk2RjM1RUZBRjIxODdDQkQ1MDA0NEUwRjQgLyogSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcCAq
LywKKwkJCQk0N0M0RDU3QzI2NTA4QkNBMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGluZ1V0aWxz
LmggKi8sCiAJCQkJNkY3QjhDRUMyMzYyNkU2NjAwQzlGRjE1IC8qIElubGluZUl0ZW0uY3BwICov
LAogCQkJCTZGRTdDRkEwMjE3N0VFRjEwMDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggKi8sCiAJCQkJ
MTFEMDM2MzkyNzJDNENFNzAwOUVENzBEIC8qIElubGluZUl0ZW1zQnVpbGRlci5jcHAgKi8sCkBA
IC0zODkxNiw3ICszODkxNiw3IEBACiAJCQkJNkY2MEU1QUEyNzcxMEYzOTAwNUMxNUI5IC8qIElu
bGluZURpc3BsYXlMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERGQ0I0ODEyOTE3
MDE0NjAwQzc5OUM2IC8qIElubGluZUZvcm1hdHRpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNkY3Q0EzQ0EyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0N0M0RDU3RDI2NTA4QkNCMDBDN0FCMUYgLyogSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0N0M0RDU3RDI2NTA4
QkNCMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGluZ1V0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxMTFGQTFDNzI2RjBGMzBGMDAzQjhGMTYgLyogSW5saW5lSW52YWxpZGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2RkU3Q0ZBMjIxNzdFRUYyMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTFEMDM2M0MyNzJDNENGRDAwOUVENzBEIC8qIElubGluZUl0ZW1z
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMGQ2
MGUxMmM2ZDViLi5hYTczZjI5ZWNiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTYw
LDggKzYwLDYgQEAgcHVibGljOgogICAgIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpOwogICAg
IGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nh
c3Q8Rm9ybWF0dGluZ0NvbnRleHQmPigqdGhpcykubGF5b3V0U3RhdGUoKTsgfQogCi0gICAgdmly
dHVhbCBjb25zdCBGb3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0
ID0gMDsKLQogICAgIGVudW0gY2xhc3MgRXNjYXBlUmVhc29uIHsKICAgICAgICAgVGFibGVRdWly
a05lZWRzR2VvbWV0cnlGcm9tRXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29udGV4dCwKICAgICAgICAg
T3V0T2ZGbG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5o
CmluZGV4IDU0ZTAxYzVhMGY4Ny4uN2ZlNDUyN2ZkOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21l
dHJ5LmgKQEAgLTg3LDcgKzg3LDYgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29tcHV0ZWRXaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9j
a1dpZHRoKSBjb25zdDsKIAogICAgIGJvb2wgaXNCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeSgpIGNv
bnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkuaXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KCk7IH0KLSAgICBib29sIGlzSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1
cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5pc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KICAg
ICBib29sIGlzRmxleEZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRp
bmdDb250ZXh0KCkuaXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQoKTsgfQogICAgIGJvb2wgaXNUYWJs
ZUZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCku
aXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAK
aW5kZXggMTExYmJkY2ZkZjQ4Li4wZThlYzhmMjRlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtz
LmNwcApAQCAtNDIsMzUgKzQyLDYgQEAgRm9ybWF0dGluZ1F1aXJrczo6Rm9ybWF0dGluZ1F1aXJr
cyhjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQpCiB7CiB9CiAKLUxh
eW91dFVuaXQgRm9ybWF0dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5n
QmxvY2tXaXRoRml4ZWRIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpOwotICAgIC8vIEluIHF1aXJrcyBt
b2RlLCB3ZSBnbyBhbmQgdHJhdmVycyB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbiB0byBmaW5k
IGEgYmxvY2sgbGV2ZWwgYm94IHdpdGggZml4ZWQgaGVpZ2h0IHZhbHVlLCBldmVuIGlmIGl0IG1l
YW5zIGxlYXZpbmcKLSAgICAvLyB0aGUgY3VycmVudCBmb3JtYXR0aW5nIGNvbnRleHQuIEZJWE1F
OiBzdXJlbHkgd2UgbmVlZCB0byBkbyBzb21lIHRyaWNrcyBoZXJlIHdoZW4gYmxvY2sgZGlyZWN0
aW9uIHN1cHBvcnQgaXMgYWRkZWQuCi0gICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlz
LT5mb3JtYXR0aW5nQ29udGV4dCgpOwotICAgIGF1dG8gYm9keUFuZERvY3VtZW50VmVydGljYWxN
YXJnaW5QYWRkaW5nQW5kQm9yZGVyID0gTGF5b3V0VW5pdCB7IH07Ci0gICAgZm9yIChhdXRvJiBj
b250YWluaW5nQmxvY2sgOiBjb250YWluaW5nQmxvY2tDaGFpbihsYXlvdXRCb3gpKSB7Ci0gICAg
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrLnN0eWxlKCku
bG9naWNhbEhlaWdodCgpOwotICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrSGVpZ2h0LmlzRml4
ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KGNvbnRhaW5pbmdCbG9ja0hlaWdo
dC52YWx1ZSgpIC0gYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVy
KTsKLQotICAgICAgICAvLyBJZiB0aGUgb25seSBmaXhlZCB2YWx1ZSBib3ggd2UgZmluZCBpcyB0
aGUgSUNCLCB0aGVuIGlnbm9yZSB0aGUgYm9keSBhbmQgdGhlIGRvY3VtZW50ICh2ZXJ0aWNhbCkg
bWFyZ2luLCBwYWRkaW5nIGFuZCBib3JkZXIuIFNvIG11Y2ggcXVpcmtpbmVzcy4KLSAgICAgICAg
Ly8gLWFuZCBpdCdzIHRvdGFsbHkgaW5zYW5lIGJlY2F1c2Ugbm93IHdlIGZyZWVseSB0cmF2ZWwg
YWNyb3NzIGZvcm1hdHRpbmcgY29udGV4dCBib3VuZGFyaWVzIGFuZCBjb21wdXRlZCBtYXJnaW5z
IGFyZSBub25leGlzdGVudC4KLSAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay5pc0JvZHlCb3go
KSB8fCBjb250YWluaW5nQmxvY2suaXNEb2N1bWVudEJveCgpKSB7Ci0gICAgICAgICAgICBhdXRv
JiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nR2VvbWV0
cnkoKTsKLSAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gZm9ybWF0dGlu
Z0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChGb3JtYXR0aW5nQ29udGV4dDo6
Y29udGFpbmluZ0Jsb2NrKGNvbnRhaW5pbmdCbG9jayksIEZvcm1hdHRpbmdDb250ZXh0OjpFc2Nh
cGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspLmhvcml6b250YWwoKTsKLSAg
ICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbihjb250YWluaW5nQmxvY2ssIGhvcml6b250YWxDb25zdHJhaW50cyk7
Ci0KLSAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2Vv
bWV0cnlGb3JCb3goY29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVh
c29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKTsKLSAgICAgICAgICAgIGF1dG8gdmVy
dGljYWxQYWRkaW5nID0gYm94R2VvbWV0cnkucGFkZGluZ0JlZm9yZSgpLnZhbHVlX29yKDApICsg
Ym94R2VvbWV0cnkucGFkZGluZ0FmdGVyKCkudmFsdWVfb3IoMCk7Ci0gICAgICAgICAgICBhdXRv
IHZlcnRpY2FsQm9yZGVyID0gYm94R2VvbWV0cnkuYm9yZGVyQmVmb3JlKCkgKyBib3hHZW9tZXRy
eS5ib3JkZXJBZnRlcigpOwotICAgICAgICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJn
aW5QYWRkaW5nQW5kQm9yZGVyICs9IHZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSAr
IHZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApICsgdmVydGljYWxQYWRkaW5nICsgdmVy
dGljYWxCb3JkZXI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLy8gSW5pdGlhbCBjb250YWluaW5n
IGJsb2NrIGhhcyB0byBoYXZlIGEgaGVpZ2h0LgotICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4
dC5nZW9tZXRyeUZvckJveChGb3JtYXR0aW5nQ29udGV4dDo6aW5pdGlhbENvbnRhaW5pbmdCbG9j
ayhsYXlvdXRCb3gpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRI
ZWlnaHRBbmNlc3RvclF1aXJrKS5jb250ZW50Qm94KCkuaGVpZ2h0KCkgLSBib2R5QW5kRG9jdW1l
bnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXI7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVp
cmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRp
bmdRdWlya3MuaAppbmRleCBhNmVlM2JlMDhkOWUuLmQwMWQ2M2E4ZGUxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0
aW5nUXVpcmtzLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIEZvcm1hdHRpbmdRdWly
a3MoY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5Gb3JtYXR0aW5nUXVp
cmtzKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGhlaWdodFZhbHVlT2ZO
ZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0KGNvbnN0IEJveCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9j
a1dpdGhGaXhlZEhlaWdodChjb25zdCBCb3gmKSBjb25zdCB7IHJldHVybiB7IH07IH0KIAogICAg
IGJvb2wgaXNCbG9ja0Zvcm1hdHRpbmdRdWlya3MoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5n
Q29udGV4dCgpLmlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOyB9CiAgICAgYm9vbCBpc1RhYmxl
Rm9ybWF0dGluZ1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkuaXNU
YWJsZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmgKaW5kZXggMGU1OGU1NTMyODY1Li4yYzFhY2VlNDFhMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZTsgfQotICAgIGNvbnN0IEJsb2Nr
Rm9ybWF0dGluZ0dlb21ldHJ5JiBmb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OyB9CisgICAgY29uc3QgQmxvY2tGb3JtYXR0
aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tG
b3JtYXR0aW5nR2VvbWV0cnk7IH0KICAgICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdRdWlya3MmIGZv
cm1hdHRpbmdRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrRm9ybWF0dGluZ1F1aXJrczsg
fQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJr
cy5jcHAKaW5kZXggNmNhNTVmNDA5YWRmLi5kZTM3MjhkYzViOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTEyOCw2ICsxMjgsMzUgQEAgYm9v
bCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFy
ZW50TWFyZ2luQWZ0ZXIoY29uc3QKICAgICByZXR1cm4gaGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNl
KGxheW91dEJveCwgVmVydGljYWxNYXJnaW46OkFmdGVyKSAmJiBpc1F1aXJrQ29udGFpbmVyKEZv
cm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSk7CiB9CiAKK0xheW91
dFVuaXQgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5p
bmdCbG9ja1dpdGhGaXhlZEhlaWdodChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSk7CisgICAgLy8gSW4gcXVpcmtz
IG1vZGUsIHdlIGdvIGFuZCB0cmF2ZXJzIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluIHRvIGZp
bmQgYSBibG9jayBsZXZlbCBib3ggd2l0aCBmaXhlZCBoZWlnaHQgdmFsdWUsIGV2ZW4gaWYgaXQg
bWVhbnMgbGVhdmluZworICAgIC8vIHRoZSBjdXJyZW50IGZvcm1hdHRpbmcgY29udGV4dC4gRklY
TUU6IHN1cmVseSB3ZSBuZWVkIHRvIGRvIHNvbWUgdHJpY2tzIGhlcmUgd2hlbiBibG9jayBkaXJl
Y3Rpb24gc3VwcG9ydCBpcyBhZGRlZC4KKyAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IGRv
d25jYXN0PEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCkp
OworICAgIGF1dG8gYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVy
ID0gTGF5b3V0VW5pdCB7IH07CisgICAgZm9yIChhdXRvJiBjb250YWluaW5nQmxvY2sgOiBjb250
YWluaW5nQmxvY2tDaGFpbihsYXlvdXRCb3gpKSB7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Js
b2NrSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkubG9naWNhbEhlaWdodCgpOworICAg
ICAgICBpZiAoY29udGFpbmluZ0Jsb2NrSGVpZ2h0LmlzRml4ZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBMYXlvdXRVbml0KGNvbnRhaW5pbmdCbG9ja0hlaWdodC52YWx1ZSgpIC0gYm9keUFuZERv
Y3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVyKTsKKworICAgICAgICAvLyBJZiB0
aGUgb25seSBmaXhlZCB2YWx1ZSBib3ggd2UgZmluZCBpcyB0aGUgSUNCLCB0aGVuIGlnbm9yZSB0
aGUgYm9keSBhbmQgdGhlIGRvY3VtZW50ICh2ZXJ0aWNhbCkgbWFyZ2luLCBwYWRkaW5nIGFuZCBi
b3JkZXIuIFNvIG11Y2ggcXVpcmtpbmVzcy4KKyAgICAgICAgLy8gLWFuZCBpdCdzIHRvdGFsbHkg
aW5zYW5lIGJlY2F1c2Ugbm93IHdlIGZyZWVseSB0cmF2ZWwgYWNyb3NzIGZvcm1hdHRpbmcgY29u
dGV4dCBib3VuZGFyaWVzIGFuZCBjb21wdXRlZCBtYXJnaW5zIGFyZSBub25leGlzdGVudC4KKyAg
ICAgICAgaWYgKGNvbnRhaW5pbmdCbG9jay5pc0JvZHlCb3goKSB8fCBjb250YWluaW5nQmxvY2su
aXNEb2N1bWVudEJveCgpKSB7CisgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkg
PSBmb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKKyAgICAgICAgICAgIGF1
dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRz
Rm9ySW5GbG93Q29udGVudChGb3JtYXR0aW5nQ29udGV4dDo6Y29udGFpbmluZ0Jsb2NrKGNvbnRh
aW5pbmdCbG9jayksIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhl
aWdodEFuY2VzdG9yUXVpcmspLmhvcml6b250YWwoKTsKKyAgICAgICAgICAgIGF1dG8gdmVydGlj
YWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihjb250
YWluaW5nQmxvY2ssIGhvcml6b250YWxDb25zdHJhaW50cyk7CisKKyAgICAgICAgICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goY29udGFpbmlu
Z0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRIZWlnaHRB
bmNlc3RvclF1aXJrKTsKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxQYWRkaW5nID0gYm94R2Vv
bWV0cnkucGFkZGluZ0JlZm9yZSgpLnZhbHVlX29yKDApICsgYm94R2VvbWV0cnkucGFkZGluZ0Fm
dGVyKCkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQm9yZGVyID0gYm94
R2VvbWV0cnkuYm9yZGVyQmVmb3JlKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJBZnRlcigpOworICAg
ICAgICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVyICs9
IHZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSArIHZlcnRpY2FsTWFyZ2luLmFmdGVy
LnZhbHVlX29yKDApICsgdmVydGljYWxQYWRkaW5nICsgdmVydGljYWxCb3JkZXI7CisgICAgICAg
IH0KKyAgICB9CisgICAgLy8gSW5pdGlhbCBjb250YWluaW5nIGJsb2NrIGhhcyB0byBoYXZlIGEg
aGVpZ2h0LgorICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChGb3Jt
YXR0aW5nQ29udGV4dDo6aW5pdGlhbENvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpLCBGb3JtYXR0
aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJrKS5j
b250ZW50Qm94KCkuaGVpZ2h0KCkgLSBib2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRp
bmdBbmRCb3JkZXI7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nUXVpcmtzLmgKaW5kZXggNGViY2E2YTYzZWJjLi45NzMyYjNjOWI0ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nUXVpcmtzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaApAQCAtMzcsNiArMzcsNyBAQCBwdWJs
aWM6CiAgICAgQmxvY2tGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQmKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVkSW5GbG93SGVp
Z2h0SWZBcHBsaWNhYmxlKGNvbnN0IEVsZW1lbnRCb3gmLCBDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
KSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgaGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250
YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQoY29uc3QgQm94JikgY29uc3Q7CiAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkSWdub3JlQ29sbGFwc2VkUXVpcmtNYXJnaW4oY29uc3QgRWxlbWVudEJveCYp
OwogICAgIHN0YXRpYyBib29sIHNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBhcmVudE1h
cmdpbkJlZm9yZShjb25zdCBFbGVtZW50Qm94Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQ29s
bGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBFbGVtZW50Qm94Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Zs
ZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggYTJhNmZlMDM3
OTBhLi5hY2YwOWQ5MDljMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250
ZXh0LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgbGF5b3V0KGNvbnN0IENv
bnN0cmFpbnRzRm9yRmxleENvbnRlbnQmKTsKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
IGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwogCi0gICAgY29uc3QgRmxleEZv
cm1hdHRpbmdHZW9tZXRyeSYgZm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9mbGV4Rm9ybWF0dGluZ0dlb21ldHJ5OyB9CisgICAgY29uc3QgRmxleEZvcm1hdHRpbmdH
ZW9tZXRyeSYgZm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gbV9mbGV4Rm9ybWF0
dGluZ0dlb21ldHJ5OyB9CiAgICAgY29uc3QgRm9ybWF0dGluZ1F1aXJrcyYgZm9ybWF0dGluZ1F1
aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fZmxleEZvcm1hdHRpbmdRdWlya3M7IH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuY3BwCmluZGV4
IDhjMDE3OTEyYzIyYS4uYmJmZDAxYjJhYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUNvbnRlbnRCYWxhbmNlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIFZlY3Rvcjxz
aXplX3Q+IGNvbXB1dGVCcmVha09wcG9ydHVuaXRpZXMoY29uc3QgSW5saW5lSXRlbXMmIGlubGlu
ZUl0ZW1zLAogICAgIFZlY3RvcjxzaXplX3Q+IGJyZWFrT3Bwb3J0dW5pdGllczsKICAgICBzaXpl
X3QgY3VycmVudEluZGV4ID0gcmFuZ2Uuc3RhcnRJbmRleCgpOwogICAgIHdoaWxlIChjdXJyZW50
SW5kZXggPCByYW5nZS5lbmRJbmRleCgpKSB7Ci0gICAgICAgIGN1cnJlbnRJbmRleCA9IElubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeTo6bmV4dFdyYXBPcHBvcnR1bml0eShjdXJyZW50SW5kZXgsIHJh
bmdlLCBpbmxpbmVJdGVtcyk7CisgICAgICAgIGN1cnJlbnRJbmRleCA9IElubGluZUZvcm1hdHRp
bmdVdGlsczo6bmV4dFdyYXBPcHBvcnR1bml0eShjdXJyZW50SW5kZXgsIHJhbmdlLCBpbmxpbmVJ
dGVtcyk7CiAgICAgICAgIGJyZWFrT3Bwb3J0dW5pdGllcy5hcHBlbmQoY3VycmVudEluZGV4KTsK
ICAgICB9CiAgICAgcmV0dXJuIGJyZWFrT3Bwb3J0dW5pdGllczsKQEAgLTEyOCw4ICsxMjgsOCBA
QCB2b2lkIElubGluZUNvbnRlbnRCYWxhbmNlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBt
X2Nhbm5vdEJhbGFuY2VDb250ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBtX2lubGluZUl0ZW1XaWR0aHMuYXBwZW5kKG1faW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuZm9ybWF0dGluZ0dlb21ldHJ5KCkuaW5saW5lSXRlbVdpZHRoKGl0ZW0sIDAsIGZh
bHNlKSk7Ci0gICAgICAgIG1fZmlyc3RMaW5lU3R5bGVJbmxpbmVJdGVtV2lkdGhzLmFwcGVuZCht
X2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpLmlubGluZUl0ZW1X
aWR0aChpdGVtLCAwLCB0cnVlKSk7CisgICAgICAgIG1faW5saW5lSXRlbVdpZHRocy5hcHBlbmQo
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lk
dGgoaXRlbSwgMCwgZmFsc2UpKTsKKyAgICAgICAgbV9maXJzdExpbmVTdHlsZUlubGluZUl0ZW1X
aWR0aHMuYXBwZW5kKG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxzKCku
aW5saW5lSXRlbVdpZHRoKGl0ZW0sIDAsIHRydWUpKTsKICAgICB9CiAKICAgICAvLyBQZXJmb3Jt
IGEgbGluZSBsYXlvdXQgd2l0aCBgdGV4dC13cmFwOiB3cmFwYCB0byBjb21wdXRlIHVzZWZ1bCBt
ZXRyaWNzIHN1Y2ggYXM6CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2b2lkIElubGluZUNvbnRlbnRC
YWxhbmNlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGJvb2wgaXNGaXJzdExpbmVJbkNodW5rID0g
IWxpbmVJbmRleCB8fCBtX29yaWdpbmFsTGluZUVuZHNXaXRoRm9yY2VkQnJlYWtbbGluZUluZGV4
IC0gMV07CiAgICAgICAgIFNsaWRpbmdXaWR0aCBsaW5lU2xpZGluZ1dpZHRoIHsgKnRoaXMsIG1f
aW5saW5lSXRlbXMsIGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lSXRlbVJhbmdlLnN0YXJ0SW5kZXgo
KSwgbGluZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kSW5kZXgoKSwgdXNlRmlyc3RM
aW5lU3R5bGUsIGlzRmlyc3RMaW5lSW5DaHVuayB9OwogICAgICAgICBhdXRvIHByZXZpb3VzTGlu
ZUVuZHNXaXRoTGluZUJyZWFrID0gbGluZUluZGV4ID8gc3RkOjpvcHRpb25hbDxib29sPiB7IG1f
b3JpZ2luYWxMaW5lRW5kc1dpdGhGb3JjZWRCcmVha1tsaW5lSW5kZXggLSAxXSB9IDogc3RkOjpu
dWxsb3B0OwotICAgICAgICBhdXRvIHRleHRJbmRlbnQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkVGV4dEluZGVudChJbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObywgcHJldmlvdXNMaW5lRW5kc1dp
dGhMaW5lQnJlYWssIG1fbWF4aW11bUxpbmVXaWR0aCk7CisgICAgICAgIGF1dG8gdGV4dEluZGVu
dCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxzKCkuY29tcHV0ZWRU
ZXh0SW5kZW50KElubGluZUZvcm1hdHRpbmdVdGlsczo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5v
LCBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhaywgbV9tYXhpbXVtTGluZVdpZHRoKTsKICAg
ICAgICAgbV9vcmlnaW5hbExpbmVXaWR0aHMuYXBwZW5kKHRleHRJbmRlbnQgKyBsaW5lU2xpZGlu
Z1dpZHRoLndpZHRoKCkpOwogCi0gICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUobGlu
ZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kLCBwcmV2aW91c0xpbmVFbmQsIGxheW91
dFJhbmdlLmVuZCk7CisgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gSW5saW5lRm9ybWF0dGlu
Z1V0aWxzOjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUobGluZUxheW91dFJl
c3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kLCBwcmV2aW91c0xpbmVFbmQsIGxheW91dFJhbmdlLmVu
ZCk7CiAgICAgICAgIHByZXZpb3VzTGluZUVuZCA9IGxheW91dFJhbmdlLnN0YXJ0OwogICAgICAg
ICBwcmV2aW91c0xpbmUgPSBQcmV2aW91c0xpbmUgeyBsaW5lSW5kZXgsIGxpbmVMYXlvdXRSZXN1
bHQuY29udGVudEdlb21ldHJ5LnRyYWlsaW5nT3ZlcmZsb3dpbmdDb250ZW50V2lkdGgsICFsaW5l
TGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuaXNFbXB0eSgpICYmIGxpbmVMYXlvdXRSZXN1bHQu
aW5saW5lQ29udGVudC5sYXN0KCkuaXNMaW5lQnJlYWsoKSwgbGluZUxheW91dFJlc3VsdC5kaXJl
Y3Rpb25hbGl0eS5pbmxpbmVCYXNlRGlyZWN0aW9uLCBXVEZNb3ZlKGxpbmVMYXlvdXRSZXN1bHQu
ZmxvYXRDb250ZW50LnN1c3BlbmRlZEZsb2F0cykgfTsKICAgICAgICAgbGluZUluZGV4Kys7CkBA
IC0yMjUsOCArMjI1LDggQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8TGF5b3V0VW5pdD4+IElubGlu
ZUNvbnRlbnRCYWxhbmNlcjo6YmFsYW5jZVJhbmdlV2l0aExpbmVSZXEKIAogICAgIC8vIEluZGVu
dGF0aW9uIG9mZnNldHMKICAgICBhdXRvIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrID0g
aXNGaXJzdENodW5rID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPiB7IHRydWUg
fTsKLSAgICBhdXRvIGZpcnN0TGluZVRleHRJbmRlbnQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkVGV4dEluZGVudChJbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObywgcHJldmlvdXNMaW5lRW5kc1dp
dGhMaW5lQnJlYWssIG1fbWF4aW11bUxpbmVXaWR0aCk7Ci0gICAgYXV0byB0ZXh0SW5kZW50ID0g
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZFRl
eHRJbmRlbnQoSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpJc0ludHJpbnNpY1dpZHRoTW9kZTo6
Tm8sIGZhbHNlLCBtX21heGltdW1MaW5lV2lkdGgpOworICAgIGF1dG8gZmlyc3RMaW5lVGV4dElu
ZGVudCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxzKCkuY29tcHV0
ZWRUZXh0SW5kZW50KElubGluZUZvcm1hdHRpbmdVdGlsczo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6
Ok5vLCBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhaywgbV9tYXhpbXVtTGluZVdpZHRoKTsK
KyAgICBhdXRvIHRleHRJbmRlbnQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRp
bmdVdGlscygpLmNvbXB1dGVkVGV4dEluZGVudChJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OklzSW50
cmluc2ljV2lkdGhNb2RlOjpObywgZmFsc2UsIG1fbWF4aW11bUxpbmVXaWR0aCk7CiAKICAgICBz
dHJ1Y3QgRW50cnkgewogICAgICAgICBmbG9hdCBhY2N1bXVsYXRlZENvc3QgeyBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9OwpAQCAtMzI1LDggKzMyNSw4IEBAIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPExheW91dFVuaXQ+PiBJbmxpbmVDb250ZW50QmFsYW5jZXI6OmJhbGFu
Y2VSYW5nZVdpdGhOb0xpbmVSCiAKICAgICAvLyBJbmRlbnRhdGlvbiBvZmZzZXRzCiAgICAgYXV0
byBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhayA9IGlzRmlyc3RDaHVuayA/IHN0ZDo6bnVs
bG9wdCA6IHN0ZDo6b3B0aW9uYWw8Ym9vbD4geyB0cnVlIH07Ci0gICAgYXV0byBmaXJzdExpbmVU
ZXh0SW5kZW50ID0gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nR2VvbWV0cnko
KS5jb21wdXRlZFRleHRJbmRlbnQoSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpJc0ludHJpbnNp
Y1dpZHRoTW9kZTo6Tm8sIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrLCBtX21heGltdW1M
aW5lV2lkdGgpOwotICAgIGF1dG8gdGV4dEluZGVudCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRUZXh0SW5kZW50KElubGluZUZvcm1hdHRp
bmdHZW9tZXRyeTo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBmYWxzZSwgbV9tYXhpbXVtTGlu
ZVdpZHRoKTsKKyAgICBhdXRvIGZpcnN0TGluZVRleHRJbmRlbnQgPSBtX2lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmZvcm1hdHRpbmdVdGlscygpLmNvbXB1dGVkVGV4dEluZGVudChJbmxpbmVGb3Jt
YXR0aW5nVXRpbHM6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObywgcHJldmlvdXNMaW5lRW5kc1dp
dGhMaW5lQnJlYWssIG1fbWF4aW11bUxpbmVXaWR0aCk7CisgICAgYXV0byB0ZXh0SW5kZW50ID0g
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5jb21wdXRlZFRleHRJ
bmRlbnQoSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpJc0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGZh
bHNlLCBtX21heGltdW1MaW5lV2lkdGgpOwogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAg
ZmxvYXQgYWNjdW11bGF0ZWRDb3N0IHsgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmgKaW5k
ZXggYTE3YzkyZmFiYzY2Li4wZGNkMGI1ZDBiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUNvbnRlbnRCYWxhbmNlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJGb3Jt
YXR0aW5nQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5o
IgotI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgorI2luY2x1ZGUgIklubGlu
ZUZvcm1hdHRpbmdVdGlscy5oIgogI2luY2x1ZGUgIklubGluZUl0ZW0uaCIKICNpbmNsdWRlICJJ
bmxpbmVMaW5lQnVpbGRlci5oIgogI2luY2x1ZGUgIklubGluZVRleHRJdGVtLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTYwNWQx
NjgxYzk0Li5jM2Y3ODA2N2RlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKElubGluZUZvcm1hdHRpbmdDb250ZXh0KTsKIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgQmxvY2tMYXlvdXRTdGF0ZSYg
cGFyZW50QmxvY2tMYXlvdXRTdGF0ZSkKICAgICA6IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRp
bmdDb250ZXh0Um9vdCwgbGF5b3V0U3RhdGUpCiAgICAgLCBtX2lubGluZUNvbnRlbnRDYWNoZShs
YXlvdXRTdGF0ZS5pbmxpbmVDb250ZW50Q2FjaGUoZm9ybWF0dGluZ0NvbnRleHRSb290KSkKLSAg
ICAsIG1faW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5KCp0aGlzKQorICAgICwgbV9pbmxpbmVGb3Jt
YXR0aW5nVXRpbHMoKnRoaXMpCiAgICAgLCBtX2lubGluZVF1aXJrcygqdGhpcykKICAgICAsIG1f
aW5saW5lTGF5b3V0U3RhdGUocGFyZW50QmxvY2tMYXlvdXRTdGF0ZSkKIHsKQEAgLTE4Miw3ICsx
ODIsNyBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVM
YXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRlciYgbGluZQogICAgIGF1dG8gbGVhZGluZ0lubGluZUl0
ZW1Qb3NpdGlvbiA9IG5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQ7CiAgICAgd2hpbGUgKHRydWUpIHsK
IAotICAgICAgICBhdXRvIGxpbmVJbml0aWFsUmVjdCA9IElubGluZVJlY3QgeyBsaW5lTG9naWNh
bFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5o
b3Jpem9udGFsKCkubG9naWNhbFdpZHRoLCBmb3JtYXR0aW5nR2VvbWV0cnkoKS5pbml0aWFsTGlu
ZUhlaWdodCghcHJldmlvdXNMaW5lLmhhc192YWx1ZSgpKSB9OworICAgICAgICBhdXRvIGxpbmVJ
bml0aWFsUmVjdCA9IElubGluZVJlY3QgeyBsaW5lTG9naWNhbFRvcCwgY29uc3RyYWludHMuaG9y
aXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdp
ZHRoLCBmb3JtYXR0aW5nVXRpbHMoKS5pbml0aWFsTGluZUhlaWdodCghcHJldmlvdXNMaW5lLmhh
c192YWx1ZSgpKSB9OwogICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExpbmVJbnB1dCB7IHsgbGVh
ZGluZ0lubGluZUl0ZW1Qb3NpdGlvbiwgbmVlZHNMYXlvdXRSYW5nZS5lbmQgfSwgbGluZUluaXRp
YWxSZWN0IH07CiAgICAgICAgIGF1dG8gbGluZUluZGV4ID0gcHJldmlvdXNMaW5lID8gKHByZXZp
b3VzTGluZS0+bGluZUluZGV4ICsgMSkgOiAwbHU7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBJbmxp
bmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJh
Y3RMaW5lQnVpbGRlciYgbGluZQogICAgICAgICB1cGRhdGVJbmxpbmVMYXlvdXRTdGF0ZVdpdGhM
aW5lTGF5b3V0UmVzdWx0KGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRp
bmdDb250ZXh0KTsKIAogICAgICAgICBhdXRvIGxpbmVDb250ZW50RW5kID0gbGluZUxheW91dFJl
c3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kOwotICAgICAgICBsZWFkaW5nSW5saW5lSXRlbVBvc2l0
aW9uID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9u
Rm9yTmV4dExpbmUobGluZUNvbnRlbnRFbmQsIHByZXZpb3VzTGluZUVuZCwgbmVlZHNMYXlvdXRS
YW5nZS5lbmQpOworICAgICAgICBsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uID0gSW5saW5lRm9y
bWF0dGluZ1V0aWxzOjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUobGluZUNv
bnRlbnRFbmQsIHByZXZpb3VzTGluZUVuZCwgbmVlZHNMYXlvdXRSYW5nZS5lbmQpOwogICAgICAg
ICBhdXRvIGlzTGFzdExpbmUgPSBsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uID09IG5lZWRzTGF5
b3V0UmFuZ2UuZW5kICYmIGxpbmVMYXlvdXRSZXN1bHQuZmxvYXRDb250ZW50LnN1c3BlbmRlZEZs
b2F0cy5pc0VtcHR5KCk7CiAgICAgICAgIGlmIChpc0xhc3RMaW5lKSB7CiAgICAgICAgICAgICBs
YXlvdXRSZXN1bHQucmFuZ2UgPSAhaXNQYXJ0aWFsTGF5b3V0ID8gSW5saW5lTGF5b3V0UmVzdWx0
OjpSYW5nZTo6RnVsbCA6IElubGluZUxheW91dFJlc3VsdDo6UmFuZ2U6OkZ1bGxGcm9tRGFtYWdl
OwpAQCAtMjA2LDcgKzIwNiw3IEBAIElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGluZUxheW91dChBYnN0cmFjdExpbmVCdWlsZGVyJiBsaW5lCiAKICAgICAgICAg
cHJldmlvdXNMaW5lID0gUHJldmlvdXNMaW5lIHsgbGluZUluZGV4LCBsaW5lTGF5b3V0UmVzdWx0
LmNvbnRlbnRHZW9tZXRyeS50cmFpbGluZ092ZXJmbG93aW5nQ29udGVudFdpZHRoLCAhbGluZUxh
eW91dFJlc3VsdC5pbmxpbmVDb250ZW50LmlzRW1wdHkoKSAmJiBsaW5lTGF5b3V0UmVzdWx0Lmlu
bGluZUNvbnRlbnQubGFzdCgpLmlzTGluZUJyZWFrKCksIGxpbmVMYXlvdXRSZXN1bHQuZGlyZWN0
aW9uYWxpdHkuaW5saW5lQmFzZURpcmVjdGlvbiwgV1RGTW92ZShsaW5lTGF5b3V0UmVzdWx0LmZs
b2F0Q29udGVudC5zdXNwZW5kZWRGbG9hdHMpIH07CiAgICAgICAgIHByZXZpb3VzTGluZUVuZCA9
IGxpbmVDb250ZW50RW5kOwotICAgICAgICBsaW5lTG9naWNhbFRvcCA9IGZvcm1hdHRpbmdHZW9t
ZXRyeSgpLmxvZ2ljYWxUb3BGb3JOZXh0TGluZShsaW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNh
bFJlY3QsIGZsb2F0aW5nQ29udGV4dCk7CisgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gZm9ybWF0
dGluZ1V0aWxzKCkubG9naWNhbFRvcEZvck5leHRMaW5lKGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVM
b2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0KTsKICAgICB9CiAgICAgSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyOjphZGRMaW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFwcGxpY2FibGUoKnRoaXMs
IGlubGluZUxheW91dFN0YXRlKCksIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CiAgICAg
cmV0dXJuIGxheW91dFJlc3VsdDsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0Ojp1cGRhdGVJbmxpbmVMYXlvdXRTdGF0ZVdpdGhMaW5lTGF5b3V0UmVzdWx0
KGNvbnN0CiAgICAgfQogCiAgICAgaWYgKGxpbmVMYXlvdXRSZXN1bHQuaXNGaXJzdExhc3QuaXNM
YXN0TGluZVdpdGhJbmxpbmVDb250ZW50KQotICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZSgpLnNl
dENsZWFyR2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nR2VvbWV0cnkoKS5sb2dpY2FsVG9wRm9y
TmV4dExpbmUobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRl
eHQpIC0gbGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgpKTsKKyAgICAgICAgaW5saW5lTGF5b3V0U3Rh
dGUoKS5zZXRDbGVhckdhcEFmdGVyTGFzdExpbmUoZm9ybWF0dGluZ1V0aWxzKCkubG9naWNhbFRv
cEZvck5leHRMaW5lKGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdD
b250ZXh0KSAtIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSk7CiAKICAgICBsaW5lTGF5b3V0UmVz
dWx0LmVuZHNXaXRoSHlwaGVuID8gaW5saW5lTGF5b3V0U3RhdGUoKS5pbmNyZW1lbnRTdWNjZXNz
aXZlSHlwaGVuYXRlZExpbmVDb3VudCgpIDogaW5saW5lTGF5b3V0U3RhdGUoKS5yZXNldFN1Y2Nl
c3NpdmVIeXBoZW5hdGVkTGluZUNvdW50KCk7CiB9CkBAIC0zMDUsNyArMzA1LDcgQEAgSW5saW5l
UmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxp
bmVDb250ZW50KGNvbnN0IEwKIAogICAgIGRpc3BsYXlDb250ZW50LmJveGVzLmFwcGVuZFZlY3Rv
cihXVEZNb3ZlKGJveGVzKSk7CiAgICAgZGlzcGxheUNvbnRlbnQubGluZXMuYXBwZW5kKGRpc3Bs
YXlMaW5lKTsKLSAgICByZXR1cm4gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpmbGlwVmlzdWFs
UmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGRpc3BsYXlDb250ZW50LmxpbmVzLmxhc3QoKS5s
aW5lQm94UmVjdCgpLCByb290KCkuc3R5bGUoKS53cml0aW5nTW9kZSgpKTsKKyAgICByZXR1cm4g
SW5saW5lRm9ybWF0dGluZ1V0aWxzOjpmbGlwVmlzdWFsUmVjdFRvTG9naWNhbEZvcldyaXRpbmdN
b2RlKGRpc3BsYXlDb250ZW50LmxpbmVzLmxhc3QoKS5saW5lQm94UmVjdCgpLCByb290KCkuc3R5
bGUoKS53cml0aW5nTW9kZSgpKTsKIH0KIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
cmVzZXRHZW9tZXRyeUZvckNsYW1wZWRDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVl
ZHNEaXNwbGF5Q29udGVudFJhbmdlLCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0OjpTdXNwZW5kZWRG
bG9hdExpc3QmIHN1c3BlbmRlZEZsb2F0cywgTGF5b3V0UG9pbnQgdG9wbGVmdCkKQEAgLTM2Myw3
ICszNjMsNyBAQCBib29sIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29u
dGVudEZvckxpbmVGcm9tQ2FjaGVkQ29udGVudChjb25zdAogCiAgICAgbGluZUJyZWFraW5nUmVz
dWx0LmxpbmVHZW9tZXRyeS5sb2dpY2FsVG9wTGVmdCA9IHsgY29uc3RyYWludHMuaG9yaXpvbnRh
bCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkgfTsKICAgICBsaW5lQnJl
YWtpbmdSZXN1bHQubGluZUdlb21ldHJ5LmxvZ2ljYWxXaWR0aCA9IGNvbnN0cmFpbnRzLmhvcml6
b250YWwoKS5sb2dpY2FsV2lkdGg7Ci0gICAgbGluZUJyZWFraW5nUmVzdWx0LmNvbnRlbnRHZW9t
ZXRyeS5sb2dpY2FsTGVmdCA9IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aG9yaXpvbnRhbEFs
aWdubWVudE9mZnNldChyb290KCkuc3R5bGUoKSwgbGluZUJyZWFraW5nUmVzdWx0LmNvbnRlbnRH
ZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVCcmVha2luZ1Jlc3VsdC5saW5lR2VvbWV0cnkubG9n
aWNhbFdpZHRoLCBsaW5lQnJlYWtpbmdSZXN1bHQuaGFuZ2luZ0NvbnRlbnQubG9naWNhbFdpZHRo
LCBsaW5lQnJlYWtpbmdSZXN1bHQuaW5saW5lQ29udGVudCwgdHJ1ZSk7CisgICAgbGluZUJyZWFr
aW5nUmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsTGVmdCA9IElubGluZUZvcm1hdHRpbmdV
dGlsczo6aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChyb290KCkuc3R5bGUoKSwgbGluZUJyZWFr
aW5nUmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVCcmVha2luZ1Jlc3Vs
dC5saW5lR2VvbWV0cnkubG9naWNhbFdpZHRoLCBsaW5lQnJlYWtpbmdSZXN1bHQuaGFuZ2luZ0Nv
bnRlbnQubG9naWNhbFdpZHRoLCBsaW5lQnJlYWtpbmdSZXN1bHQuaW5saW5lQ29udGVudCwgdHJ1
ZSk7CiAgICAgYXV0byBsaW5lQm94ID0gTGluZUJveEJ1aWxkZXIgeyAqdGhpcywgbGluZUJyZWFr
aW5nUmVzdWx0IH0uYnVpbGQoeyB9KTsKICAgICBjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGlu
ZUNvbnRlbnQobGluZUJveCwgbGluZUJyZWFraW5nUmVzdWx0LCBjb25zdHJhaW50cywgbGF5b3V0
UmVzdWx0LmRpc3BsYXlDb250ZW50KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDZkN2JkNTA3NjE5YS4uNmE0
YTk1MTdhZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKICNp
bmNsdWRlICJJbmxpbmVEaXNwbGF5Q29udGVudC5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRp
bmdDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgor
I2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdVdGlscy5oIgogI2luY2x1ZGUgIklubGluZUxheW91
dFN0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lUXVpcmtzLmgiCiAjaW5jbHVkZSAiSW50cmluc2lj
V2lkdGhIYW5kbGVyLmgiCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBJbmxpbmVMYXlvdXRSZXN1
bHQgewogCiAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIGxheW91dCBsb2dpYyBmb3IgaW5s
aW5lIGZvcm1hdHRpbmcgY29udGV4dHMuCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIv
dmlzdXJlbi5odG1sI2lubGluZS1mb3JtYXR0aW5nCi1jbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCBmaW5hbCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CitjbGFzcyBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRS
b290LCBMYXlvdXRTdGF0ZSYsIEJsb2NrTGF5b3V0U3RhdGUmIHBhcmVudEJsb2NrTGF5b3V0U3Rh
dGUpOwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cyBjb21wdXRlZEludHJpbnNpY1NpemVzKGNvbnN0IElubGluZURhbWFnZSopOwogICAgIExh
eW91dFVuaXQgbWF4aW11bUNvbnRlbnRTaXplKCk7CiAKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OyB9CisgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ1V0
aWxzJiBmb3JtYXR0aW5nVXRpbHMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdV
dGlsczsgfQogICAgIGNvbnN0IElubGluZVF1aXJrcyYgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVRdWlya3M7IH0KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQganVzdCBiZSAibGF5
b3V0IHN0YXRlIiAocGVuZGluZyBvbiByZW5hbWluZyBMYXlvdXRTdGF0ZSkuCiAgICAgSW5saW5l
TGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9pbmxpbmVMYXlvdXRT
dGF0ZTsgfQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogCiBwcml2YXRlOgogICAgIElubGlu
ZUNvbnRlbnRDYWNoZSYgbV9pbmxpbmVDb250ZW50Q2FjaGU7Ci0gICAgY29uc3QgSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5IG1faW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OworICAgIGNvbnN0IElu
bGluZUZvcm1hdHRpbmdVdGlscyBtX2lubGluZUZvcm1hdHRpbmdVdGlsczsKICAgICBjb25zdCBJ
bmxpbmVRdWlya3MgbV9pbmxpbmVRdWlya3M7CiAgICAgSW5saW5lTGF5b3V0U3RhdGUgbV9pbmxp
bmVMYXlvdXRTdGF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ1V0aWxzLmNwcApzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwCmluZGV4IDhlMmRhZmI1MDIxYy4u
NGFjODFmMDFiMDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdVdGlscy5jcHAKQEAgLTI0LDE3ICsyNCwxNSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCIKKyNpbmNsdWRlICJJbmxp
bmVGb3JtYXR0aW5nVXRpbHMuaCIKIAogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiRm9ybWF0dGluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJJbmxpbmVEaXNwbGF5Q29udGVudC5oIgotI2luY2x1ZGUgIklubGluZUZvcm1hdHRp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lTGV2ZWxCb3hJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oIgogI2luY2x1ZGUgIklubGluZVF1aXJr
cy5oIgotI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEVsZW1lbnRCb3gu
aCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUlu
bGluZXMuaCIKQEAgLTQzLDEyICs0MSwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CiAKLUlubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6SW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCkKLSAgICA6IEZvcm1hdHRpbmdHZW9tZXRyeShpbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCkKK0lubGluZUZvcm1hdHRpbmdVdGlsczo6SW5saW5lRm9ybWF0dGluZ1V0aWxzKGNvbnN0IElu
bGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKKyAgICA6IG1f
aW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiB7CiB9CiAK
LUlubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpsb2dpY2FsVG9wRm9y
TmV4dExpbmUoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3Qg
SW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0
aW5nQ29udGV4dCkgY29uc3QKK0lubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ1V0aWxz
Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxheW91
dFJlc3VsdCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdGlu
Z0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCkgY29uc3QKIHsKICAgICBhdXRvIGRpZE1hbmFnZVRv
UGxhY2VJbmxpbmVDb250ZW50T3JGbG9hdCA9ICFsaW5lTGF5b3V0UmVzdWx0LmlubGluZUl0ZW1S
YW5nZS5pc0VtcHR5KCk7CiAgICAgaWYgKGRpZE1hbmFnZVRvUGxhY2VJbmxpbmVDb250ZW50T3JG
bG9hdCkgewpAQCAtOTYsNDUgKzk0LDIzIEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUxheW91CiAgICAg
cmV0dXJuIGNlaWwobmV4dGFmdGVyKGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46Om1heCgpKSk7CiB9CiAKLUNvbnRlbnRXaWR0aEFuZE1hcmdpbiBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUJsb2NrQ29udGVudFdpZHRoQW5kTWFyZ2lu
KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBjb25zdCBIb3Jpem9udGFsQ29uc3Ry
YWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxW
YWx1ZXMmIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKSBjb25zdAorQ29udGVudFdpZHRoQW5k
TWFyZ2luIElubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lQmxvY2tDb250ZW50V2lkdGhBbmRN
YXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3Zl
cnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKSBjb25zdAogewotICAgIEFTU0VSVChmb3JtYXR0aW5n
Q29udGV4dFJvb3QuaXNJbkZsb3coKSk7Ci0KLSAgICAvLyAxMC4zLjEwICdJbmxpbmUtYmxvY2sn
LCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwotCi0gICAgLy8gRXhhY3RseSBhcyBp
bmxpbmUgcmVwbGFjZWQgZWxlbWVudHMuCi0gICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5p
c1JlcGxhY2VkQm94KCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0
aEFuZE1hcmdpbihkb3duY2FzdDxFbGVtZW50Qm94Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QpLCBo
b3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMpOwot
CisgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAvLyAxMC4zLjkgJ0lubGlu
ZS1ibG9jaycsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwotCi0gICAgLy8g
SWYgJ3dpZHRoJyBpcyAnYXV0bycsIHRoZSB1c2VkIHZhbHVlIGlzIHRoZSBzaHJpbmstdG8tZml0
IHdpZHRoIGFzIGZvciBmbG9hdGluZyBlbGVtZW50cy4KLSAgICAvLyBBIGNvbXB1dGVkIHZhbHVl
IG9mICdhdXRvJyBmb3IgJ21hcmdpbi1sZWZ0JyBvciAnbWFyZ2luLXJpZ2h0JyBiZWNvbWVzIGEg
dXNlZCB2YWx1ZSBvZiAnMCcuCi0gICAgLy8gIzEKLSAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRW
YWx1ZShmb3JtYXR0aW5nQ29udGV4dFJvb3Quc3R5bGUoKS5sb2dpY2FsV2lkdGgoKSwgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7Ci0gICAgaWYgKCF3aWR0aCkKLSAgICAgICAg
d2lkdGggPSBzaHJpbmtUb0ZpdFdpZHRoKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaG9yaXpvbnRh
bENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7Ci0KLSAgICAvLyAjMgotICAgIGF1dG8gY29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250
YWxNYXJnaW4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwot
Ci0gICAgcmV0dXJuIENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyBjb21wdXRlZEhv
cml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbi5lbmQudmFsdWVfb3IoMF9sdSkgfSB9OworICAgIC8vIDEwLjMuMTAgJ0lubGluZS1ibG9j
aycsIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93CisgICAgcmV0dXJuIHsgfTsKIH0K
IAotQ29udGVudEhlaWdodEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGlu
ZUJsb2NrQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
SG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJy
aWRkZW5WZXJ0aWNhbFZhbHVlcyYgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKSBjb25zdAorQ29u
dGVudEhlaWdodEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGluZUJsb2NrQ29u
dGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdAogewotICAgIEFTU0VS
VChsYXlvdXRCb3guaXNJbkZsb3coKSk7Ci0KKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lF
VCgpOwogICAgIC8vIDEwLjYuMiBJbmxpbmUgcmVwbGFjZWQgZWxlbWVudHMsIGJsb2NrLWxldmVs
IHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93LCAnaW5saW5lLWJsb2NrJyByZXBsYWNl
ZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdyBhbmQgZmxvYXRpbmcgcmVwbGFjZWQgZWxlbWVudHMK
LSAgICBpZiAobGF5b3V0Qm94LmlzUmVwbGFjZWRCb3goKSkKLSAgICAgICAgcmV0dXJuIGlubGlu
ZVJlcGxhY2VkQ29udGVudEhlaWdodEFuZE1hcmdpbihkb3duY2FzdDxFbGVtZW50Qm94PihsYXlv
dXRCb3gpLCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgb3ZlcnJpZGRlblZlcnRpY2FsVmFs
dWVzKTsKLQogICAgIC8vIDEwLjYuNiBDb21wbGljYXRlZCBjYXNlcwotICAgIC8vIC0gJ0lubGlu
ZS1ibG9jaycsIG5vbi1yZXBsYWNlZCBlbGVtZW50cy4KLSAgICByZXR1cm4gY29tcGxpY2F0ZWRD
YXNlcyhsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGRlblZlcnRpY2Fs
VmFsdWVzKTsKKyAgICByZXR1cm4geyB9OwogfQogCi1ib29sIElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTo6aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYg
aW5saW5lTGV2ZWxCb3gpIGNvbnN0Citib29sIElubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5l
TGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxC
b3gpIGNvbnN0CiB7CiAgICAgaWYgKCFpbmxpbmVMZXZlbEJveC5tYXlTdHJldGNoTGluZUJveCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTAsNyArMTI2LDcgQEAgYm9vbCBJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goY29uc3QgSW5s
aW5lTGV2ZWxCb3gKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5OjpmbGlwVmlzdWFsUmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGNv
bnN0IElubGluZVJlY3QmIHZpc3VhbFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQorSW5s
aW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmZsaXBWaXN1YWxSZWN0VG9Mb2dpY2FsRm9y
V3JpdGluZ01vZGUoY29uc3QgSW5saW5lUmVjdCYgdmlzdWFsUmVjdCwgV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUpCiB7CiAgICAgc3dpdGNoICh3cml0aW5nTW9kZVRvQmxvY2tGbG93RGlyZWN0aW9u
KHdyaXRpbmdNb2RlKSkgewogICAgIGNhc2UgQmxvY2tGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRv
bToKQEAgLTE3MCw3ICsxNDYsNyBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdHZW9tZXRy
eTo6ZmxpcFZpc3VhbFJlY3RUb0xvZ2ljYWxGb3JXcml0aW5nTW9kZShjb25zdAogICAgIHJldHVy
biB2aXN1YWxSZWN0OwogfQogCi1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2ljV2lkdGhNb2RlIGlzSW50cmluc2lj
V2lkdGhNb2RlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJy
ZWFrLCBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKSBjb25zdAorSW5saW5lTGF5b3V0
VW5pdCBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmNvbXB1dGVkVGV4dEluZGVudChJc0ludHJpbnNp
Y1dpZHRoTW9kZSBpc0ludHJpbnNpY1dpZHRoTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPiBwcmV2
aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhaywgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0
aCkgY29uc3QKIHsKICAgICBhdXRvJiByb290ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7
CiAKQEAgLTIxMCwxNCArMTg2LDE0IEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5Ojpjb21wdXRlZFRleHRJbmRlbnQoSXNJbnRyaW5zaWNXaWR0aE1vCiAgICAgcmV0
dXJuIHsgbWluaW11bVZhbHVlRm9yTGVuZ3RoKHRleHRJbmRlbnQsIGF2YWlsYWJsZVdpZHRoKSB9
OwogfQogCi1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5pdGlh
bExpbmVIZWlnaHQoYm9vbCBpc0ZpcnN0TGluZSkgY29uc3QKK0lubGluZUxheW91dFVuaXQgSW5s
aW5lRm9ybWF0dGluZ1V0aWxzOjppbml0aWFsTGluZUhlaWdodChib29sIGlzRmlyc3RMaW5lKSBj
b25zdAogewogICAgIGlmIChpbmxpbmVMYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQog
ICAgICAgICByZXR1cm4gaXNGaXJzdExpbmUgPyBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5m
aXJzdExpbmVTdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpIDogZm9ybWF0dGluZ0NvbnRleHQo
KS5yb290KCkuc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKICAgICByZXR1cm4gZm9ybWF0
dGluZ0NvbnRleHQoKS5xdWlya3MoKS5pbml0aWFsTGluZUhlaWdodCgpOwogfQogCi1GbG9hdGlu
Z0NvbnRleHQ6OkNvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6ZmxvYXRDb25z
dHJhaW50c0ZvckxpbmUoSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCwgSW5saW5lTGF5
b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9h
dGluZ0NvbnRleHQpIGNvbnN0CitGbG9hdGluZ0NvbnRleHQ6OkNvbnN0cmFpbnRzIElubGluZUZv
cm1hdHRpbmdVdGlsczo6ZmxvYXRDb25zdHJhaW50c0ZvckxpbmUoSW5saW5lTGF5b3V0VW5pdCBs
aW5lTG9naWNhbFRvcCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodCwgY29u
c3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0CiB7CiAgICAgYXV0byBs
b2dpY2FsVG9wQ2FuZGlkYXRlID0gTGF5b3V0VW5pdCB7IGxpbmVMb2dpY2FsVG9wIH07CiAgICAg
YXV0byBsb2dpY2FsQm90dG9tQ2FuZGlkYXRlID0gTGF5b3V0VW5pdCB7IGxpbmVMb2dpY2FsVG9w
ICsgY29udGVudExvZ2ljYWxIZWlnaHQgfTsKQEAgLTIyNyw3ICsyMDMsNyBAQCBGbG9hdGluZ0Nv
bnRleHQ6OkNvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6ZmxvYXRDb25zdHJh
aW50c0ZvckxpbmUoSQogICAgIHJldHVybiBmbG9hdGluZ0NvbnRleHQuY29uc3RyYWludHMobG9n
aWNhbFRvcENhbmRpZGF0ZSwgbG9naWNhbEJvdHRvbUNhbmRpZGF0ZSwgRmxvYXRpbmdDb250ZXh0
OjpNYXlCZUFib3ZlTGFzdEZsb2F0OjpZZXMpOwogfQogCi1JbmxpbmVMYXlvdXRVbml0IElubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeTo6aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChjb25zdCBSZW5k
ZXJTdHlsZSYgcm9vdFN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHQs
IElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBoYW5n
aW5nVHJhaWxpbmdXaWR0aCwgY29uc3QgTGluZTo6UnVuTGlzdCYgcnVucywgYm9vbCBpc0xhc3RM
aW5lLCBzdGQ6Om9wdGlvbmFsPFRleHREaXJlY3Rpb24+IGlubGluZUJhc2VEaXJlY3Rpb25PdmVy
cmlkZSkKK0lubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpob3Jpem9udGFs
QWxpZ25tZW50T2Zmc2V0KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIElubGluZUxheW91
dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFdp
ZHRoLCBJbmxpbmVMYXlvdXRVbml0IGhhbmdpbmdUcmFpbGluZ1dpZHRoLCBjb25zdCBMaW5lOjpS
dW5MaXN0JiBydW5zLCBib29sIGlzTGFzdExpbmUsIHN0ZDo6b3B0aW9uYWw8VGV4dERpcmVjdGlv
bj4gaW5saW5lQmFzZURpcmVjdGlvbk92ZXJyaWRlKQogewogICAgIC8vIERlcGVuZGluZyBvbiB0
aGUgbGluZeKAmXMgYWxpZ25tZW50L2p1c3RpZmljYXRpb24sIHRoZSBoYW5naW5nIGdseXBoIGNh
biBiZSBwbGFjZWQgb3V0c2lkZSB0aGUgbGluZSBib3guCiAgICAgaWYgKGhhbmdpbmdUcmFpbGlu
Z1dpZHRoKSB7CkBAIC0zMDgsNyArMjg0LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnk6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoY29uc3QgUmVuZGUKICAg
ICByZXR1cm4geyB9OwogfQogCi1JbmxpbmVJdGVtUG9zaXRpb24gSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUoSW5saW5lSXRlbVBv
c2l0aW9uIGxpbmVDb250ZW50RW5kLCBzdGQ6Om9wdGlvbmFsPElubGluZUl0ZW1Qb3NpdGlvbj4g
cHJldmlvdXNMaW5lVHJhaWxpbmdJbmxpbmVJdGVtUG9zaXRpb24sIElubGluZUl0ZW1Qb3NpdGlv
biBsYXlvdXRSYW5nZUVuZCkKK0lubGluZUl0ZW1Qb3NpdGlvbiBJbmxpbmVGb3JtYXR0aW5nVXRp
bHM6OmxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0TGluZShJbmxpbmVJdGVtUG9zaXRp
b24gbGluZUNvbnRlbnRFbmQsIHN0ZDo6b3B0aW9uYWw8SW5saW5lSXRlbVBvc2l0aW9uPiBwcmV2
aW91c0xpbmVUcmFpbGluZ0lubGluZUl0ZW1Qb3NpdGlvbiwgSW5saW5lSXRlbVBvc2l0aW9uIGxh
eW91dFJhbmdlRW5kKQogewogICAgIGlmICghcHJldmlvdXNMaW5lVHJhaWxpbmdJbmxpbmVJdGVt
UG9zaXRpb24pCiAgICAgICAgIHJldHVybiBsaW5lQ29udGVudEVuZDsKQEAgLTMyNiw3ICszMDIs
NyBAQCBJbmxpbmVJdGVtUG9zaXRpb24gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpsZWFkaW5n
SW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbgogICAgIHJldHVybiB7IHN0ZDo6bWluKGxpbmVD
b250ZW50RW5kLmluZGV4ICsgMSwgbGF5b3V0UmFuZ2VFbmQuaW5kZXgpLCB7IH0gfTsKIH0KIAot
SW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUl0ZW1XaWR0
aChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRM
b2dpY2FsTGVmdCwgYm9vbCB1c2VGaXJzdExpbmVTdHlsZSkgY29uc3QKK0lubGluZUxheW91dFVu
aXQgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjppbmxpbmVJdGVtV2lkdGgoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQsIGJvb2wg
dXNlRmlyc3RMaW5lU3R5bGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlubGluZUl0ZW0ubGF5b3V0
Qm94KCkuaXNJbmxpbmVMZXZlbEJveCgpKTsKICAgICBpZiAoaXM8SW5saW5lVGV4dEl0ZW0+KGlu
bGluZUl0ZW0pKSB7CkBAIC00NDEsNyArNDE3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXRT
b2Z0V3JhcE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW0mIHByZXZpb3VzLCBjb25zdCBJbmwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6
bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3Qgc3RhcnRJbmRleCwgY29uc3QgSW5saW5lSXRlbVJh
bmdlJiBsYXlvdXRSYW5nZSwgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKQorc2l6ZV90
IElubGluZUZvcm1hdHRpbmdVdGlsczo6bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3Qgc3RhcnRJ
bmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwgY29uc3QgSW5saW5lSXRl
bXMmIGlubGluZUl0ZW1zKQogewogICAgIC8vIDEuIEZpbmQgdGhlIHN0YXJ0IGNhbmRpZGF0ZSBi
eSBza2lwcGluZyBsZWFkaW5nIG5vbi1jb250ZW50IGl0ZW1zIGUuZyAiPHNwYW4+PHNwYW4+c3Rh
cnQiLiBPcHBvcnR1bml0eSBpcyBhZnRlciAiPHNwYW4+PHNwYW4+Ii4KICAgICAvLyAyLiBGaW5k
IHRoZSBlbmQgY2FuZGlkYXRlIGJ5IHNraXBwaW5nIG5vbi1jb250ZW50IGl0ZW1zIGluYmV0d2Vl
biBlLmcuICI8c3Bhbj48c3Bhbj5zdGFydDwvc3Bhbj5lbmQiLiBPcHBvcnR1bml0eSBpcyBhZnRl
ciAiPC9zcGFuPiIuCkBAIC01MjcsNyArNTAzLDcgQEAgc2l6ZV90IElubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeTo6bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3Qgc3RhcnRJbmRleCwgY29uc3QgSW4K
ICAgICByZXR1cm4gbGF5b3V0UmFuZ2UuZW5kSW5kZXgoKTsKIH0KIAotY29uc3QgSW5saW5lTGF5
b3V0U3RhdGUmIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lTGF5b3V0U3RhdGUoKSBj
b25zdAorY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIElubGluZUZvcm1hdHRpbmdVdGlsczo6aW5s
aW5lTGF5b3V0U3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgp
LmlubGluZUxheW91dFN0YXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdVdGlscy5oCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuaAppbmRleCAxZDk5OTMxNjliOGIuLjUy
ZDQwYzQwYmVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0
aWxzLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGbG9h
dGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJGb3JtYXR0aW5nR2VvbWV0cnkuaCIKICNpbmNsdWRl
ICJJbmxpbmVMaW5lQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw5ICsz
NCw5IEBAIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKIGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OwogY2xhc3MgSW5saW5lTGV2ZWxCb3g7CiAKLWNsYXNzIElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeSA6IHB1YmxpYyBGb3JtYXR0aW5nR2VvbWV0cnkgeworY2xhc3MgSW5saW5lRm9ybWF0dGlu
Z1V0aWxzIHsKIHB1YmxpYzoKLSAgICBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKyAgICBJbmxpbmVGb3JtYXR0aW5nVXRpbHMoY29uc3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKIAogICAgIElubGluZUxheW91dFVuaXQgbG9naWNh
bFRvcEZvck5leHRMaW5lKGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBJbmxpbmVSZWN0
JiBsaW5lTG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYpIGNvbnN0OwogCkBAIC02
OSwxMiArNjcsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IGNv
bnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQm
LCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwg
Y29uc3QgRmxvYXRpbmdDb250ZXh0JikgY29uc3Q7CiAKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0dGluZ0dlb21ldHJ5Ojpmb3JtYXR0aW5nQ29u
dGV4dCgpKTsgfQogICAgIGNvbnN0IElubGluZUxheW91dFN0YXRlJiBpbmxpbmVMYXlvdXRTdGF0
ZSgpIGNvbnN0OworICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5n
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KKwor
cHJpdmF0ZToKKyAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDsKKwogfTsKIAogfQogfQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0xB
WU9VVF9GT1JNQVRUSU5HX0dFT01FVFJZKElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSwgaXNJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnkoKSkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgK
aW5kZXggN2EzYjY1ODg1YjdlLi42ZmNmZjZkOWRhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGV2ZWxCb3guaApAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IExpbmVCb3g7CiAgICAgZnJpZW5kIGNsYXNzIExpbmVCb3hCdWlsZGVyOwogICAgIGZyaWVuZCBj
bGFzcyBMaW5lQm94VmVydGljYWxBbGlnbmVyOwotICAgIGZyaWVuZCBjbGFzcyBJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnk7CisgICAgZnJpZW5kIGNsYXNzIElubGluZUZvcm1hdHRpbmdVdGlsczsK
IAogICAgIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9s
b2dpY2FsUmVjdDsgfQogICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9naWNhbFJlY3QudG9wKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFs
aWduZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKaW5kZXggMjhjMzM1YjBmZjgyLi5h
ODc5MGU0M2RiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hWZXJ0aWNhbEFsaWduZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBMYXlvdXQg
ewogCiBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94VmVydGljYWxBbGlnbmVyKGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKICAgICA6
IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCi0gICAg
LCBtX2lubGluZUZvcm1hdHRpbmdHZW9tZXRyeShpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKKyAg
ICAsIG1faW5saW5lRm9ybWF0dGluZ1V0aWxzKGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQogewog
fQogCkBAIC0xMzcsNyArMTM3LDcgQEAgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6TGluZUJveEFs
aWdubWVudENvbnRlbnQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUwKICAgICAvLyAy
LiBDb21wdXRlIHRoZSBiYXNlbGluZS9sb2dpY2FsIHRvcCBwb3NpdGlvbiBvZiB0aGUgcm9vdCBp
bmxpbmUgYm94LiBBbGlnbmVkIGJveGVzIHB1c2ggdGhlIHJvb3QgaW5saW5lIGJveCBhcm91bmQg
aW5zaWRlIHRoZSBsaW5lIGJveC4KICAgICAvLyAzLiBGaW5hbGx5IGFsaWduIHRoZSBpbmxpbmUg
bGV2ZWwgYm94ZXMgdXNpbmcgKG1vc3RseSkgbm9ybWFsIGlubGluZSBsZXZlbCBib3ggZ2VvbWV0
cmllcy4KICAgICBhdXRvJiByb290SW5saW5lQm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7
Ci0gICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gdGhpcy0+Zm9ybWF0dGluZ0dlb21ldHJ5
KCk7CisgICAgYXV0byYgZm9ybWF0dGluZ1V0aWxzID0gdGhpcy0+Zm9ybWF0dGluZ1V0aWxzKCk7
CiAgICAgYXV0byBjb250ZW50SGFzQW5ub3RhdGlvbiA9IHJvb3RJbmxpbmVCb3guaGFzQW5ub3Rh
dGlvbigpOwogCiAgICAgLy8gTGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGJhc2VkIG9u
IHRoZSBsYXlvdXQgYm91bmRzIG9mIHRoZSBpbmxpbmUgYm94ZXMgYW5kIG5vdCB0aGVpciBsb2dp
Y2FsIChhc2NlbnQvZGVzY2VudCkgZGltZW5zaW9ucy4KQEAgLTE0OSw3ICsxNDksNyBAQCBMaW5l
Qm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94QWxpZ25tZW50Q29udGVudCBMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTAogCiAgICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9IHN0ZDo6
b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwogICAgIGF1dG8gbWF4aW11bUxvZ2ljYWxC
b3R0b20gPSBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICBpZiAoZm9y
bWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3gocm9vdElubGluZUJv
eCkpIHsKKyAgICBpZiAoZm9ybWF0dGluZ1V0aWxzLmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVC
b3gocm9vdElubGluZUJveCkpIHsKICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBJbmxpbmVM
YXlvdXRVbml0IHsgfTsKICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSByb290SW5saW5l
Qm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICBpbmxpbmVMZXZlbEJveEFic29s
dXRlVG9wQW5kQm90dG9tTWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVUb3BBbmRCb3R0
b20geyAqbWluaW11bUxvZ2ljYWxUb3AsICptYXhpbXVtTG9naWNhbEJvdHRvbSB9KTsKQEAgLTIy
NCw3ICsyMjQsNyBAQCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94QWxpZ25tZW50Q29u
dGVudCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTAogICAgICAgICBhdXRvIGFic29s
dXRlTG9naWNhbEJvdHRvbSA9IGFic29sdXRlTG9naWNhbFRvcCArIGxheW91dEJvdW5kcy5oZWln
aHQoKTsKICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5hZGQo
JmlubGluZUxldmVsQm94LCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFic29sdXRlTG9naWNhbFRv
cCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tIH0pOwogICAgICAgICAvLyBTdHJldGNoIHRoZSBtaW4v
bWF4IGFic29sdXRlIHZhbHVlcyBpZiBhcHBsaWNhYmxlLgotICAgICAgICBpZiAoZm9ybWF0dGlu
Z0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxCb3gpKSB7
CisgICAgICAgIGlmIChmb3JtYXR0aW5nVXRpbHMuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJv
eChpbmxpbmVMZXZlbEJveCkpIHsKICAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0gc3Rk
OjptaW4obWluaW11bUxvZ2ljYWxUb3AudmFsdWVfb3IoYWJzb2x1dGVMb2dpY2FsVG9wKSwgYWJz
b2x1dGVMb2dpY2FsVG9wKTsKICAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0gc3Rk
OjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVfb3IoYWJzb2x1dGVMb2dpY2FsQm90dG9t
KSwgYWJzb2x1dGVMb2dpY2FsQm90dG9tKTsKICAgICAgICAgfQpAQCAtMjM2LDcgKzIzNiw3IEBA
IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50IExpbmVCb3hW
ZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMCiAgICAgYXV0byB0b3BBbGlnbmVkQm94ZXNNYXhpbXVt
SGVpZ2h0ID0gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07CiAgICAgYXV0byBi
b3R0b21BbGlnbmVkQm94ZXNNYXhpbXVtSGVpZ2h0ID0gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiB7IH07CiAgICAgZm9yIChhdXRvKiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJv
eCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMpIHsKLSAgICAgICAgaWYgKCFmb3Jt
YXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveCgqbGluZUJveFJlbGF0
aXZlSW5saW5lTGV2ZWxCb3gpKQorICAgICAgICBpZiAoIWZvcm1hdHRpbmdVdGlscy5pbmxpbmVM
ZXZlbEJveEFmZmVjdHNMaW5lQm94KCpsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgLy8gVGhpcyBsaW5lIGJveCByZWxhdGl2ZSBh
bGlnbmVkIGlubGluZSBsZXZlbCBib3ggc3RyZXRjaGVzIHRoZSBsaW5lIGJveC4KICAgICAgICAg
YXV0byBpbmxpbmVMZXZlbEJveEhlaWdodCA9IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94
LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKQEAgLTI1NiwxOCArMjU2LDE4IEBAIExpbmVCb3hW
ZXJ0aWNhbEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50IExpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmNvbXB1dGVMCiB2b2lkIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVSb290
SW5saW5lQm94VmVydGljYWxQb3NpdGlvbihMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMaW5lQm94
QWxpZ25tZW50Q29udGVudCYgbGluZUJveEFsaWdubWVudENvbnRlbnQpIGNvbnN0CiB7CiAgICAg
YXV0byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElubGluZUJveCgpOwotICAgIGF1dG8m
IGZvcm1hdHRpbmdHZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOworICAgIGF1
dG8mIGZvcm1hdHRpbmdVdGlscyA9IHRoaXMtPmZvcm1hdHRpbmdVdGlscygpOwogICAgIGF1dG8g
aGFzVG9wQWxpZ25lZElubGluZUxldmVsQm94ID0gZmFsc2U7CiAKICAgICBIYXNoTWFwPGNvbnN0
IElubGluZUxldmVsQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gaW5saW5lTGV2ZWxCb3hBYnNvbHV0
ZUJhc2VsaW5lT2Zmc2V0TWFwOwogICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9m
ZnNldE1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIElubGluZUxheW91dFVuaXQgeyB9KTsKIAogICAg
IGF1dG8gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBzdGQ6Om9w
dGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICBpZiAoZm9ybWF0dGluZ0dlb21ldHJ5
LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3gocm9vdElubGluZUJveCkpCisgICAgaWYgKGZv
cm1hdHRpbmdVdGlscy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVCb3gp
KQogICAgICAgICBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHJv
b3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50OwogCiAgICAgYXV0byBhZmZlY3RzUm9v
dElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0oYXV0byYgaW5saW5lTGV2ZWxCb3gpIHsK
LSAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVMZXZlbEJveEFmZmVjdHNM
aW5lQm94KGlubGluZUxldmVsQm94KTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdVdGlscy5p
bmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94KTsKICAgICB9OwogCiAg
ICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVs
Qm94ZXMoKSkgewpAQCAtMzc1LDcgKzM3NSw3IEBAIElubGluZUxldmVsQm94OjpBc2NlbnRBbmRE
ZXNjZW50IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmxheW91dEJvdW5kc0ZvcklubGluZUJvCiAg
ICAgLy8gaW5saW5lIGVsZW1lbnRzIHdob3NlIGNvbXB1dGVkIHZlcnRpY2FsLWFsaWduIHZhbHVl
IGlzIG5vdCB0b3Agb3IgYm90dG9tLgogICAgIC8vIFRoZSB0b3Agb2YgdGhlIGFsaWduZWQgc3Vi
dHJlZSBpcyB0aGUgaGlnaGVzdCBvZiB0aGUgdG9wcyBvZiB0aGUgYm94ZXMgaW4gdGhlIHN1YnRy
ZWUsIGFuZCB0aGUgYm90dG9tIGlzIGFuYWxvZ291cy4KICAgICBBU1NFUlQobm9uUm9vdElubGlu
ZUxldmVsQm94ZXNbaW5saW5lQm94SW5kZXhdLmlzSW5saW5lQm94KCkpOwotICAgIGF1dG8mIGZv
cm1hdHRpbmdHZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOworICAgIGF1dG8m
IGZvcm1hdHRpbmdVdGlscyA9IHRoaXMtPmZvcm1hdHRpbmdVdGlscygpOwogICAgIGF1dG8gZW5j
bG9zaW5nTGF5b3V0Qm91bmRzID0gSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgeyB9
OwogICAgIGF1dG8mIGlubGluZUJveFBhcmVudCA9IG5vblJvb3RJbmxpbmVMZXZlbEJveGVzW2lu
bGluZUJveEluZGV4XS5sYXlvdXRCb3goKS5wYXJlbnQoKTsKICAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IGlubGluZUJveEluZGV4ICsgMTsgaW5kZXggPCBub25Sb290SW5saW5lTGV2ZWxCb3hlcy5z
aXplKCk7ICsraW5kZXgpIHsKQEAgLTM4NCw3ICszODQsNyBAQCBJbmxpbmVMZXZlbEJveDo6QXNj
ZW50QW5kRGVzY2VudCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpsYXlvdXRCb3VuZHNGb3JJbmxp
bmVCbwogICAgICAgICAgICAgLy8gV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGRlc2NlbmRhbnQg
bGlzdC4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmICghZm9ybWF0
dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goZGVzY2VuZGFudElubGlu
ZUxldmVsQm94KSB8fCBkZXNjZW5kYW50SW5saW5lTGV2ZWxCb3guaGFzTGluZUJveFJlbGF0aXZl
QWxpZ25tZW50KCkpCisgICAgICAgIGlmICghZm9ybWF0dGluZ1V0aWxzLmlubGluZUxldmVsQm94
QWZmZWN0c0xpbmVCb3goZGVzY2VuZGFudElubGluZUxldmVsQm94KSB8fCBkZXNjZW5kYW50SW5s
aW5lTGV2ZWxCb3guaGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgZW5jbG9zaW5nTGF5b3V0Qm91bmRzLmFzY2VudCA9IHN0ZDo6bWF4
KGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQsIGVuY2xvc2lu
Z0xheW91dEJvdW5kcy5hc2NlbnQpOwogICAgICAgICBlbmNsb3NpbmdMYXlvdXRCb3VuZHMuZGVz
Y2VudCA9IHN0ZDo6bWF4KGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5k
ZXNjZW50LCBlbmNsb3NpbmdMYXlvdXRCb3VuZHMuZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94
VmVydGljYWxBbGlnbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKaW5kZXggYmI2ZTZkOGIx
ZDIzLi4zNjIzZWU4Y2E1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94VmVydGljYWxBbGlnbmVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuaCIKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nVXRpbHMuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CkBAIC01NiwxNCArNTYs
MTQgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IGFkanVzdEZvckFubm90YXRpb25J
Zk5lZWRlZChMaW5lQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94SGVpZ2h0KSBjb25zdDsK
ICAgICBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBsYXlvdXRCb3VuZHNGb3JJbmxp
bmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94TGlzdCYgbm9uUm9vdElu
bGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29uc3Q7CiAKLSAgICBjb25z
dCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OyB9CisgICAgY29uc3QgSW5saW5lRm9y
bWF0dGluZ1V0aWxzJiBmb3JtYXR0aW5nVXRpbHMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUZv
cm1hdHRpbmdVdGlsczsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7
IH0KICAgICBjb25zdCBFbGVtZW50Qm94JiByb290Qm94KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0
dGluZ0NvbnRleHQoKS5yb290KCk7IH0KICAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5s
aW5lTGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmlubGlu
ZUxheW91dFN0YXRlKCk7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKLSAgICBjb25zdCBJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkgbV9pbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk7CisgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ1V0aWxzIG1faW5saW5lRm9ybWF0dGluZ1V0aWxzOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IGQwYzhhZjU4ZTg2Mi4u
MWJlYzUzYjNjNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
CkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDU1NMaW5lQm94Q29udGFpblZhbHVlLmgi
CiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuaCIKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nVXRpbHMuaCIK
ICNpbmNsdWRlICJJbmxpbmVRdWlya3MuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNs
dWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgpAQCAtMjUxLDcgKzI1MSw3IEBAIExpbmVMYXlvdXRS
ZXN1bHQgTGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiBs
aW5lSW5wdXQsIGNvCiAKICAgICBhdXRvIGlzTGFzdExpbmUgPSBpc0xhc3RMaW5lV2l0aElubGlu
ZUNvbnRlbnQobGluZUNvbnRlbnQsIGxpbmVJbnB1dC5uZWVkc0xheW91dFJhbmdlLmVuZEluZGV4
KCksICFyZXN1bHQucnVucy5pc0VtcHR5KCkpOwogICAgIGF1dG8gaW5saW5lQmFzZURpcmVjdGlv
biA9ICFyZXN1bHQucnVucy5pc0VtcHR5KCkgPyBpbmxpbmVCYXNlRGlyZWN0aW9uRm9yTGluZUNv
bnRlbnQocmVzdWx0LnJ1bnMsIHJvb3RTdHlsZSgpLCBtX3ByZXZpb3VzTGluZSkgOiBUZXh0RGly
ZWN0aW9uOjpMVFI7Ci0gICAgYXV0byBjb250ZW50TG9naWNhbExlZnQgPSAhcmVzdWx0LnJ1bnMu
aXNFbXB0eSgpID8gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpob3Jpem9udGFsQWxpZ25tZW50
T2Zmc2V0KHJvb3RTdHlsZSgpLCByZXN1bHQuY29udGVudExvZ2ljYWxSaWdodCwgbV9saW5lTG9n
aWNhbFJlY3Qud2lkdGgoKSwgcmVzdWx0LmhhbmdpbmdUcmFpbGluZ0NvbnRlbnRXaWR0aCwgcmVz
dWx0LnJ1bnMsIGlzTGFzdExpbmUsIGlubGluZUJhc2VEaXJlY3Rpb24pIDogMC5mOworICAgIGF1
dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gIXJlc3VsdC5ydW5zLmlzRW1wdHkoKSA/IElubGluZUZv
cm1hdHRpbmdVdGlsczo6aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChyb290U3R5bGUoKSwgcmVz
dWx0LmNvbnRlbnRMb2dpY2FsUmlnaHQsIG1fbGluZUxvZ2ljYWxSZWN0LndpZHRoKCksIHJlc3Vs
dC5oYW5naW5nVHJhaWxpbmdDb250ZW50V2lkdGgsIHJlc3VsdC5ydW5zLCBpc0xhc3RMaW5lLCBp
bmxpbmVCYXNlRGlyZWN0aW9uKSA6IDAuZjsKICAgICBWZWN0b3I8aW50MzJfdD4gdmlzdWFsT3Jk
ZXJMaXN0OwogICAgIGlmIChyZXN1bHQuY29udGVudE5lZWRzQmlkaVJlb3JkZXJpbmcpCiAgICAg
ICAgIGNvbXB1dGVkVmlzdWFsT3JkZXIocmVzdWx0LnJ1bnMsIHZpc3VhbE9yZGVyTGlzdCk7CkBA
IC01MjUsOCArNTI1LDggQEAgTGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5k
RmxvYXRDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHMKIAogTGluZUJ1aWxkZXI6
OlVzZWRDb25zdHJhaW50cyBMaW5lQnVpbGRlcjo6aW5pdGlhbENvbnN0cmFpbnRzRm9yTGluZShj
b25zdCBJbmxpbmVSZWN0JiBpbml0aWFsTGluZUxvZ2ljYWxSZWN0LCBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrKSBjb25zdAogewotICAgIGF1dG8gaXNJ
bnRyaW5zaWNXaWR0aE1vZGUgPSBpc0luSW50cmluc2ljV2lkdGhNb2RlKCkgPyBJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpZZXMgOiBJbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObzsKLSAgICBhdXRvIHRleHRJbmRl
bnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkVGV4
dEluZGVudChpc0ludHJpbnNpY1dpZHRoTW9kZSwgcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJl
YWssIGluaXRpYWxMaW5lTG9naWNhbFJlY3Qud2lkdGgoKSk7CisgICAgYXV0byBpc0ludHJpbnNp
Y1dpZHRoTW9kZSA9IGlzSW5JbnRyaW5zaWNXaWR0aE1vZGUoKSA/IElubGluZUZvcm1hdHRpbmdV
dGlsczo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6OlllcyA6IElubGluZUZvcm1hdHRpbmdVdGlsczo6
SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vOworICAgIGF1dG8gdGV4dEluZGVudCA9IGZvcm1hdHRp
bmdDb250ZXh0KCkuZm9ybWF0dGluZ1V0aWxzKCkuY29tcHV0ZWRUZXh0SW5kZW50KGlzSW50cmlu
c2ljV2lkdGhNb2RlLCBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhaywgaW5pdGlhbExpbmVM
b2dpY2FsUmVjdC53aWR0aCgpKTsKIAogICAgIHJldHVybiBmbG9hdENvbnN0cmFpbmVkUmVjdChp
bml0aWFsTGluZUxvZ2ljYWxSZWN0LCB0ZXh0SW5kZW50KTsKIH0KQEAgLTYwNiw3ICs2MDYsNyBA
QCB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRl
JiBsaW5lQ2FuZGlkYXRlLCBzaXplX3QgYwogICAgIC8vIDEuIFNpbXBseSBhZGQgYW55IG92ZXJm
bG93IGNvbnRlbnQgZnJvbSB0aGUgcHJldmlvdXMgbGluZSB0byB0aGUgY2FuZGlkYXRlIGNvbnRl
bnQuIEl0J3MgYWx3YXlzIGEgdGV4dCBjb250ZW50LgogICAgIC8vIDIuIEZpbmQgdGhlIG5leHQg
c29mdCB3cmFwIHBvc2l0aW9uIG9yIGV4cGxpY2l0IGxpbmUgYnJlYWsuCiAgICAgLy8gMy4gQ29s
bGVjdCBmbG9hdHMgYmV0d2VlbiB0aGUgaW5saW5lIGNvbnRlbnQuCi0gICAgYXV0byBzb2Z0V3Jh
cE9wcG9ydHVuaXR5SW5kZXggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRy
eSgpLm5leHRXcmFwT3Bwb3J0dW5pdHkoY3VycmVudElubGluZUl0ZW1JbmRleCwgbGF5b3V0UmFu
Z2UsIG1faW5saW5lSXRlbXMpOworICAgIGF1dG8gc29mdFdyYXBPcHBvcnR1bml0eUluZGV4ID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRpbHMoKS5uZXh0V3JhcE9wcG9ydHVuaXR5
KGN1cnJlbnRJbmxpbmVJdGVtSW5kZXgsIGxheW91dFJhbmdlLCBtX2lubGluZUl0ZW1zKTsKICAg
ICAvLyBzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggPT0gbGF5b3V0UmFuZ2UuZW5kIG1lYW5zIHdl
IGRvbid0IGhhdmUgYW55IHdyYXAgb3Bwb3J0dW5pdHkgaW4gdGhpcyBjb250ZW50LgogICAgIEFT
U0VSVChzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggPD0gbGF5b3V0UmFuZ2UuZW5kSW5kZXgoKSk7
CiAKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50
Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzaXplX3QgYwogICAgIGlmIChp
c0xlYWRpbmdQYXJ0aWFDb250ZW50KSB7CiAgICAgICAgIEFTU0VSVCghbV9vdmVyZmxvd2luZ0xv
Z2ljYWxXaWR0aCk7CiAgICAgICAgIC8vIEhhbmRsZSBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBm
aXJzdCAob3ZlcmZsb3dpbmcgdGV4dCBmcm9tIHRoZSBwcmV2aW91cyBsaW5lKS4KLSAgICAgICAg
YXV0byBpdGVtV2lkdGggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgp
LmlubGluZUl0ZW1XaWR0aCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBjdXJyZW50TG9naWNh
bFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKKyAgICAgICAgYXV0byBpdGVtV2lkdGgg
PSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpLmlubGluZUl0ZW1XaWR0aCgq
bV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0LCBpc0ZpcnN0Rm9y
bWF0dGVkTGluZSgpKTsKICAgICAgICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmFwcGVu
ZElubGluZUl0ZW0oKm1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSwgbV9wYXJ0aWFsTGVhZGluZ1Rl
eHRJdGVtLT5zdHlsZSgpLCBpdGVtV2lkdGgpOwogICAgICAgICBjdXJyZW50TG9naWNhbFJpZ2h0
ICs9IGl0ZW1XaWR0aDsKICAgICAgICAgKytjdXJyZW50SW5saW5lSXRlbUluZGV4OwpAQCAtNjUy
LDcgKzY1Miw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExp
bmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHNpemVfdCBjCiAgICAgICAgIH0KICAgICAgICAg
aWYgKGlubGluZUl0ZW0uaXNUZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGlubGluZVRleHRJ
dGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pOwotICAgICAgICAgICAg
YXV0byBsb2dpY2FsV2lkdGggPSBtX292ZXJmbG93aW5nTG9naWNhbFdpZHRoID8gKnN0ZDo6ZXhj
aGFuZ2UobV9vdmVyZmxvd2luZ0xvZ2ljYWxXaWR0aCwgc3RkOjpudWxsb3B0KSA6IGZvcm1hdHRp
bmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCkuaW5saW5lSXRlbVdpZHRoKGlubGluZVRl
eHRJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKKyAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gbV9vdmVyZmxvd2luZ0xvZ2ljYWxXaWR0aCA/
ICpzdGQ6OmV4Y2hhbmdlKG1fb3ZlcmZsb3dpbmdMb2dpY2FsV2lkdGgsIHN0ZDo6bnVsbG9wdCkg
OiBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpLmlubGluZUl0ZW1XaWR0aChp
bmxpbmVUZXh0SXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCwgaXNGaXJzdEZvcm1hdHRlZExpbmUo
KSk7CiAgICAgICAgICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5l
SXRlbShpbmxpbmVUZXh0SXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAv
LyBXb3JkIHNwYWNpbmcgZG9lcyBub3QgbWFrZSB0aGUgcnVuIGxvbmdlciwgYnV0IGl0IHByb2R1
Y2VzIGFuIG9mZnNldCBpbnN0ZWFkLiBTZWUgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQgYXMgd2Vs
bC4KICAgICAgICAgICAgIGN1cnJlbnRMb2dpY2FsUmlnaHQgKz0gbG9naWNhbFdpZHRoICsgKGlu
bGluZVRleHRJdGVtLmlzV29yZFNlcGFyYXRvcigpID8gc3R5bGUuZm9udENhc2NhZGUoKS53b3Jk
U3BhY2luZygpIDogMC5mKTsKQEAgLTY2MSw3ICs2NjEsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpj
YW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzaXpl
X3QgYwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlubGlu
ZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkg
ewotICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZv
cm1hdHRpbmdHZW9tZXRyeSgpLmlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVtLCBjdXJyZW50TG9n
aWNhbFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKKyAgICAgICAgICAgIGF1dG8gbG9n
aWNhbFdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJ
dGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCwgaXNGaXJzdEZvcm1hdHRl
ZExpbmUoKSk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKICAgICAgICAg
ICAgIGlmIChzdHlsZS5ib3hEZWNvcmF0aW9uQnJlYWsoKSA9PSBCb3hEZWNvcmF0aW9uQnJlYWs6
OkNsb25lKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lSXRlbS5s
YXlvdXRCb3goKTsKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRh
dGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzaXplX3QgYwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlubGluZUl0ZW0u
aXNCb3goKSkgewotICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBmb3JtYXR0aW5nQ29u
dGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVtLCBj
dXJyZW50TG9naWNhbFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKKyAgICAgICAgICAg
IGF1dG8gbG9naWNhbFdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRpbHMo
KS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCwgaXNGaXJz
dEZvcm1hdHRlZExpbmUoKSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2hpbGUgdGhlIGxpbmUg
YnJlYWtpbmcgcmVsYXRlZCBwcm9wZXJ0aWVzIGZvciBhdG9taWMgbGV2ZWwgYm94ZXMgZG8gbm90
IGRlcGVuZCBvbiB0aGUgbGluZSBpbmRleCAoZmlyc3QgbGluZSBzdHlsZSkgaXQnZCBiZSBncmVh
dCB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IHN0eWxlIHRvIHBhc3MgaW4uCiAgICAgICAgICAg
ICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5lSXRlbShpbmxpbmVJdGVt
LCBpbmxpbmVJdGVtLmxheW91dEJveCgpLnBhcmVudCgpLnN0eWxlKCksIGxvZ2ljYWxXaWR0aCk7
CiAgICAgICAgICAgICBjdXJyZW50TG9naWNhbFJpZ2h0ICs9IGxvZ2ljYWxXaWR0aDsKQEAgLTc0
NSw3ICs3NDUsNyBAQCBMaW5lQnVpbGRlcjo6VXNlZENvbnN0cmFpbnRzIExpbmVCdWlsZGVyOjpm
bG9hdENvbnN0cmFpbmVkUmVjdChjb25zdCBJbmxpbmVSZWN0JgogICAgICAgICBpZiAoaXNJbklu
dHJpbnNpY1dpZHRoTW9kZSgpIHx8IHBsYWNlZEZsb2F0cygpLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybiB7IGxvZ2ljYWxSZWN0LCBtYXJnaW5TdGFydCwgeyB9IH07CiAKLSAgICAgICAg
YXV0byBjb25zdHJhaW50cyA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5
KCkuZmxvYXRDb25zdHJhaW50c0ZvckxpbmUobG9naWNhbFJlY3QudG9wKCksIGxvZ2ljYWxSZWN0
LmhlaWdodCgpLCBGbG9hdGluZ0NvbnRleHQgeyBmb3JtYXR0aW5nQ29udGV4dCgpLCBwbGFjZWRG
bG9hdHMoKSB9KTsKKyAgICAgICAgYXV0byBjb25zdHJhaW50cyA9IGZvcm1hdHRpbmdDb250ZXh0
KCkuZm9ybWF0dGluZ1V0aWxzKCkuZmxvYXRDb25zdHJhaW50c0ZvckxpbmUobG9naWNhbFJlY3Qu
dG9wKCksIGxvZ2ljYWxSZWN0LmhlaWdodCgpLCBGbG9hdGluZ0NvbnRleHQgeyBmb3JtYXR0aW5n
Q29udGV4dCgpLCBwbGFjZWRGbG9hdHMoKSB9KTsKICAgICAgICAgaWYgKCFjb25zdHJhaW50cy5s
ZWZ0ICYmICFjb25zdHJhaW50cy5yaWdodCkKICAgICAgICAgICAgIHJldHVybiB7IGxvZ2ljYWxS
ZWN0LCBtYXJnaW5TdGFydCwgeyB9IH07CiAKQEAgLTc3OCw3ICs3NzgsNyBAQCBMaW5lQnVpbGRl
cjo6VXNlZENvbnN0cmFpbnRzIExpbmVCdWlsZGVyOjphZGp1c3RlZExpbmVSZWN0V2l0aENhbmRp
ZGF0ZUlubGluZUNvbgogICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBsaW5lQ2FuZGlkYXRlLmlu
bGluZUNvbnRlbnQ7CiAgICAgaWYgKGlzSW5JbnRyaW5zaWNXaWR0aE1vZGUoKSkKICAgICAgICAg
cmV0dXJuIHsgbV9saW5lTG9naWNhbFJlY3QgfTsKLSAgICAvLyBGSVhNRTogVXNlIElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveCBpbnN0ZWFkLgor
ICAgIC8vIEZJWE1FOiBVc2UgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjppbmxpbmVMZXZlbEJveEFm
ZmVjdHNMaW5lQm94IGluc3RlYWQuCiAgICAgYXV0byBjYW5kaWRhdGVDb250ZW50SGVpZ2h0ID0g
SW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgYXV0byBsaW5lQm94Q29udGFpbiA9IGZvcm1hdHRp
bmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkubGluZUJveENvbnRhaW4oKTsKICAgICBmb3IgKGF1
dG8mIHJ1biA6IGlubGluZUNvbnRlbnQuY29udGludW91c0NvbnRlbnQoKS5ydW5zKCkpIHsKQEAg
LTExNTMsNyArMTE1Myw3IEBAIHNpemVfdCBMaW5lQnVpbGRlcjo6cmVidWlsZExpbmVXaXRoSW5s
aW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhCiAgICAgLy8gTGV0J3Mg
anVzdCByZXVzZSB3aGF0IHRoZSBsaW5lIGhhcyBhdCB0aGlzIHBvaW50LgogICAgIG1fbGluZS5p
bml0aWFsaXplKG1fbGluZVNwYW5uaW5nSW5saW5lQm94ZXMsIGlzRmlyc3RGb3JtYXR0ZWRMaW5l
KCkpOwogICAgIGlmIChtX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0pIHsKLSAgICAgICAgbV9saW5l
LmFwcGVuZCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBtX3BhcnRpYWxMZWFkaW5nVGV4dEl0
ZW0tPnN0eWxlKCksIGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCkuaW5s
aW5lSXRlbVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIHsgfSwgaXNGaXJzdEZvcm1h
dHRlZExpbmUoKSkpOworICAgICAgICBtX2xpbmUuYXBwZW5kKCptX3BhcnRpYWxMZWFkaW5nVGV4
dEl0ZW0sIG1fcGFydGlhbExlYWRpbmdUZXh0SXRlbS0+c3R5bGUoKSwgZm9ybWF0dGluZ0NvbnRl
eHQoKS5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lkdGgoKm1fcGFydGlhbExlYWRpbmdU
ZXh0SXRlbSwgeyB9LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKSk7CiAgICAgICAgICsrbnVtYmVy
T2ZJbmxpbmVJdGVtc09uTGluZTsKICAgICAgICAgaWYgKCZtX3BhcnRpYWxMZWFkaW5nVGV4dEl0
ZW0udmFsdWUoKSA9PSAmbGFzdElubGluZUl0ZW1Ub0FkZCkKICAgICAgICAgICAgIHJldHVybiAx
OwpAQCAtMTE2NSw3ICsxMTY1LDcgQEAgc2l6ZV90IExpbmVCdWlsZGVyOjpyZWJ1aWxkTGluZVdp
dGhJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmEKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGF1dG8mIHN0eWxlID0gaXNGaXJzdEZv
cm1hdHRlZExpbmUoKSA/IGlubGluZUl0ZW0uZmlyc3RMaW5lU3R5bGUoKSA6IGlubGluZUl0ZW0u
c3R5bGUoKTsKLSAgICAgICAgbV9saW5lLmFwcGVuZChpbmxpbmVJdGVtLCBzdHlsZSwgZm9ybWF0
dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5pbmxpbmVJdGVtV2lkdGgoaW5saW5l
SXRlbSwgbV9saW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSwgaXNGaXJzdEZvcm1hdHRlZExpbmUo
KSkpOworICAgICAgICBtX2xpbmUuYXBwZW5kKGlubGluZUl0ZW0sIHN0eWxlLCBmb3JtYXR0aW5n
Q29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpLmlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVtLCBt
X2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpLCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKSk7CiAg
ICAgICAgICsrbnVtYmVyT2ZJbmxpbmVJdGVtc09uTGluZTsKICAgICAgICAgaWYgKCZpbmxpbmVJ
dGVtID09ICZsYXN0SW5saW5lSXRlbVRvQWRkKQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbnRy
aW5zaWNXaWR0aEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcAppbmRleCBjMDljMGE3MTJj
YzguLmJhNjMzMzE3ODVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbnRyaW5zaWNXaWR0
aEhhbmRsZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgSW5saW5lTGF5b3V0VW5pdCBJbnRyaW5z
aWNXaWR0aEhhbmRsZXI6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KEludHIK
ICAgICAgICAgfTsKICAgICAgICAgbWF4aW11bUNvbnRlbnRXaWR0aCA9IHN0ZDo6bWF4KG1heGlt
dW1Db250ZW50V2lkdGgsIGxpbmVMYXlvdXRSZXN1bHQubGluZUdlb21ldHJ5LmxvZ2ljYWxUb3BM
ZWZ0LngoKSArIGxpbmVMYXlvdXRSZXN1bHQuY29udGVudEdlb21ldHJ5LmxvZ2ljYWxXaWR0aCAr
IGZsb2F0Q29udGVudFdpZHRoKCkpOwogCi0gICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExp
bmUobGluZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kLCBwcmV2aW91c0xpbmVFbmQs
IGxheW91dFJhbmdlLmVuZCk7CisgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gSW5saW5lRm9y
bWF0dGluZ1V0aWxzOjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUobGluZUxh
eW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kLCBwcmV2aW91c0xpbmVFbmQsIGxheW91dFJh
bmdlLmVuZCk7CiAgICAgICAgIGlmIChsYXlvdXRSYW5nZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGF1dG8gY2FjaGVMaW5lQnJlYWtpbmdSZXN1bHRGb3JTdWJzZXF1ZW50TGF5b3V0SWZBcHBs
aWNhYmxlID0gWyZdIHsKICAgICAgICAgICAgICAgICBtX21heGltdW1JbnRyaW5zaWNXaWR0aFJl
c3VsdEZvclNpbmdsZUxpbmUgPSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL1RleHRP
bmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwCmluZGV4IDdlYmU5N2E4OTllYS4uZmVmNTViMDk1YTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVy
LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIExpbmVMYXlvdXRSZXN1bHQgVGV4dE9ubHlTaW1wbGVM
aW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmCiAKICAgICBh
dXRvIGlzTGFzdExpbmUgPSBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQocGxhY2VkQ29udGVu
dEVuZCwgbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UuZW5kSW5kZXgoKSk7CiAgICAgYXV0byYg
cm9vdFN0eWxlID0gaXNGaXJzdEZvcm1hdHRlZExpbmUoKSA/IHJvb3QoKS5maXJzdExpbmVTdHls
ZSgpIDogcm9vdCgpLnN0eWxlKCk7Ci0gICAgYXV0byBjb250ZW50TG9naWNhbExlZnQgPSBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQocm9vdFN0eWxl
LCByZXN1bHQuY29udGVudExvZ2ljYWxSaWdodCwgbV9saW5lTG9naWNhbFJlY3Qud2lkdGgoKSwg
cmVzdWx0LmhhbmdpbmdUcmFpbGluZ0NvbnRlbnRXaWR0aCwgcmVzdWx0LnJ1bnMsIGlzTGFzdExp
bmUpOworICAgIGF1dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gSW5saW5lRm9ybWF0dGluZ1V0aWxz
Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJvb3RTdHlsZSwgcmVzdWx0LmNvbnRlbnRMb2dp
Y2FsUmlnaHQsIG1fbGluZUxvZ2ljYWxSZWN0LndpZHRoKCksIHJlc3VsdC5oYW5naW5nVHJhaWxp
bmdDb250ZW50V2lkdGgsIHJlc3VsdC5ydW5zLCBpc0xhc3RMaW5lKTsKIAogICAgIHJldHVybiB7
IHsgbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQsIHBsYWNlZENvbnRlbnRFbmQgfQog
ICAgICAgICAsIFdURk1vdmUocmVzdWx0LnJ1bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlD
b250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKaW5kZXgg
MDAxODAzMjQ3MzE5Li5jMDg2ZWZkMGVhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCIKIAog
I2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5LmgiCisjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiSW5s
aW5lVGV4dEJveFN0eWxlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKICNpbmNs
dWRlICJMYXlvdXRJbml0aWFsQ29udGFpbmluZ0Jsb2NrLmgiCkBAIC0xMTM5LDcgKzExMzksNyBA
QCBJbmxpbmVSZWN0IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6ZmxpcExvZ2ljYWxSZWN0
VG9WaXN1YWxGb3JXcml0aW5nTW9kZVdpdAogICAgICAgICByZXR1cm4geyBsb2dpY2FsUmVjdC5s
ZWZ0KCksIGJvdHRvbU9mZnNldCwgbG9naWNhbFJlY3QuaGVpZ2h0KCksIGxvZ2ljYWxSZWN0Lndp
ZHRoKCkgfTsKICAgICB9CiAgICAgY2FzZSBCbG9ja0Zsb3dEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0
OgotICAgICAgICAvLyBTZWUgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5IGZvciBtb3JlIGluZm8u
CisgICAgICAgIC8vIFNlZSBJbmxpbmVGb3JtYXR0aW5nVXRpbHMgZm9yIG1vcmUgaW5mby4KICAg
ICAgICAgcmV0dXJuIHsgbG9naWNhbFJlY3QubGVmdCgpLCBsb2dpY2FsUmVjdC50b3AoKSwgbG9n
aWNhbFJlY3QuaGVpZ2h0KCksIGxvZ2ljYWxSZWN0LndpZHRoKCkgfTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTExNTksNyArMTE1OSw3IEBAIElubGlu
ZVJlY3QgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpmbGlwUm9vdElubGluZUJveFJlY3RU
b1Zpc3VhbEZvcldyaXRpbmdNCiAgICAgfQogICAgIGNhc2UgQmxvY2tGbG93RGlyZWN0aW9uOjpM
ZWZ0VG9SaWdodDoKICAgICBjYXNlIEJsb2NrRmxvd0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ6IHsK
LSAgICAgICAgLy8gU2VlIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSBmb3IgbW9yZSBpbmZvLgor
ICAgICAgICAvLyBTZWUgSW5saW5lRm9ybWF0dGluZ1V0aWxzIGZvciBtb3JlIGluZm8uCiAgICAg
ICAgIGF1dG8gdmlzdWFsUmVjdCA9IElubGluZVJlY3QgeyByb290SW5saW5lQm94TG9naWNhbFJl
Y3QubGVmdCgpLCByb290SW5saW5lQm94TG9naWNhbFJlY3QudG9wKCksIHJvb3RJbmxpbmVCb3hM
b2dpY2FsUmVjdC5oZWlnaHQoKSwgcm9vdElubGluZUJveExvZ2ljYWxSZWN0LndpZHRoKCkgfTsK
ICAgICAgICAgdmlzdWFsUmVjdC5tb3ZlQnkoeyBtX2Rpc3BsYXlMaW5lLmxlZnQoKSwgbV9kaXNw
bGF5TGluZS50b3AoKSB9KTsKICAgICAgICAgcmV0dXJuIHZpc3VhbFJlY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5
L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5j
cHAKaW5kZXggZDVkZjRjM2I4ZWI0Li5lNTJjZDc5MGY3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgc3RhdGljIElubGluZVJlY3QgZmxpcExvZ2ljYWxMaW5lUmVjdFRvVmlz
dWFsRm9yV3JpdGluZ01vZGUoY29uc3QgSW5saW5lUmVjdCYgbGkKICAgICAgICAgcmV0dXJuIGxp
bmVMb2dpY2FsUmVjdDsKICAgICBjYXNlIEJsb2NrRmxvd0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQ6
CiAgICAgY2FzZSBCbG9ja0Zsb3dEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAvLyBT
ZWUgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5IGZvciBtb3JlIGluZm8uCisgICAgICAgIC8vIFNl
ZSBJbmxpbmVGb3JtYXR0aW5nVXRpbHMgZm9yIG1vcmUgaW5mby4KICAgICAgICAgcmV0dXJuIHsg
bGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwgbGluZUxvZ2ljYWxSZWN0LnRvcCgpLCBsaW5lTG9naWNh
bFJlY3QuaGVpZ2h0KCksIGxpbmVMb2dpY2FsUmVjdC53aWR0aCgpIH07CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNTQzZmE3NWViNmFkLi4xN2Nj
Y2I0ZGVkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0
aW5nQ29udGV4dC5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCB2b2lkIFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6cGxhY2VSdWJ5Q29udGVudChXVEY6OlJhbmdlPHNpemVfdD4gY2FuZGlkYXRlUmFuZ2Us
CiB7CiAgICAgQVNTRVJUKGNhbmRpZGF0ZVJhbmdlLmVuZCgpIDw9IGlubGluZUl0ZW1zLnNpemUo
KSk7CiAgICAgQVNTRVJUKGlubGluZUl0ZW1zW2NhbmRpZGF0ZVJhbmdlLmJlZ2luKCldLmxheW91
dEJveCgpLmlzUnVieSgpIHx8IGlubGluZUl0ZW1zW2NhbmRpZGF0ZVJhbmdlLmJlZ2luKCldLmxh
eW91dEJveCgpLmlzUnVieUJhc2UoKSk7Ci0gICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0g
cGFyZW50Rm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKKyAgICBhdXRv
JiBmb3JtYXR0aW5nVXRpbHMgPSBwYXJlbnRGb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdV
dGlscygpOwogCiAgICAgYXV0byBpbmRleCA9IGNhbmRpZGF0ZVJhbmdlLmJlZ2luKCk7CiAgICAg
d2hpbGUgKGluZGV4IDwgY2FuZGlkYXRlUmFuZ2UuZW5kKCkpIHsKICAgICAgICAgYXV0byBhcHBl
bmRJbmxpbmVMZXZlbEl0ZW0gPSBbJl0oYXV0byYgaW5saW5lQm94SXRlbSkgewogICAgICAgICAg
ICAgQVNTRVJUKGlubGluZUJveEl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkgfHwgaW5saW5lQm94
SXRlbS5sYXlvdXRCb3goKS5pc1J1YnlCYXNlKCkgfHwgaW5saW5lQm94SXRlbS5sYXlvdXRCb3go
KS5pc1J1YnlBbm5vdGF0aW9uQm94KCkpOwogCi0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0
aCA9IGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lQm94SXRlbSwgbGlu
ZS5jb250ZW50TG9naWNhbFJpZ2h0KCksIHsgfSk7CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxX
aWR0aCA9IGZvcm1hdHRpbmdVdGlscy5pbmxpbmVJdGVtV2lkdGgoaW5saW5lQm94SXRlbSwgbGlu
ZS5jb250ZW50TG9naWNhbFJpZ2h0KCksIHsgfSk7CiAgICAgICAgICAgICBsaW5lLmFwcGVuZChp
bmxpbmVCb3hJdGVtLCBpbmxpbmVCb3hJdGVtLnN0eWxlKCksIGxvZ2ljYWxXaWR0aCk7CiAgICAg
ICAgICAgICArK2luZGV4OwogICAgICAgICB9OwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgUnVi
eUZvcm1hdHRpbmdDb250ZXh0OjpwbGFjZVJ1YnlDb250ZW50KFdURjo6UmFuZ2U8c2l6ZV90PiBj
YW5kaWRhdGVSYW5nZSwKIHNpemVfdCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFJ1YnlC
YXNlSW5saW5lQXhpcyhMaW5lJiBsaW5lLCBjb25zdCBCb3gmIHJ1YnlCYXNlTGF5b3V0Qm94LCBz
aXplX3QgcnVieUJhc2VDb250ZW50U3RhcnRJbmRleCwgY29uc3QgSW5saW5lSXRlbXMmIGlubGlu
ZUl0ZW1zKQogewogICAgIC8vIEFwcGVuZCBydWJ5IGJhc2UgY29udGVudCAoaW5jbHVkaW5nIHN0
YXJ0L2VuZCBpbmxpbmUgYm94KSB0byB0aGUgbGluZSBhbmQgYXBwbHkgInJ1YnktYWxpZ246IHNw
YWNlLWFyb3VuZCIgb24gdGhlIHJ1Ynkgc3VicmFuZ2UuCi0gICAgYXV0byYgZm9ybWF0dGluZ0dl
b21ldHJ5ID0gcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKTsK
KyAgICBhdXRvJiBmb3JtYXR0aW5nVXRpbHMgPSBwYXJlbnRGb3JtYXR0aW5nQ29udGV4dCgpLmZv
cm1hdHRpbmdVdGlscygpOwogICAgIGF1dG8gbGluZUxvZ2ljYWxSaWdodCA9IGxpbmUuY29udGVu
dExvZ2ljYWxSaWdodCgpOwogICAgIGF1dG8gYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGggPSBJbmxp
bmVMYXlvdXRVbml0IHsgfTsKICAgICBhdXRvIGJhc2VSdW5TdGFydCA9IGxpbmUucnVucygpLnNp
emUoKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBzaXplX3QgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojps
YXlvdXRSdWJ5QmFzZUlubGluZUF4aXMoTGluZSYgbGluZSwgY29uc3QgQm94JiBydQogICAgICAg
ICAgICAgICAgIGFwcGx5UnVieUFsaWduKGxpbmUsIHsgYmFzZVJ1blN0YXJ0LCBiYXNlUnVuU3Rh
cnQgKyBiYXNlUnVuQ291bnQgfSwgcnVieUJhc2VMYXlvdXRCb3gsIGJhc2VDb250ZW50TG9naWNh
bFdpZHRoKTsKICAgICAgICAgICAgIHJldHVybiBpbmRleCAtIHJ1YnlCYXNlQ29udGVudFN0YXJ0
SW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBmb3JtYXR0aW5n
R2VvbWV0cnkuaW5saW5lSXRlbVdpZHRoKHJ1YnlCYXNlSW5saW5lSXRlbSwgbGluZUxvZ2ljYWxS
aWdodCArIGJhc2VDb250ZW50TG9naWNhbFdpZHRoLCB7IH0pOworICAgICAgICBhdXRvIGxvZ2lj
YWxXaWR0aCA9IGZvcm1hdHRpbmdVdGlscy5pbmxpbmVJdGVtV2lkdGgocnVieUJhc2VJbmxpbmVJ
dGVtLCBsaW5lTG9naWNhbFJpZ2h0ICsgYmFzZUNvbnRlbnRMb2dpY2FsV2lkdGgsIHsgfSk7CiAg
ICAgICAgIGxpbmUuYXBwZW5kKHJ1YnlCYXNlSW5saW5lSXRlbSwgcnVieUJhc2VJbmxpbmVJdGVt
LnN0eWxlKCksIGxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGJhc2VDb250ZW50TG9naWNhbFdpZHRo
ICs9IGxvZ2ljYWxXaWR0aDsKICAgICB9CkBAIC0zNTUsNyArMzU1LDcgQEAgSW5saW5lTGF5b3V0
VW5pdCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmxvZ2ljYVdpZHRoRm9yUnVieVJhbmdlKFdURjo6
UmFuZ2U8c2l6ZV8KICAgICBBU1NFUlQoY2FuZGlkYXRlUmFuZ2UuZW5kKCkgPD0gaW5saW5lSXRl
bXMuc2l6ZSgpKTsKICAgICBBU1NFUlQoaW5saW5lSXRlbXNbY2FuZGlkYXRlUmFuZ2UuYmVnaW4o
KV0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkgfHwgaW5saW5lSXRlbXNbY2FuZGlkYXRlUmFuZ2UuYmVn
aW4oKV0ubGF5b3V0Qm94KCkuaXNSdWJ5QmFzZSgpKTsKIAotICAgIGF1dG8mIGZvcm1hdHRpbmdH
ZW9tZXRyeSA9IHBhcmVudEZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCk7
CisgICAgYXV0byYgZm9ybWF0dGluZ1V0aWxzID0gcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQoKS5m
b3JtYXR0aW5nVXRpbHMoKTsKICAgICBhdXRvIGNhbmRpZGF0ZUNvbnRlbnRMb2dpY2FsV2lkdGgg
PSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICBhdXRvIGluZGV4ID0gY2FuZGlkYXRlUmFuZ2Uu
YmVnaW4oKTsKIApAQCAtMzY1LDcgKzM2NSw3IEBAIElubGluZUxheW91dFVuaXQgUnVieUZvcm1h
dHRpbmdDb250ZXh0Ojpsb2dpY2FXaWR0aEZvclJ1YnlSYW5nZShXVEY6OlJhbmdlPHNpemVfCiAK
ICAgICAgICAgaWYgKHJ1YnlMYXlvdXRCb3guaXNSdWJ5KCkpIHsKICAgICAgICAgICAgIEFTU0VS
VChydWJ5SXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgcnVieUl0ZW0uaXNJbmxpbmVCb3hFbmQo
KSk7Ci0gICAgICAgICAgICBjYW5kaWRhdGVDb250ZW50TG9naWNhbFdpZHRoICs9IGZvcm1hdHRp
bmdHZW9tZXRyeS5pbmxpbmVJdGVtV2lkdGgocnVieUl0ZW0sIGxpbmVDb250ZW50TG9naWNhbFJp
Z2h0ICsgY2FuZGlkYXRlQ29udGVudExvZ2ljYWxXaWR0aCwgeyB9KTsKKyAgICAgICAgICAgIGNh
bmRpZGF0ZUNvbnRlbnRMb2dpY2FsV2lkdGggKz0gZm9ybWF0dGluZ1V0aWxzLmlubGluZUl0ZW1X
aWR0aChydWJ5SXRlbSwgbGluZUNvbnRlbnRMb2dpY2FsUmlnaHQgKyBjYW5kaWRhdGVDb250ZW50
TG9naWNhbFdpZHRoLCB7IH0pOwogICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CkBAIC0zODQsNyArMzg0LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBS
dWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OmxvZ2ljYVdpZHRoRm9yUnVieVJhbmdlKFdURjo6UmFuZ2U8
c2l6ZV8KICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0aCA9IElubGluZUxheW91dFVu
aXQgeyB9OwogICAgICAgICAgICAgICAgIGZvciAoOyBpbmRleCA8IGNhbmRpZGF0ZVJhbmdlLmVu
ZCgpOyArK2luZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGJhc2VJbmxpbmVJdGVt
ID0gaW5saW5lSXRlbXNbaW5kZXhdOwotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGgg
Kz0gZm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUl0ZW1XaWR0aChiYXNlSW5saW5lSXRlbSwgbGlu
ZUNvbnRlbnRMb2dpY2FsUmlnaHQgKyBsb2dpY2FsV2lkdGgsIHsgfSk7CisgICAgICAgICAgICAg
ICAgICAgIGxvZ2ljYWxXaWR0aCArPSBmb3JtYXR0aW5nVXRpbHMuaW5saW5lSXRlbVdpZHRoKGJh
c2VJbmxpbmVJdGVtLCBsaW5lQ29udGVudExvZ2ljYWxSaWdodCArIGxvZ2ljYWxXaWR0aCwgeyB9
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCZiYXNlSW5saW5lSXRlbS5sYXlvdXRCb3goKSA9
PSAmcnVieUxheW91dEJveCAmJiBiYXNlSW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmQgb2YgYmFzZS4KICAgICAgICAgICAgICAgICAg
ICAgICAgICsraW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IDYyYmY5N2NlMzExMy4uYWZhYjA0YWFmNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29u
dGVudCYpIG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgdXNlZENvbnRlbnRIZWlnaHQoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIGNvbnN0IFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5JiBmb3JtYXR0
aW5nR2VvbWV0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RhYmxlRm9ybWF0dGluZ0dlb21l
dHJ5OyB9CisgICAgY29uc3QgVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9t
ZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFibGVGb3JtYXR0aW5nR2VvbWV0cnk7IH0KICAgICBj
b25zdCBUYWJsZUZvcm1hdHRpbmdRdWlya3MmIGZvcm1hdHRpbmdRdWlya3MoKSBjb25zdCB7IHJl
dHVybiBtX3RhYmxlRm9ybWF0dGluZ1F1aXJrczsgfQogICAgIGNvbnN0IFRhYmxlRm9ybWF0dGlu
Z1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlRm9ybWF0dGlu
Z1N0YXRlOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468061</attachid>
            <date>2023-10-04 08:27:51 -0700</date>
            <delta_ts>2023-10-04 08:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-262559-20231004082750.patch</filename>
            <type>text/plain</type>
            <size>102973</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAwZjJlZTQxMDdmYTBiNDg4MGI4ZjBlMGQwOGY4MzQ0NTU0NjU2OTc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgNCBPY3QgMjAyMyAwODoyMzoyNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtJRkNdW0Ns
ZWFudXBdIERldGFjaCAoYW5kIHJlbmFtZSkgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5CiBmcm9t
IGJhc2UgY2xhc3MgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjU1
OQoKUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCgpBcyBpdCB0dXJucyBvdXQgdGhlcmUncyBu
b3QgbXVjaCBnZW9tZXRyeSBjb21wdXRhdGlvbiB0byBzaGFyZSBiZXR3ZWVuIGZvcm1hdHRpbmcg
Y29udGV4dHMuCgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0OgoqIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaDoKKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5Ojppc0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5Ojppc0lubGluZUZv
cm1hdHRpbmdHZW9tZXRyeSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tX
aXRoRml4ZWRIZWlnaHQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oOgooV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhG
aXhlZEhlaWdodCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CihXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdHZW9tZXRyeSBjb25zdCk6CigpOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdo
dCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2Vy
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Y29tcHV0ZUJyZWFrT3Bwb3J0dW5pdGllcyk6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6aW5pdGlhbGl6ZSk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6YmFsYW5jZVJhbmdlV2l0aExpbmVSZXF1
aXJlbWVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6YmFsYW5j
ZVJhbmdlV2l0aE5vTGluZVJlcXVpcmVtZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsaW5lTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OnVwZGF0ZUlubGluZUxheW91dFN0YXRlV2l0aExpbmVMYXlvdXRSZXN1bHQpOgoo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNv
bnRlbnRGb3JJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZUZyb21DYWNoZWRDb250ZW50KToK
KiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Zm9ybWF0dGluZ1V0aWxzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwOiBSZW1v
dmVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOiBSZW1vdmVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmg6CiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRp
Y2FsQWxpZ25lci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6
OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXIpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQgY29uc3QpOgooV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlUm9vdElubGluZUJveFZlcnRp
Y2FsUG9zaXRpb24gY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGln
bmVyOjpsYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGlj
YWxBbGlnbmVyLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmZv
cm1hdHRpbmdVdGlscyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmZvcm1hdHRpbmdHZW9tZXRyeSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudCk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppbml0aWFsQ29uc3RyYWludHNGb3JMaW5lIGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JM
aW5lKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmZsb2F0Q29uc3RyYWluZWRSZWN0
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFkanVzdGVkTGluZVJlY3RX
aXRoQ2FuZGlkYXRlSW5saW5lQ29udGVudCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
dWlsZGVyOjpyZWJ1aWxkTGluZVdpdGhJbmxpbmVDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpJbnRyaW5zaWNXaWR0aEhhbmRsZXI6OmNvbXB1dGVkSW50cmlu
c2ljV2lkdGhGb3JDb25zdHJhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6
OkxheW91dDo6VGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudCk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmZsaXBMb2dpY2FsUmVjdFRvVmlzdWFsRm9yV3JpdGlu
Z01vZGVXaXRoaW5MaW5lIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyOjpmbGlwUm9vdElubGluZUJveFJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2Rl
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OmZsaXBMb2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5n
Q29udGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6cGxh
Y2VSdWJ5Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0UnVieUJhc2VJbmxpbmVBeGlzKToKKFdlYkNvcmU6OkxheW91dDo6UnVieUZvcm1hdHRp
bmdDb250ZXh0Ojpsb2dpY2FXaWR0aEZvclJ1YnlSYW5nZSBjb25zdCk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0
Lmg6Ci0tLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwg
ICAyICstCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAg
MTIgKy0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaCAgICB8ICAg
MiAtCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5oICAgfCAgIDEg
LQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcCAgIHwgIDI5IC0K
IC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oICAgICB8ICAgMiArLQog
Li4uL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCAgICAgICAgICAgIHwgICAyICstCiAu
Li4vYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcCAgICAgICAgICAgfCAgMjkgKwogLi4u
L2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oICAgICAgICAgICAgIHwgICAxICsKIC4uLi9m
bGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5oICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2lu
bGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuY3BwICAgICAgICAgIHwgIDE4ICstCiAuLi4vaW5s
aW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5oICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAgICB8ICAxNCArLQogLi4uL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oICAgICAgICAgIHwgICA4ICstCiAuLi4vaW5saW5l
L0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgICAgICAgfCA1MzcgLS0tLS0tLS0tLS0tLS0t
LS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oICAgICAgICAgfCAgODAg
LS0tCiAuLi4vaW5saW5lL0lubGluZUxldmVsQm94LmggICAgICAgICAgICAgICAgICAgfCAgIDIg
Ky0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAgICB8ICAyMCAr
LQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmggICAgIHwgICA2ICst
CiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAgICAgICAgfCAgMjYgKy0K
IC4uLi9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcCAgICAgICAgICB8ICAgMiArLQog
Li4uL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcCAgICAgIHwgICAyICstCiAu
Li4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICAgfCAgIDYgKy0KIC4u
Li9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgICAgICB8ICAgMiArLQogLi4u
L2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAgICAgIHwgIDE0ICstCiAuLi4v
dGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oICAgICAgICAgICAgfCAgIDIgKy0KIDI2IGZp
bGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCA3MjEgZGVsZXRpb25zKC0pCiBkZWxldGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdHZW9tZXRyeS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwZDgyYWQ5MjE1OTIuLjNiOWQ5MDk1MjNi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE3MzIsNyArMTczMiw3IEBAIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0Fic3RyYWN0TGluZUJ1aWxkZXIuY3BwCiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuY3BwCiBsYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAotbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAor
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNw
cAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbS5jcHAKIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAKIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjJkYzRiMjlm
NTMzLi4yZjgxMWFhZjNkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MjEsNyArMTcyMSw3IEBACiAJCTQ2RkVGQkM4MjZE
RDY3QTIwMEIwQzQ4OCAvKiBTdHJ1Y3R1cmVkU2VyaWFsaXplT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGRUZCQzYyNkRENjc4MjAwQjBD
NDg4IC8qIFN0cnVjdHVyZWRTZXJpYWxpemVPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDc1Qzg5QTQyNjUwQUMzQzAwRjNCNDU2IC8q
IEZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDc1Qzg5QTMyNjUwQUMzQjAwRjNCNDU2IC8qIEZvcm1hdHRpbmdHZW9tZXRy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ3
ODYzNTY1MjY1MDdBMzgwMEM1RTJFMCAvKiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDc4NjM1NjQyNjUwN0Ez
NzAwQzVFMkUwIC8qIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDdDNEQ1N0QyNjUwOEJDQjAwQzdBQjFG
IC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDdDNEQ1N0MyNjUwOEJDQTAwQzdBQjFGIC8qIElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ3QzRENTdEMjY1MDhCQ0IwMEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5n
VXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3
QzRENTdDMjY1MDhCQ0EwMEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nVXRpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0N0Y5NDdEQjI2NTAy
RjJGMDA4Nzk2OEMgLyogQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0Y5NDdEQTI2NTAyRjJGMDA4Nzk2OEMgLyog
QmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDdGQTk3MDAyNjUwOTgyQjAwODQxNDE2IC8qIFRhYmxlRm9ybWF0
dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0N0ZBOTZGRjI2NTA5ODJBMDA4NDE0MTYgLyogVGFibGVGb3JtYXR0aW5nR2VvbWV0cnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0ODIy
OTcwRTI5QzhFQkMwMDAzM0ExMjYgLyogUmVnaW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDgyMjk3MEMyOUM4RUJDMDAwMzNBMTI2IC8q
IFJlZ2lvbkNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTA2NzgsNyArMTA2NzgsNyBAQAogCQk0NkZFRkJDNzI2REQ2NzgzMDBCMEM0
ODggLyogU3RydWN0dXJlZFNlcmlhbGl6ZU9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0cnVjdHVyZWRTZXJp
YWxpemVPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDc1Qzg5QTMy
NjUwQUMzQjAwRjNCNDU2IC8qIEZvcm1hdHRpbmdHZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGb3JtYXR0aW5nR2VvbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDc4NjM1NjQyNjUwN0EzNzAwQzVFMkUwIC8qIEJsb2NrRm9ybWF0dGluZ0dl
b21ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRm9ybWF0dGlu
Z0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ3QzRENTdDMjY1MDhC
Q0EwMEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ3QzRENTdDMjY1MDhCQ0EwMEM3QUIxRiAvKiBJbmxpbmVGb3Jt
YXR0aW5nVXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lRm9y
bWF0dGluZ1V0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ3Rjk0N0RBMjY1
MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ3RkE5NkZGMjY1MDk4MkEwMDg0MTQxNiAvKiBUYWJsZUZvcm1hdHRp
bmdHZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZUZvcm1h
dHRpbmdHZW9tZXRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0ODIyOTcwQjI5
QzhFQkMwMDAzM0ExMjYgLyogUmVnaW9uQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWdpb25Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEyMzc4LDcgKzEyMzc4LDcgQEAKIAkJNkYyNkJCNjkyMzM0M0U1QTAwMkYyQkVB
IC8qIExheW91dENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0Q29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMjZCQjZCMjMzNDNFNUIwMDJGMkJF
QSAvKiBMYXlvdXRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dENvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYyNkVCNDYyMzQwMDRBNTAwNjkwNkUyIC8qIElu
bGluZUxpbmVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGlu
ZUxpbmVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZGMzVFRkFGMjE4
N0NCRDUwMDQ0RTBGNCAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkYzNUVGQUYyMTg3Q0JENTAwNDRFMEY0IC8q
IElubGluZUZvcm1hdHRpbmdVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RjM2MEU0RTIzOTk5NDIwMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVha0l0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lU29mdExpbmVCcmVh
a0l0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYzRkJBOTYyNTU2RTMwODAw
MzUzMEZEIC8qIExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGM0ZCQTk3MjU1NkUzMTIwMDM1MzBGRCAv
KiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDU1LDggKzIxNDU1LDggQEAKIAkJ
CQlEREZDQjQ4MDI5MTcwMTQ1MDBDNzk5QzYgLyogSW5saW5lRm9ybWF0dGluZ0NvbnN0cmFpbnRz
LmggKi8sCiAJCQkJNkY3Q0EzQzkyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdD
b250ZXh0LmNwcCAqLywKIAkJCQk2RjdDQTNDODIwOEMyQjJFMDAyRjI5QUIgLyogSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaCAqLywKLQkJCQk2RjM1RUZBRjIxODdDQkQ1MDA0NEUwRjQgLyogSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAqLywKLQkJCQk0N0M0RDU3QzI2NTA4QkNBMDBDN0FC
MUYgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggKi8sCisJCQkJNkYzNUVGQUYyMTg3Q0JE
NTAwNDRFMEY0IC8qIElubGluZUZvcm1hdHRpbmdVdGlscy5jcHAgKi8sCisJCQkJNDdDNEQ1N0My
NjUwOEJDQTAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdVdGlscy5oICovLAogCQkJCTZGN0I4
Q0VDMjM2MjZFNjYwMEM5RkYxNSAvKiBJbmxpbmVJdGVtLmNwcCAqLywKIAkJCQk2RkU3Q0ZBMDIx
NzdFRUYxMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oICovLAogCQkJCTExRDAzNjM5MjcyQzRDRTcw
MDlFRDcwRCAvKiBJbmxpbmVJdGVtc0J1aWxkZXIuY3BwICovLApAQCAtMzg5NzcsNyArMzg5Nzcs
NyBAQAogCQkJCTZGNjBFNUFBMjc3MTBGMzkwMDVDMTVCOSAvKiBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCURERkNCNDgxMjkxNzAxNDYwMEM3OTlDNiAvKiBJ
bmxpbmVGb3JtYXR0aW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGN0NBM0NB
MjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNDdDNEQ1N0QyNjUwOEJDQjAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDdDNEQ1N0QyNjUwOEJDQjAwQzdBQjFGIC8qIElu
bGluZUZvcm1hdHRpbmdVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTExRkExQzcyNkYwRjMw
RjAwM0I4RjE2IC8qIElubGluZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZF
N0NGQTIyMTc3RUVGMjAwNUIxNTczIC8qIElubGluZUl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTExRDAzNjNDMjcyQzRDRkQwMDlFRDcwRCAvKiBJbmxpbmVJdGVtc0J1aWxkZXIuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDBkNjBlMTJjNmQ1Yi4uYWE3M2Yy
OWVjYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02MCw4ICs2MCw2IEBAIHB1Ymxp
YzoKICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKTsKICAgICBjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZvcm1hdHRpbmdDb250
ZXh0Jj4oKnRoaXMpLmxheW91dFN0YXRlKCk7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgRm9ybWF0
dGluZ0dlb21ldHJ5JiBmb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCA9IDA7Ci0KICAgICBlbnVt
IGNsYXNzIEVzY2FwZVJlYXNvbiB7CiAgICAgICAgIFRhYmxlUXVpcmtOZWVkc0dlb21ldHJ5RnJv
bUVzdGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQsCiAgICAgICAgIE91dE9mRmxvd0JveE5lZWRz
SW5GbG93R2VvbWV0cnksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaAppbmRleCA1NGUwMWM1YTBm
ODcuLjdmZTQ1MjdmZDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC04Nyw3ICs4
Nyw2IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkV2lk
dGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAK
ICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBmb3Jt
YXR0aW5nQ29udGV4dCgpLmlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOyB9Ci0gICAgYm9vbCBp
c0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250
ZXh0KCkuaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpOyB9CiAgICAgYm9vbCBpc0ZsZXhGb3Jt
YXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmlzRmxl
eEZvcm1hdHRpbmdDb250ZXh0KCk7IH0KICAgICBib29sIGlzVGFibGVGb3JtYXR0aW5nR2VvbWV0
cnkoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmlzVGFibGVGb3JtYXR0aW5n
Q29udGV4dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDExMWJiZGNmZGY0
OC4uMGU4ZWM4ZjI0ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTQyLDM1ICs0
Miw2IEBAIEZvcm1hdHRpbmdRdWlya3M6OkZvcm1hdHRpbmdRdWlya3MoY29uc3QgRm9ybWF0dGlu
Z0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KQogewogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRp
bmdRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVp
Z2h0KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAotewotICAgIEFTU0VSVChsYXlvdXRTdGF0
ZSgpLmluUXVpcmtzTW9kZSgpKTsKLSAgICAvLyBJbiBxdWlya3MgbW9kZSwgd2UgZ28gYW5kIHRy
YXZlcnMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4gdG8gZmluZCBhIGJsb2NrIGxldmVsIGJv
eCB3aXRoIGZpeGVkIGhlaWdodCB2YWx1ZSwgZXZlbiBpZiBpdCBtZWFucyBsZWF2aW5nCi0gICAg
Ly8gdGhlIGN1cnJlbnQgZm9ybWF0dGluZyBjb250ZXh0LiBGSVhNRTogc3VyZWx5IHdlIG5lZWQg
dG8gZG8gc29tZSB0cmlja3MgaGVyZSB3aGVuIGJsb2NrIGRpcmVjdGlvbiBzdXBwb3J0IGlzIGFk
ZGVkLgotICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRl
eHQoKTsKLSAgICBhdXRvIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJv
cmRlciA9IExheW91dFVuaXQgeyB9OwotICAgIGZvciAoYXV0byYgY29udGFpbmluZ0Jsb2NrIDog
Y29udGFpbmluZ0Jsb2NrQ2hhaW4obGF5b3V0Qm94KSkgewotICAgICAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKTsK
LSAgICAgICAgaWYgKGNvbnRhaW5pbmdCbG9ja0hlaWdodC5pc0ZpeGVkKCkpCi0gICAgICAgICAg
ICByZXR1cm4gTGF5b3V0VW5pdChjb250YWluaW5nQmxvY2tIZWlnaHQudmFsdWUoKSAtIGJvZHlB
bmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRlcik7Ci0KLSAgICAgICAgLy8g
SWYgdGhlIG9ubHkgZml4ZWQgdmFsdWUgYm94IHdlIGZpbmQgaXMgdGhlIElDQiwgdGhlbiBpZ25v
cmUgdGhlIGJvZHkgYW5kIHRoZSBkb2N1bWVudCAodmVydGljYWwpIG1hcmdpbiwgcGFkZGluZyBh
bmQgYm9yZGVyLiBTbyBtdWNoIHF1aXJraW5lc3MuCi0gICAgICAgIC8vIC1hbmQgaXQncyB0b3Rh
bGx5IGluc2FuZSBiZWNhdXNlIG5vdyB3ZSBmcmVlbHkgdHJhdmVsIGFjcm9zcyBmb3JtYXR0aW5n
IGNvbnRleHQgYm91bmRhcmllcyBhbmQgY29tcHV0ZWQgbWFyZ2lucyBhcmUgbm9uZXhpc3RlbnQu
Ci0gICAgICAgIGlmIChjb250YWluaW5nQmxvY2suaXNCb2R5Qm94KCkgfHwgY29udGFpbmluZ0Js
b2NrLmlzRG9jdW1lbnRCb3goKSkgewotICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ0dlb21ldHJ5KCk7Ci0gICAgICAgICAg
ICBhdXRvIGhvcml6b250YWxDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQoRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhj
b250YWluaW5nQmxvY2spLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4
ZWRIZWlnaHRBbmNlc3RvclF1aXJrKS5ob3Jpem9udGFsKCk7Ci0gICAgICAgICAgICBhdXRvIHZl
cnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4o
Y29udGFpbmluZ0Jsb2NrLCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotCi0gICAgICAgICAgICBh
dXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGNvbnRh
aW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmluZEZpeGVkSGVp
Z2h0QW5jZXN0b3JRdWlyayk7Ci0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGluZyA9IGJv
eEdlb21ldHJ5LnBhZGRpbmdCZWZvcmUoKS52YWx1ZV9vcigwKSArIGJveEdlb21ldHJ5LnBhZGRp
bmdBZnRlcigpLnZhbHVlX29yKDApOwotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEJvcmRlciA9
IGJveEdlb21ldHJ5LmJvcmRlckJlZm9yZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyQWZ0ZXIoKTsK
LSAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRl
ciArPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCkgKyB2ZXJ0aWNhbE1hcmdpbi5h
ZnRlci52YWx1ZV9vcigwKSArIHZlcnRpY2FsUGFkZGluZyArIHZlcnRpY2FsQm9yZGVyOwotICAg
ICAgICB9Ci0gICAgfQotICAgIC8vIEluaXRpYWwgY29udGFpbmluZyBibG9jayBoYXMgdG8gaGF2
ZSBhIGhlaWdodC4KLSAgICByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3go
Rm9ybWF0dGluZ0NvbnRleHQ6OmluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSwgRm9y
bWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmluZEZpeGVkSGVpZ2h0QW5jZXN0b3JRdWly
aykuY29udGVudEJveCgpLmhlaWdodCgpIC0gYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5Q
YWRkaW5nQW5kQm9yZGVyOwotfQotCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmgKaW5kZXgg
YTZlZTNiZTA4ZDllLi5kMDFkNjNhOGRlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oCkBAIC0z
NSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEZvcm1hdHRp
bmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+Rm9ybWF0dGluZ1F1aXJrcygpID0gZGVmYXVsdDsK
IAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdC
bG9ja1dpdGhGaXhlZEhlaWdodChjb25zdCBCb3gmKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91
dFVuaXQgaGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQo
Y29uc3QgQm94JikgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKICAgICBib29sIGlzQmxvY2tGb3Jt
YXR0aW5nUXVpcmtzKCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5pc0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQoKTsgfQogICAgIGJvb2wgaXNUYWJsZUZvcm1hdHRpbmdRdWlya3Mo
KSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmlzVGFibGVGb3JtYXR0aW5nQ29u
dGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmlu
ZGV4IDBlNThlNTUzMjg2NS4uMmMxYWNlZTQxYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgTGF5
b3V0VW5pdCB1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29uc3Qg
QmxvY2tGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmxvY2tGb3JtYXR0aW5nU3RhdGU7IH0KLSAgICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRy
eSYgZm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9ibG9ja0Zvcm1h
dHRpbmdHZW9tZXRyeTsgfQorICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5JiBmb3Jt
YXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
OyB9CiAgICAgY29uc3QgQmxvY2tGb3JtYXR0aW5nUXVpcmtzJiBmb3JtYXR0aW5nUXVpcmtzKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9ja0Zvcm1hdHRpbmdRdWlya3M7IH0KIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDZjYTU1
ZjQwOWFkZi4uZGUzNzI4ZGM1YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdRdWlya3MuY3BwCkBAIC0xMjgsNiArMTI4LDM1IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5n
UXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNv
bnN0CiAgICAgcmV0dXJuIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBzZShsYXlvdXRCb3gsIFZlcnRp
Y2FsTWFyZ2luOjpBZnRlcikgJiYgaXNRdWlya0NvbnRhaW5lcihGb3JtYXR0aW5nQ29udGV4dDo6
Y29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpOwogfQogCitMYXlvdXRVbml0IEJsb2NrRm9ybWF0
dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRI
ZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit7CisgICAgQVNTRVJUKGxheW91dFN0
YXRlKCkuaW5RdWlya3NNb2RlKCkpOworICAgIC8vIEluIHF1aXJrcyBtb2RlLCB3ZSBnbyBhbmQg
dHJhdmVycyB0aGUgY29udGFpbmluZyBibG9jayBjaGFpbiB0byBmaW5kIGEgYmxvY2sgbGV2ZWwg
Ym94IHdpdGggZml4ZWQgaGVpZ2h0IHZhbHVlLCBldmVuIGlmIGl0IG1lYW5zIGxlYXZpbmcKKyAg
ICAvLyB0aGUgY3VycmVudCBmb3JtYXR0aW5nIGNvbnRleHQuIEZJWE1FOiBzdXJlbHkgd2UgbmVl
ZCB0byBkbyBzb21lIHRyaWNrcyBoZXJlIHdoZW4gYmxvY2sgZGlyZWN0aW9uIHN1cHBvcnQgaXMg
YWRkZWQuCisgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSBkb3duY2FzdDxCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Pih0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICBhdXRvIGJvZHlB
bmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRlciA9IExheW91dFVuaXQgeyB9
OworICAgIGZvciAoYXV0byYgY29udGFpbmluZ0Jsb2NrIDogY29udGFpbmluZ0Jsb2NrQ2hhaW4o
bGF5b3V0Qm94KSkgeworICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnRh
aW5pbmdCbG9jay5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgaWYgKGNvbnRhaW5p
bmdCbG9ja0hlaWdodC5pc0ZpeGVkKCkpCisgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChj
b250YWluaW5nQmxvY2tIZWlnaHQudmFsdWUoKSAtIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFy
Z2luUGFkZGluZ0FuZEJvcmRlcik7CisKKyAgICAgICAgLy8gSWYgdGhlIG9ubHkgZml4ZWQgdmFs
dWUgYm94IHdlIGZpbmQgaXMgdGhlIElDQiwgdGhlbiBpZ25vcmUgdGhlIGJvZHkgYW5kIHRoZSBk
b2N1bWVudCAodmVydGljYWwpIG1hcmdpbiwgcGFkZGluZyBhbmQgYm9yZGVyLiBTbyBtdWNoIHF1
aXJraW5lc3MuCisgICAgICAgIC8vIC1hbmQgaXQncyB0b3RhbGx5IGluc2FuZSBiZWNhdXNlIG5v
dyB3ZSBmcmVlbHkgdHJhdmVsIGFjcm9zcyBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcmllcyBh
bmQgY29tcHV0ZWQgbWFyZ2lucyBhcmUgbm9uZXhpc3RlbnQuCisgICAgICAgIGlmIChjb250YWlu
aW5nQmxvY2suaXNCb2R5Qm94KCkgfHwgY29udGFpbmluZ0Jsb2NrLmlzRG9jdW1lbnRCb3goKSkg
eworICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRl
eHQuZm9ybWF0dGluZ0dlb21ldHJ5KCk7CisgICAgICAgICAgICBhdXRvIGhvcml6b250YWxDb25z
dHJhaW50cyA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQo
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9jayhjb250YWluaW5nQmxvY2spLCBGb3Jt
YXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpGaW5kRml4ZWRIZWlnaHRBbmNlc3RvclF1aXJr
KS5ob3Jpem9udGFsKCk7CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gZm9ybWF0
dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oY29udGFpbmluZ0Jsb2NrLCBob3Jp
em9udGFsQ29uc3RyYWludHMpOworCisgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZv
cm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGNvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGlu
Z0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmluZEZpeGVkSGVpZ2h0QW5jZXN0b3JRdWlyayk7Cisg
ICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGluZyA9IGJveEdlb21ldHJ5LnBhZGRpbmdCZWZv
cmUoKS52YWx1ZV9vcigwKSArIGJveEdlb21ldHJ5LnBhZGRpbmdBZnRlcigpLnZhbHVlX29yKDAp
OworICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEJvcmRlciA9IGJveEdlb21ldHJ5LmJvcmRlckJl
Zm9yZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyQWZ0ZXIoKTsKKyAgICAgICAgICAgIGJvZHlBbmRE
b2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRlciArPSB2ZXJ0aWNhbE1hcmdpbi5i
ZWZvcmUudmFsdWVfb3IoMCkgKyB2ZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSArIHZl
cnRpY2FsUGFkZGluZyArIHZlcnRpY2FsQm9yZGVyOworICAgICAgICB9CisgICAgfQorICAgIC8v
IEluaXRpYWwgY29udGFpbmluZyBibG9jayBoYXMgdG8gaGF2ZSBhIGhlaWdodC4KKyAgICByZXR1
cm4gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goRm9ybWF0dGluZ0NvbnRleHQ6Omlu
aXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2Fw
ZVJlYXNvbjo6RmluZEZpeGVkSGVpZ2h0QW5jZXN0b3JRdWlyaykuY29udGVudEJveCgpLmhlaWdo
dCgpIC0gYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVyOworfQor
CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCmluZGV4
IDRlYmNhNmE2M2ViYy4uOTczMmIzYzliNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tG
b3JtYXR0aW5nUXVpcmtzLmgKQEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAgIEJsb2NrRm9y
bWF0dGluZ1F1aXJrcyhjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Jik7CiAKICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IHN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShj
b25zdCBFbGVtZW50Qm94JiwgQ29udGVudEhlaWdodEFuZE1hcmdpbikgY29uc3Q7CisgICAgdmly
dHVhbCBMYXlvdXRVbml0IGhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZp
eGVkSGVpZ2h0KGNvbnN0IEJveCYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9y
ZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGNvbnN0IEVsZW1lbnRCb3gmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3Qg
RWxlbWVudEJveCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJX
aXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgRWxlbWVudEJveCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5n
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4
L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGEyYTZmZTAzNzkwYS4uYWNmMDlkOTA5YzJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Zs
ZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheW91dChjb25zdCBDb25zdHJhaW50c0ZvckZsZXhD
b250ZW50Jik7CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMoKTsKIAotICAgIGNvbnN0IEZsZXhGb3JtYXR0aW5nR2VvbWV0cnkm
IGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxleEZvcm1hdHRp
bmdHZW9tZXRyeTsgfQorICAgIGNvbnN0IEZsZXhGb3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRp
bmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxleEZvcm1hdHRpbmdHZW9tZXRyeTsgfQog
ICAgIGNvbnN0IEZvcm1hdHRpbmdRdWlya3MmIGZvcm1hdHRpbmdRdWlya3MoKSBjb25zdCB7IHJl
dHVybiBtX2ZsZXhGb3JtYXR0aW5nUXVpcmtzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250
ZW50QmFsYW5jZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmNwcAppbmRleCAzM2JmN2M0MDczODQuLjNh
YjViMzg4MjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5j
ZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBWZWN0b3I8c2l6ZV90PiBjb21wdXRlQnJl
YWtPcHBvcnR1bml0aWVzKGNvbnN0IElubGluZUl0ZW1MaXN0JiBpbmxpbmVJdGVtCiAgICAgVmVj
dG9yPHNpemVfdD4gYnJlYWtPcHBvcnR1bml0aWVzOwogICAgIHNpemVfdCBjdXJyZW50SW5kZXgg
PSByYW5nZS5zdGFydEluZGV4KCk7CiAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHJhbmdlLmVu
ZEluZGV4KCkpIHsKLSAgICAgICAgY3VycmVudEluZGV4ID0gSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5OjpuZXh0V3JhcE9wcG9ydHVuaXR5KGN1cnJlbnRJbmRleCwgcmFuZ2UsIGlubGluZUl0ZW1M
aXN0KTsKKyAgICAgICAgY3VycmVudEluZGV4ID0gSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpuZXh0
V3JhcE9wcG9ydHVuaXR5KGN1cnJlbnRJbmRleCwgcmFuZ2UsIGlubGluZUl0ZW1MaXN0KTsKICAg
ICAgICAgYnJlYWtPcHBvcnR1bml0aWVzLmFwcGVuZChjdXJyZW50SW5kZXgpOwogICAgIH0KICAg
ICByZXR1cm4gYnJlYWtPcHBvcnR1bml0aWVzOwpAQCAtMTI4LDggKzEyOCw4IEBAIHZvaWQgSW5s
aW5lQ29udGVudEJhbGFuY2VyOjppbml0aWFsaXplKCkKICAgICAgICAgICAgIG1fY2Fubm90QmFs
YW5jZUNvbnRlbnQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIG1faW5saW5lSXRlbVdpZHRocy5hcHBlbmQobV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5m
b3JtYXR0aW5nR2VvbWV0cnkoKS5pbmxpbmVJdGVtV2lkdGgoaXRlbSwgMCwgZmFsc2UpKTsKLSAg
ICAgICAgbV9maXJzdExpbmVTdHlsZUlubGluZUl0ZW1XaWR0aHMuYXBwZW5kKG1faW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ0dlb21ldHJ5KCkuaW5saW5lSXRlbVdpZHRoKGl0ZW0s
IDAsIHRydWUpKTsKKyAgICAgICAgbV9pbmxpbmVJdGVtV2lkdGhzLmFwcGVuZChtX2lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdVdGlscygpLmlubGluZUl0ZW1XaWR0aChpdGVtLCAw
LCBmYWxzZSkpOworICAgICAgICBtX2ZpcnN0TGluZVN0eWxlSW5saW5lSXRlbVdpZHRocy5hcHBl
bmQobV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVt
V2lkdGgoaXRlbSwgMCwgdHJ1ZSkpOwogICAgIH0KIAogICAgIC8vIFBlcmZvcm0gYSBsaW5lIGxh
eW91dCB3aXRoIGB0ZXh0LXdyYXA6IHdyYXBgIHRvIGNvbXB1dGUgdXNlZnVsIG1ldHJpY3Mgc3Vj
aCBhczoKQEAgLTE1MiwxMCArMTUyLDEwIEBAIHZvaWQgSW5saW5lQ29udGVudEJhbGFuY2VyOjpp
bml0aWFsaXplKCkKICAgICAgICAgYm9vbCBpc0ZpcnN0TGluZUluQ2h1bmsgPSAhbGluZUluZGV4
IHx8IG1fb3JpZ2luYWxMaW5lRW5kc1dpdGhGb3JjZWRCcmVha1tsaW5lSW5kZXggLSAxXTsKICAg
ICAgICAgU2xpZGluZ1dpZHRoIGxpbmVTbGlkaW5nV2lkdGggeyAqdGhpcywgbV9pbmxpbmVJdGVt
TGlzdCwgbGluZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2Uuc3RhcnRJbmRleCgpLCBsaW5l
TGF5b3V0UmVzdWx0LmlubGluZUl0ZW1SYW5nZS5lbmRJbmRleCgpLCB1c2VGaXJzdExpbmVTdHls
ZSwgaXNGaXJzdExpbmVJbkNodW5rIH07CiAgICAgICAgIGF1dG8gcHJldmlvdXNMaW5lRW5kc1dp
dGhMaW5lQnJlYWsgPSBsaW5lSW5kZXggPyBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsgbV9vcmlnaW5h
bExpbmVFbmRzV2l0aEZvcmNlZEJyZWFrW2xpbmVJbmRleCAtIDFdIH0gOiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgIGF1dG8gdGV4dEluZGVudCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9y
bWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRUZXh0SW5kZW50KElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVC
cmVhaywgbV9tYXhpbXVtTGluZVdpZHRoKTsKKyAgICAgICAgYXV0byB0ZXh0SW5kZW50ID0gbV9p
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5jb21wdXRlZFRleHRJbmRl
bnQoSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpJc0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIHByZXZp
b3VzTGluZUVuZHNXaXRoTGluZUJyZWFrLCBtX21heGltdW1MaW5lV2lkdGgpOwogICAgICAgICBt
X29yaWdpbmFsTGluZVdpZHRocy5hcHBlbmQodGV4dEluZGVudCArIGxpbmVTbGlkaW5nV2lkdGgu
d2lkdGgoKSk7CiAKLSAgICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSBJbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnk6OmxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0TGluZShsaW5lTGF5b3V0
UmVzdWx0LmlubGluZUl0ZW1SYW5nZS5lbmQsIHByZXZpb3VzTGluZUVuZCwgbGF5b3V0UmFuZ2Uu
ZW5kKTsKKyAgICAgICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6
OmxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0TGluZShsaW5lTGF5b3V0UmVzdWx0Lmlu
bGluZUl0ZW1SYW5nZS5lbmQsIHByZXZpb3VzTGluZUVuZCwgbGF5b3V0UmFuZ2UuZW5kKTsKICAg
ICAgICAgcHJldmlvdXNMaW5lRW5kID0gbGF5b3V0UmFuZ2Uuc3RhcnQ7CiAgICAgICAgIHByZXZp
b3VzTGluZSA9IFByZXZpb3VzTGluZSB7IGxpbmVJbmRleCwgbGluZUxheW91dFJlc3VsdC5jb250
ZW50R2VvbWV0cnkudHJhaWxpbmdPdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVMYXlvdXRS
ZXN1bHQuaW5saW5lQ29udGVudC5pc0VtcHR5KCkgJiYgbGluZUxheW91dFJlc3VsdC5pbmxpbmVD
b250ZW50Lmxhc3QoKS5pc0xpbmVCcmVhaygpLCBsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFs
aXR5LmlubGluZUJhc2VEaXJlY3Rpb24sIFdURk1vdmUobGluZUxheW91dFJlc3VsdC5mbG9hdENv
bnRlbnQuc3VzcGVuZGVkRmxvYXRzKSB9OwogICAgICAgICBsaW5lSW5kZXgrKzsKQEAgLTIyNSw4
ICsyMjUsOCBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxMYXlvdXRVbml0Pj4gSW5saW5lQ29udGVu
dEJhbGFuY2VyOjpiYWxhbmNlUmFuZ2VXaXRoTGluZVJlcQogCiAgICAgLy8gSW5kZW50YXRpb24g
b2Zmc2V0cwogICAgIGF1dG8gcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJlYWsgPSBpc0ZpcnN0
Q2h1bmsgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsgdHJ1ZSB9OwotICAg
IGF1dG8gZmlyc3RMaW5lVGV4dEluZGVudCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9y
bWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRUZXh0SW5kZW50KElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVC
cmVhaywgbV9tYXhpbXVtTGluZVdpZHRoKTsKLSAgICBhdXRvIHRleHRJbmRlbnQgPSBtX2lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkVGV4dEluZGVu
dChJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObywgZmFs
c2UsIG1fbWF4aW11bUxpbmVXaWR0aCk7CisgICAgYXV0byBmaXJzdExpbmVUZXh0SW5kZW50ID0g
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5jb21wdXRlZFRleHRJ
bmRlbnQoSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpJc0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIHBy
ZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrLCBtX21heGltdW1MaW5lV2lkdGgpOworICAgIGF1
dG8gdGV4dEluZGVudCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxz
KCkuY29tcHV0ZWRUZXh0SW5kZW50KElubGluZUZvcm1hdHRpbmdVdGlsczo6SXNJbnRyaW5zaWNX
aWR0aE1vZGU6Ok5vLCBmYWxzZSwgbV9tYXhpbXVtTGluZVdpZHRoKTsKIAogICAgIHN0cnVjdCBF
bnRyeSB7CiAgICAgICAgIGZsb2F0IGFjY3VtdWxhdGVkQ29zdCB7IHN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjppbmZpbml0eSgpIH07CkBAIC0zMjUsOCArMzI1LDggQEAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8TGF5b3V0VW5pdD4+IElubGluZUNvbnRlbnRCYWxhbmNlcjo6YmFsYW5jZVJhbmdl
V2l0aE5vTGluZVIKIAogICAgIC8vIEluZGVudGF0aW9uIG9mZnNldHMKICAgICBhdXRvIHByZXZp
b3VzTGluZUVuZHNXaXRoTGluZUJyZWFrID0gaXNGaXJzdENodW5rID8gc3RkOjpudWxsb3B0IDog
c3RkOjpvcHRpb25hbDxib29sPiB7IHRydWUgfTsKLSAgICBhdXRvIGZpcnN0TGluZVRleHRJbmRl
bnQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1
dGVkVGV4dEluZGVudChJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OklzSW50cmluc2ljV2lkdGhN
b2RlOjpObywgcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJlYWssIG1fbWF4aW11bUxpbmVXaWR0
aCk7Ci0gICAgYXV0byB0ZXh0SW5kZW50ID0gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3Jt
YXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZFRleHRJbmRlbnQoSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5OjpJc0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGZhbHNlLCBtX21heGltdW1MaW5lV2lkdGgp
OworICAgIGF1dG8gZmlyc3RMaW5lVGV4dEluZGVudCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuZm9ybWF0dGluZ1V0aWxzKCkuY29tcHV0ZWRUZXh0SW5kZW50KElubGluZUZvcm1hdHRpbmdV
dGlsczo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVC
cmVhaywgbV9tYXhpbXVtTGluZVdpZHRoKTsKKyAgICBhdXRvIHRleHRJbmRlbnQgPSBtX2lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdVdGlscygpLmNvbXB1dGVkVGV4dEluZGVudChJ
bmxpbmVGb3JtYXR0aW5nVXRpbHM6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObywgZmFsc2UsIG1f
bWF4aW11bUxpbmVXaWR0aCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBmbG9hdCBh
Y2N1bXVsYXRlZENvc3QgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuaAppbmRleCAyNWI3
Zjg4ZjczOTguLmY4YTQ0MTMzYzMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29u
dGVudEJhbGFuY2VyLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZvcm1hdHRpbmdD
b25zdHJhaW50cy5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCi0jaW5j
bHVkZSAiSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgiCisjaW5jbHVkZSAiSW5saW5lRm9ybWF0
dGluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlbS5oIgogI2luY2x1ZGUgIklubGluZUxp
bmVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEl0ZW0uaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBlMjY4ZGRlMmQ3MGEu
LjNhYmEyYWUwN2MwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtNjMsNyArNjMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOwogSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Oklu
bGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBCbG9ja0xheW91dFN0YXRlJiBwYXJlbnRC
bG9ja0xheW91dFN0YXRlKQogICAgIDogRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ0NvbnRl
eHRSb290LCBsYXlvdXRTdGF0ZSkKICAgICAsIG1faW5saW5lQ29udGVudENhY2hlKGxheW91dFN0
YXRlLmlubGluZUNvbnRlbnRDYWNoZShmb3JtYXR0aW5nQ29udGV4dFJvb3QpKQotICAgICwgbV9p
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoKnRoaXMpCisgICAgLCBtX2lubGluZUZvcm1hdHRpbmdV
dGlscygqdGhpcykKICAgICAsIG1faW5saW5lUXVpcmtzKCp0aGlzKQogICAgICwgbV9pbmxpbmVM
YXlvdXRTdGF0ZShwYXJlbnRCbG9ja0xheW91dFN0YXRlKQogewpAQCAtMTgyLDcgKzE4Miw3IEBA
IElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChB
YnN0cmFjdExpbmVCdWlsZGVyJiBsaW5lCiAgICAgYXV0byBsZWFkaW5nSW5saW5lSXRlbVBvc2l0
aW9uID0gbmVlZHNMYXlvdXRSYW5nZS5zdGFydDsKICAgICB3aGlsZSAodHJ1ZSkgewogCi0gICAg
ICAgIGF1dG8gbGluZUluaXRpYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9wLCBj
b25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6b250
YWwoKS5sb2dpY2FsV2lkdGgsIGZvcm1hdHRpbmdHZW9tZXRyeSgpLmluaXRpYWxMaW5lSGVpZ2h0
KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVlKCkpIH07CisgICAgICAgIGF1dG8gbGluZUluaXRpYWxS
ZWN0ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9wLCBjb25zdHJhaW50cy5ob3Jpem9udGFs
KCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgsIGZv
cm1hdHRpbmdVdGlscygpLmluaXRpYWxMaW5lSGVpZ2h0KCFwcmV2aW91c0xpbmUuaGFzX3ZhbHVl
KCkpIH07CiAgICAgICAgIGF1dG8gbGluZUlucHV0ID0gTGluZUlucHV0IHsgeyBsZWFkaW5nSW5s
aW5lSXRlbVBvc2l0aW9uLCBuZWVkc0xheW91dFJhbmdlLmVuZCB9LCBsaW5lSW5pdGlhbFJlY3Qg
fTsKICAgICAgICAgYXV0byBsaW5lSW5kZXggPSBwcmV2aW91c0xpbmUgPyAocHJldmlvdXNMaW5l
LT5saW5lSW5kZXggKyAxKSA6IDBsdTsKIApAQCAtMTkzLDcgKzE5Myw3IEBAIElubGluZUxheW91
dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChBYnN0cmFjdExpbmVC
dWlsZGVyJiBsaW5lCiAgICAgICAgIHVwZGF0ZUlubGluZUxheW91dFN0YXRlV2l0aExpbmVMYXlv
dXRSZXN1bHQobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRl
eHQpOwogCiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnRFbmQgPSBsaW5lTGF5b3V0UmVzdWx0Lmlu
bGluZUl0ZW1SYW5nZS5lbmQ7Ci0gICAgICAgIGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24gPSBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0
TGluZShsaW5lQ29udGVudEVuZCwgcHJldmlvdXNMaW5lRW5kLCBuZWVkc0xheW91dFJhbmdlLmVu
ZCk7CisgICAgICAgIGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24gPSBJbmxpbmVGb3JtYXR0aW5n
VXRpbHM6OmxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0TGluZShsaW5lQ29udGVudEVu
ZCwgcHJldmlvdXNMaW5lRW5kLCBuZWVkc0xheW91dFJhbmdlLmVuZCk7CiAgICAgICAgIGF1dG8g
aXNMYXN0TGluZSA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24gPT0gbmVlZHNMYXlvdXRSYW5n
ZS5lbmQgJiYgbGluZUxheW91dFJlc3VsdC5mbG9hdENvbnRlbnQuc3VzcGVuZGVkRmxvYXRzLmlz
RW1wdHkoKTsKICAgICAgICAgaWYgKGlzTGFzdExpbmUpIHsKICAgICAgICAgICAgIGxheW91dFJl
c3VsdC5yYW5nZSA9ICFpc1BhcnRpYWxMYXlvdXQgPyBJbmxpbmVMYXlvdXRSZXN1bHQ6OlJhbmdl
OjpGdWxsIDogSW5saW5lTGF5b3V0UmVzdWx0OjpSYW5nZTo6RnVsbEZyb21EYW1hZ2U7CkBAIC0y
MDYsNyArMjA2LDcgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsaW5lTGF5b3V0KEFic3RyYWN0TGluZUJ1aWxkZXImIGxpbmUKIAogICAgICAgICBwcmV2aW91
c0xpbmUgPSBQcmV2aW91c0xpbmUgeyBsaW5lSW5kZXgsIGxpbmVMYXlvdXRSZXN1bHQuY29udGVu
dEdlb21ldHJ5LnRyYWlsaW5nT3ZlcmZsb3dpbmdDb250ZW50V2lkdGgsICFsaW5lTGF5b3V0UmVz
dWx0LmlubGluZUNvbnRlbnQuaXNFbXB0eSgpICYmIGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29u
dGVudC5sYXN0KCkuaXNMaW5lQnJlYWsoKSwgbGluZUxheW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0
eS5pbmxpbmVCYXNlRGlyZWN0aW9uLCBXVEZNb3ZlKGxpbmVMYXlvdXRSZXN1bHQuZmxvYXRDb250
ZW50LnN1c3BlbmRlZEZsb2F0cykgfTsKICAgICAgICAgcHJldmlvdXNMaW5lRW5kID0gbGluZUNv
bnRlbnRFbmQ7Ci0gICAgICAgIGxpbmVMb2dpY2FsVG9wID0gZm9ybWF0dGluZ0dlb21ldHJ5KCku
bG9naWNhbFRvcEZvck5leHRMaW5lKGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwg
ZmxvYXRpbmdDb250ZXh0KTsKKyAgICAgICAgbGluZUxvZ2ljYWxUb3AgPSBmb3JtYXR0aW5nVXRp
bHMoKS5sb2dpY2FsVG9wRm9yTmV4dExpbmUobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxS
ZWN0LCBmbG9hdGluZ0NvbnRleHQpOwogICAgIH0KICAgICBJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OmFkZExpbmVDbGFtcFRyYWlsaW5nTGlua0JveElmQXBwbGljYWJsZSgqdGhpcywgaW5saW5l
TGF5b3V0U3RhdGUoKSwgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50KTsKICAgICByZXR1cm4g
bGF5b3V0UmVzdWx0OwpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OnVwZGF0ZUlubGluZUxheW91dFN0YXRlV2l0aExpbmVMYXlvdXRSZXN1bHQoY29uc3QK
ICAgICB9CiAKICAgICBpZiAobGluZUxheW91dFJlc3VsdC5pc0ZpcnN0TGFzdC5pc0xhc3RMaW5l
V2l0aElubGluZUNvbnRlbnQpCi0gICAgICAgIGlubGluZUxheW91dFN0YXRlKCkuc2V0Q2xlYXJH
YXBBZnRlckxhc3RMaW5lKGZvcm1hdHRpbmdHZW9tZXRyeSgpLmxvZ2ljYWxUb3BGb3JOZXh0TGlu
ZShsaW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4dCkgLSBs
aW5lTG9naWNhbFJlY3QuYm90dG9tKCkpOworICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZSgpLnNl
dENsZWFyR2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nVXRpbHMoKS5sb2dpY2FsVG9wRm9yTmV4
dExpbmUobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRleHQp
IC0gbGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgpKTsKIAogICAgIGxpbmVMYXlvdXRSZXN1bHQuZW5k
c1dpdGhIeXBoZW4gPyBpbmxpbmVMYXlvdXRTdGF0ZSgpLmluY3JlbWVudFN1Y2Nlc3NpdmVIeXBo
ZW5hdGVkTGluZUNvdW50KCkgOiBpbmxpbmVMYXlvdXRTdGF0ZSgpLnJlc2V0U3VjY2Vzc2l2ZUh5
cGhlbmF0ZWRMaW5lQ291bnQoKTsKIH0KQEAgLTMwNSw3ICszMDUsNyBAQCBJbmxpbmVSZWN0IElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGluZUNvbnRl
bnQoY29uc3QgTAogCiAgICAgZGlzcGxheUNvbnRlbnQuYm94ZXMuYXBwZW5kVmVjdG9yKFdURk1v
dmUoYm94ZXMpKTsKICAgICBkaXNwbGF5Q29udGVudC5saW5lcy5hcHBlbmQoZGlzcGxheUxpbmUp
OwotICAgIHJldHVybiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmZsaXBWaXN1YWxSZWN0VG9M
b2dpY2FsRm9yV3JpdGluZ01vZGUoZGlzcGxheUNvbnRlbnQubGluZXMubGFzdCgpLmxpbmVCb3hS
ZWN0KCksIHJvb3QoKS5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOworICAgIHJldHVybiBJbmxpbmVG
b3JtYXR0aW5nVXRpbHM6OmZsaXBWaXN1YWxSZWN0VG9Mb2dpY2FsRm9yV3JpdGluZ01vZGUoZGlz
cGxheUNvbnRlbnQubGluZXMubGFzdCgpLmxpbmVCb3hSZWN0KCksIHJvb3QoKS5zdHlsZSgpLndy
aXRpbmdNb2RlKCkpOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpyZXNldEdl
b21ldHJ5Rm9yQ2xhbXBlZENvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0Rpc3Bs
YXlDb250ZW50UmFuZ2UsIGNvbnN0IExpbmVMYXlvdXRSZXN1bHQ6OlN1c3BlbmRlZEZsb2F0TGlz
dCYgc3VzcGVuZGVkRmxvYXRzLCBMYXlvdXRQb2ludCB0b3BsZWZ0KQpAQCAtMzYzLDcgKzM2Myw3
IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9y
TGluZUZyb21DYWNoZWRDb250ZW50KGNvbnN0CiAKICAgICBsaW5lQnJlYWtpbmdSZXN1bHQubGlu
ZUdlb21ldHJ5LmxvZ2ljYWxUb3BMZWZ0ID0geyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9n
aWNhbExlZnQsIGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSB9OwogICAgIGxpbmVCcmVha2luZ1Jl
c3VsdC5saW5lR2VvbWV0cnkubG9naWNhbFdpZHRoID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgp
LmxvZ2ljYWxXaWR0aDsKLSAgICBsaW5lQnJlYWtpbmdSZXN1bHQuY29udGVudEdlb21ldHJ5Lmxv
Z2ljYWxMZWZ0ID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpob3Jpem9udGFsQWxpZ25tZW50
T2Zmc2V0KHJvb3QoKS5zdHlsZSgpLCBsaW5lQnJlYWtpbmdSZXN1bHQuY29udGVudEdlb21ldHJ5
LmxvZ2ljYWxXaWR0aCwgbGluZUJyZWFraW5nUmVzdWx0LmxpbmVHZW9tZXRyeS5sb2dpY2FsV2lk
dGgsIGxpbmVCcmVha2luZ1Jlc3VsdC5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lkdGgsIGxpbmVC
cmVha2luZ1Jlc3VsdC5pbmxpbmVDb250ZW50LCB0cnVlKTsKKyAgICBsaW5lQnJlYWtpbmdSZXN1
bHQuY29udGVudEdlb21ldHJ5LmxvZ2ljYWxMZWZ0ID0gSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpo
b3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJvb3QoKS5zdHlsZSgpLCBsaW5lQnJlYWtpbmdSZXN1
bHQuY29udGVudEdlb21ldHJ5LmxvZ2ljYWxXaWR0aCwgbGluZUJyZWFraW5nUmVzdWx0LmxpbmVH
ZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVCcmVha2luZ1Jlc3VsdC5oYW5naW5nQ29udGVudC5s
b2dpY2FsV2lkdGgsIGxpbmVCcmVha2luZ1Jlc3VsdC5pbmxpbmVDb250ZW50LCB0cnVlKTsKICAg
ICBhdXRvIGxpbmVCb3ggPSBMaW5lQm94QnVpbGRlciB7ICp0aGlzLCBsaW5lQnJlYWtpbmdSZXN1
bHQgfS5idWlsZCh7IH0pOwogICAgIGNyZWF0ZURpc3BsYXlDb250ZW50Rm9ySW5saW5lQ29udGVu
dChsaW5lQm94LCBsaW5lQnJlYWtpbmdSZXN1bHQsIGNvbnN0cmFpbnRzLCBsYXlvdXRSZXN1bHQu
ZGlzcGxheUNvbnRlbnQpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggOTBkYmFiYjNhY2YzLi42NmY3MGIyYjcw
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApA
QCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUg
IklubGluZURpc3BsYXlDb250ZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnN0
cmFpbnRzLmgiCi0jaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgiCisjaW5jbHVk
ZSAiSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiSW5saW5lTGF5b3V0U3RhdGUu
aCIKICNpbmNsdWRlICJJbmxpbmVRdWlya3MuaCIKICNpbmNsdWRlICJJbnRyaW5zaWNXaWR0aEhh
bmRsZXIuaCIKQEAgLTU0LDcgKzU0LDcgQEAgc3RydWN0IElubGluZUxheW91dFJlc3VsdCB7CiAK
IC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgbGF5b3V0IGxvZ2ljIGZvciBpbmxpbmUgZm9y
bWF0dGluZyBjb250ZXh0cy4KIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1cmVu
Lmh0bWwjaW5saW5lLWZvcm1hdHRpbmcKLWNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0IGZp
bmFsIDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKK2NsYXNzIElubGluZUZvcm1hdHRpbmdD
b250ZXh0IDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKElubGluZUZvcm1hdHRpbmdDb250ZXh0KTsKIHB1YmxpYzoKICAgICBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIExh
eW91dFN0YXRlJiwgQmxvY2tMYXlvdXRTdGF0ZSYgcGFyZW50QmxvY2tMYXlvdXRTdGF0ZSk7CkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNv
bXB1dGVkSW50cmluc2ljU2l6ZXMoY29uc3QgSW5saW5lRGFtYWdlKik7CiAgICAgTGF5b3V0VW5p
dCBtYXhpbXVtQ29udGVudFNpemUoKTsKIAotICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeSYgZm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnk7IH0KKyAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nVXRpbHMmIGZv
cm1hdHRpbmdVdGlscygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ1V0aWxzOyB9
CiAgICAgY29uc3QgSW5saW5lUXVpcmtzJiBxdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2lubGlu
ZVF1aXJrczsgfQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBqdXN0IGJlICJsYXlvdXQgc3Rh
dGUiIChwZW5kaW5nIG9uIHJlbmFtaW5nIExheW91dFN0YXRlKS4KICAgICBJbmxpbmVMYXlvdXRT
dGF0ZSYgaW5saW5lTGF5b3V0U3RhdGUoKSB7IHJldHVybiBtX2lubGluZUxheW91dFN0YXRlOyB9
CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKIHByaXZhdGU6CiAgICAgSW5saW5lQ29udGVu
dENhY2hlJiBtX2lubGluZUNvbnRlbnRDYWNoZTsKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkgbV9pbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk7CisgICAgY29uc3QgSW5saW5lRm9y
bWF0dGluZ1V0aWxzIG1faW5saW5lRm9ybWF0dGluZ1V0aWxzOwogICAgIGNvbnN0IElubGluZVF1
aXJrcyBtX2lubGluZVF1aXJrczsKICAgICBJbmxpbmVMYXlvdXRTdGF0ZSBtX2lubGluZUxheW91
dFN0YXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTZhMTJkNWNjZTMuLjAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgiCi0KLSNpbmNsdWRlICJGbG9hdGluZ0NvbnRleHQu
aCIKLSNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgotI2luY2x1ZGUgIkZvcm1hdHRpbmdDb250ZXh0
LmgiCi0jaW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRlbnQuaCIKLSNpbmNsdWRlICJJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIklubGluZUxldmVsQm94SW5saW5lcy5oIgot
I2luY2x1ZGUgIklubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaCIKLSNpbmNsdWRlICJJbmxp
bmVRdWlya3MuaCIKLSNpbmNsdWRlICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRFbGVt
ZW50Qm94LmgiCi0jaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCi0jaW5jbHVkZSAiUmVuZGVy
U3R5bGVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiUnVieUZvcm1hdHRpbmdDb250ZXh0LmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMYXlvdXQgewotCi1JbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnk6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeShjb25zdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCi0gICAgOiBGb3JtYXR0aW5nR2VvbWV0
cnkoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCi17Ci19Ci0KLUlubGluZUxheW91dFVuaXQgSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUxh
eW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2lj
YWxSZWN0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCkgY29uc3QKLXsK
LSAgICBhdXRvIGRpZE1hbmFnZVRvUGxhY2VJbmxpbmVDb250ZW50T3JGbG9hdCA9ICFsaW5lTGF5
b3V0UmVzdWx0LmlubGluZUl0ZW1SYW5nZS5pc0VtcHR5KCk7Ci0gICAgaWYgKGRpZE1hbmFnZVRv
UGxhY2VJbmxpbmVDb250ZW50T3JGbG9hdCkgewotICAgICAgICAvLyBOb3JtYWxseSB0aGUgbmV4
dCBsaW5lJ3MgbG9naWNhbCB0b3AgaXMgdGhlIHByZXZpb3VzIGxpbmUncyBsb2dpY2FsIGJvdHRv
bSwgYnV0IHdoZW4gdGhlIGxpbmUgZW5kcwotICAgICAgICAvLyB3aXRoIHRoZSBjbGVhciBwcm9w
ZXJ0eSBzZXQsIHRoZSBuZXh0IGxpbmUgbmVlZHMgdG8gY2xlYXIgdGhlIGV4aXN0aW5nIGZsb2F0
cy4KLSAgICAgICAgaWYgKGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgpOwotICAgICAgICBh
dXRvJiBsYXN0UnVuTGF5b3V0Qm94ID0gbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50Lmxh
c3QoKS5sYXlvdXRCb3goKTsKLSAgICAgICAgaWYgKCFsYXN0UnVuTGF5b3V0Qm94Lmhhc0Zsb2F0
Q2xlYXIoKSB8fCBsYXN0UnVuTGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKTsKLSAgICAgICAgYXV0byBw
b3NpdGlvbldpdGhDbGVhcmFuY2UgPSBmbG9hdGluZ0NvbnRleHQudmVydGljYWxQb3NpdGlvbldp
dGhDbGVhcmFuY2UobGFzdFJ1bkxheW91dEJveCwgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveChsYXN0UnVuTGF5b3V0Qm94KSk7Ci0gICAgICAgIGlmICghcG9zaXRpb25XaXRoQ2xl
YXJhbmNlKQotICAgICAgICAgICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSwgSW5saW5lTGF5
b3V0VW5pdChwb3NpdGlvbldpdGhDbGVhcmFuY2UtPnBvc2l0aW9uKSk7Ci0gICAgfQotCi0gICAg
YXV0byBpbnRydXNpdmVGbG9hdEJvdHRvbSA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4gewotICAgICAgICAvLyBGbG9hdHMgbXVzdCBoYXZlIHByZXZlbnRlZCB1cyBw
bGFjaW5nIGFueSBjb250ZW50IG9uIHRoZSBsaW5lLgotICAgICAgICAvLyBNb3ZlIG5leHQgbGlu
ZSBiZWxvdyB0aGUgaW50cnVzaXZlIGZsb2F0KHMpLgotICAgICAgICBBU1NFUlQobGluZUxheW91
dFJlc3VsdC5pbmxpbmVDb250ZW50LmlzRW1wdHkoKSB8fCBsaW5lTGF5b3V0UmVzdWx0LmlubGlu
ZUNvbnRlbnRbMF0uaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpKTsKLSAgICAgICAgYXV0
byBuZXh0TGluZUxvZ2ljYWxUb3AgPSBbJl0oKSAtPiBMYXlvdXRVbml0IHsKLSAgICAgICAgICAg
IGlmIChhdXRvIG5leHRMaW5lTG9naWNhbFRvcENhbmRpZGF0ZSA9IGxpbmVMYXlvdXRSZXN1bHQu
aGludEZvck5leHRMaW5lVG9wVG9Bdm9pZEludHJ1c2l2ZUZsb2F0KQotICAgICAgICAgICAgICAg
IHJldHVybiBMYXlvdXRVbml0IHsgKm5leHRMaW5lTG9naWNhbFRvcENhbmRpZGF0ZSB9OwotICAg
ICAgICAgICAgLy8gV2UgaGF2ZSB0byBoYXZlIGEgaGludCB3aGVuIGludHJ1c2l2ZSBmbG9hdHMg
cHJldmVudGVkIGFueSBpbmxpbmUgY29udGVudCBwbGFjZW1lbnQuCi0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgbGluZUxv
Z2ljYWxSZWN0LnRvcCgpICsgZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKS5jb21w
dXRlZExpbmVIZWlnaHQoKSB9OwotICAgICAgICB9OwotICAgICAgICBhdXRvIGZsb2F0Q29uc3Ry
YWludHMgPSBmbG9hdGluZ0NvbnRleHQuY29uc3RyYWludHModG9MYXlvdXRVbml0KGxpbmVMb2dp
Y2FsUmVjdC50b3AoKSksIG5leHRMaW5lTG9naWNhbFRvcCgpLCBGbG9hdGluZ0NvbnRleHQ6Ok1h
eUJlQWJvdmVMYXN0RmxvYXQ6Olllcyk7Ci0gICAgICAgIGlmIChmbG9hdENvbnN0cmFpbnRzLmxl
ZnQgJiYgZmxvYXRDb25zdHJhaW50cy5yaWdodCkgewotICAgICAgICAgICAgLy8gSW4gY2FzZSBv
ZiBsZWZ0IGFuZCByaWdodCBjb25zdHJhaW50cywgd2UgbmVlZCB0byBwaWNrIHRoZSBvbmUgdGhh
dCdzIGNsb3NlciB0byB0aGUgY3VycmVudCBsaW5lLgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWluKGZsb2F0Q29uc3RyYWludHMubGVmdC0+eSwgZmxvYXRDb25zdHJhaW50cy5yaWdodC0+eSk7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZsb2F0Q29uc3RyYWludHMubGVmdCkKLSAgICAgICAg
ICAgIHJldHVybiBmbG9hdENvbnN0cmFpbnRzLmxlZnQtPnk7Ci0gICAgICAgIGlmIChmbG9hdENv
bnN0cmFpbnRzLnJpZ2h0KQotICAgICAgICAgICAgcmV0dXJuIGZsb2F0Q29uc3RyYWludHMucmln
aHQtPnk7Ci0gICAgICAgIC8vIElmIHdlIGRpZG4ndCBtYW5hZ2UgdG8gcGxhY2UgYSBjb250ZW50
IG9uIHRoaXMgdmVydGljYWwgcG9zaXRpb24gZHVlIHRvIGludHJ1c2l2ZSBmbG9hdHMsIHdlIGhh
dmUgdG8gaGF2ZQotICAgICAgICAvLyBhdCBsZWFzdCBvbmUgZmxvYXQgaGVyZS4KLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsKLSAgICBp
ZiAoYXV0byBmaXJzdEF2YWlsYWJsZVZlcnRpY2FsUG9zaXRpb24gPSBpbnRydXNpdmVGbG9hdEJv
dHRvbSgpKQotICAgICAgICByZXR1cm4gKmZpcnN0QXZhaWxhYmxlVmVydGljYWxQb3NpdGlvbjsK
LSAgICAvLyBEbyBub3QgZ2V0IHN0dWNrIG9uIHRoZSBzYW1lIHZlcnRpY2FsIHBvc2l0aW9uIGV2
ZW4gd2hlbiB3ZSBmaW5kIG91cnNlbHZlcyBpbiB0aGlzIHVuZXhwZWN0ZWQgc3RhdGUuCi0gICAg
cmV0dXJuIGNlaWwobmV4dGFmdGVyKGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46Om1heCgpKSk7Ci19Ci0KLUNvbnRlbnRXaWR0aEFuZE1hcmdpbiBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUJsb2NrQ29udGVudFdpZHRoQW5kTWFyZ2lu
KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBjb25zdCBIb3Jpem9udGFsQ29uc3Ry
YWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxW
YWx1ZXMmIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKSBjb25zdAotewotICAgIEFTU0VSVChm
b3JtYXR0aW5nQ29udGV4dFJvb3QuaXNJbkZsb3coKSk7Ci0KLSAgICAvLyAxMC4zLjEwICdJbmxp
bmUtYmxvY2snLCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwotCi0gICAgLy8gRXhh
Y3RseSBhcyBpbmxpbmUgcmVwbGFjZWQgZWxlbWVudHMuCi0gICAgaWYgKGZvcm1hdHRpbmdDb250
ZXh0Um9vdC5pc1JlcGxhY2VkQm94KCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZENv
bnRlbnRXaWR0aEFuZE1hcmdpbihkb3duY2FzdDxFbGVtZW50Qm94Pihmb3JtYXR0aW5nQ29udGV4
dFJvb3QpLCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgb3ZlcnJpZGRlbkhvcml6b250YWxW
YWx1ZXMpOwotCi0gICAgLy8gMTAuMy45ICdJbmxpbmUtYmxvY2snLCBub24tcmVwbGFjZWQgZWxl
bWVudHMgaW4gbm9ybWFsIGZsb3cKLQotICAgIC8vIElmICd3aWR0aCcgaXMgJ2F1dG8nLCB0aGUg
dXNlZCB2YWx1ZSBpcyB0aGUgc2hyaW5rLXRvLWZpdCB3aWR0aCBhcyBmb3IgZmxvYXRpbmcgZWxl
bWVudHMuCi0gICAgLy8gQSBjb21wdXRlZCB2YWx1ZSBvZiAnYXV0bycgZm9yICdtYXJnaW4tbGVm
dCcgb3IgJ21hcmdpbi1yaWdodCcgYmVjb21lcyBhIHVzZWQgdmFsdWUgb2YgJzAnLgotICAgIC8v
ICMxCi0gICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWUoZm9ybWF0dGluZ0NvbnRleHRSb290
LnN0eWxlKCkubG9naWNhbFdpZHRoKCksIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lk
dGgpOwotICAgIGlmICghd2lkdGgpCi0gICAgICAgIHdpZHRoID0gc2hyaW5rVG9GaXRXaWR0aChm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgp
OwotCi0gICAgLy8gIzIKLSAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEZvcm1h
dHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKLQotICAgIHJldHVybiBDb250ZW50V2lkdGhB
bmRNYXJnaW4geyAqd2lkdGgsIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVl
X29yKDBfbHUpLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlX29yKDBfbHUpIH0g
fTsKLX0KLQotQ29udGVudEhlaWdodEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6
OmlubGluZUJsb2NrQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0
IE92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKSBjb25z
dAotewotICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3coKSk7Ci0KLSAgICAvLyAxMC42LjIg
SW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLCBibG9jay1sZXZlbCByZXBsYWNlZCBlbGVtZW50cyBp
biBub3JtYWwgZmxvdywgJ2lubGluZS1ibG9jaycgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFs
IGZsb3cgYW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRzCi0gICAgaWYgKGxheW91dEJveC5p
c1JlcGxhY2VkQm94KCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZENvbnRlbnRIZWln
aHRBbmRNYXJnaW4oZG93bmNhc3Q8RWxlbWVudEJveD4obGF5b3V0Qm94KSwgaG9yaXpvbnRhbENv
bnN0cmFpbnRzLCB7IH0sIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyk7Ci0KLSAgICAvLyAxMC42
LjYgQ29tcGxpY2F0ZWQgY2FzZXMKLSAgICAvLyAtICdJbmxpbmUtYmxvY2snLCBub24tcmVwbGFj
ZWQgZWxlbWVudHMuCi0gICAgcmV0dXJuIGNvbXBsaWNhdGVkQ2FzZXMobGF5b3V0Qm94LCBob3Jp
em9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyk7Ci19Ci0KLWJvb2wg
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNv
bnN0IElubGluZUxldmVsQm94JiBpbmxpbmVMZXZlbEJveCkgY29uc3QKLXsKLSAgICBpZiAoIWlu
bGluZUxldmVsQm94Lm1heVN0cmV0Y2hMaW5lQm94KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0xpbmVCcmVha0JveCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKGlubGluZUxldmVsQm94LmlzTGlzdE1hcmtlcigpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSkKLSAg
ICAgICAgcmV0dXJuIGlubGluZUxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkgPyB0cnVl
IDogZm9ybWF0dGluZ0NvbnRleHQoKS5xdWlya3MoKS5pbmxpbmVCb3hBZmZlY3RzTGluZUJveChp
bmxpbmVMZXZlbEJveCk7Ci0gICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5lTGV2
ZWxCb3goKSkKLSAgICAgICAgcmV0dXJuICFpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKS5pc1J1
YnlBbm5vdGF0aW9uQm94KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1JbmxpbmVSZWN0IElu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6ZmxpcFZpc3VhbFJlY3RUb0xvZ2ljYWxGb3JXcml0aW5n
TW9kZShjb25zdCBJbmxpbmVSZWN0JiB2aXN1YWxSZWN0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSkKLXsKLSAgICBzd2l0Y2ggKHdyaXRpbmdNb2RlVG9CbG9ja0Zsb3dEaXJlY3Rpb24od3JpdGlu
Z01vZGUpKSB7Ci0gICAgY2FzZSBCbG9ja0Zsb3dEaXJlY3Rpb246OlRvcFRvQm90dG9tOgotICAg
IGNhc2UgQmxvY2tGbG93RGlyZWN0aW9uOjpCb3R0b21Ub1RvcDoKLSAgICAgICAgcmV0dXJuIHZp
c3VhbFJlY3Q7Ci0gICAgY2FzZSBCbG9ja0Zsb3dEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAg
IGNhc2UgQmxvY2tGbG93RGlyZWN0aW9uOjpSaWdodFRvTGVmdDogewotICAgICAgICAvLyBGSVhN
RTogV2hpbGUgdmVydGljYWwtbHIgYW5kIHZlcnRpY2FsLXJsIG1vZGVzIGRvIGRpZmZlciBpbiB0
aGUgb3JkZXJpbmcgZGlyZWN0aW9uIG9mIGxpbmUgYm94ZXMKLSAgICAgICAgLy8gaW4gYSBibG9j
ayBjb250YWluZXIgKHNlZTogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy13cml0aW5nLW1v
ZGVzLyNibG9jay1mbG93KQotICAgICAgICAvLyB3ZSBpZ25vcmUgaXQgZm9yIG5vdyBhcyBSZW5k
ZXJCbG9jayB0YWtlcyBjYXJlIG9mIGl0IGZvciB1cy4KLSAgICAgICAgcmV0dXJuIElubGluZVJl
Y3QgeyB2aXN1YWxSZWN0LmxlZnQoKSwgdmlzdWFsUmVjdC50b3AoKSwgdmlzdWFsUmVjdC5oZWln
aHQoKSwgdmlzdWFsUmVjdC53aWR0aCgpIH07Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IHZpc3VhbFJlY3Q7Ci19Ci0KLUlubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5Ojpjb21wdXRlZFRleHRJbmRlbnQoSXNJbnRyaW5zaWNXaWR0aE1vZGUgaXNJbnRyaW5zaWNX
aWR0aE1vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJl
YWssIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpIGNvbnN0Ci17Ci0gICAgYXV0byYg
cm9vdCA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOwotCi0gICAgLy8gdGV4dC1pbmRlbnQg
cHJvcGVydHkgc3BlY2lmaWVzIHRoZSBpbmRlbnRhdGlvbiBhcHBsaWVkIHRvIGxpbmVzIG9mIGlu
bGluZSBjb250ZW50IGluIGEgYmxvY2suCi0gICAgLy8gVGhlIGluZGVudCBpcyB0cmVhdGVkIGFz
IGEgbWFyZ2luIGFwcGxpZWQgdG8gdGhlIHN0YXJ0IGVkZ2Ugb2YgdGhlIGxpbmUgYm94LgotICAg
IC8vIFRoZSBmaXJzdCBmb3JtYXR0ZWQgbGluZSBvZiBhbiBlbGVtZW50IGlzIGFsd2F5cyBpbmRl
bnRlZC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCBsaW5lIG9mIGFuIGFub255bW91cyBibG9jayBi
b3gKLSAgICAvLyBpcyBvbmx5IGFmZmVjdGVkIGlmIGl0IGlzIHRoZSBmaXJzdCBjaGlsZCBvZiBp
dHMgcGFyZW50IGVsZW1lbnQuCi0gICAgLy8gSWYgJ2VhY2gtbGluZScgaXMgc3BlY2lmaWVkLCBp
bmRlbnRhdGlvbiBhbHNvIGFwcGxpZXMgdG8gYWxsIGxpbmVzIHdoZXJlIHRoZSBwcmV2aW91cyBs
aW5lIGVuZHMgd2l0aCBhIGhhcmQgYnJlYWsuCi0gICAgLy8gW0ludGVncmF0aW9uXSByb290KCkt
PnBhcmVudCgpIHdvdWxkIG5vcm1hbGx5IHByb2R1Y2UgYSB2YWxpZCBsYXlvdXQgYm94LgotICAg
IGJvb2wgc2hvdWxkSW5kZW50ID0gZmFsc2U7Ci0gICAgaWYgKCFwcmV2aW91c0xpbmVFbmRzV2l0
aExpbmVCcmVhaykgewotICAgICAgICBzaG91bGRJbmRlbnQgPSAhcm9vdC5pc0Fub255bW91cygp
OwotICAgICAgICBpZiAocm9vdC5pc0Fub255bW91cygpKSB7Ci0gICAgICAgICAgICBpZiAoIXJv
b3QuaXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QoKSkKLSAgICAgICAgICAgICAgICBzaG91bGRJbmRl
bnQgPSByb290LnBhcmVudCgpLmZpcnN0SW5GbG93Q2hpbGQoKSA9PSAmcm9vdDsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzaG91bGRJbmRlbnQgPSByb290LmlzRmlyc3RDaGls
ZEZvckludGVncmF0aW9uKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgc2hvdWxk
SW5kZW50ID0gcm9vdC5zdHlsZSgpLnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dEluZGVudExpbmU6
OkVhY2hMaW5lICYmICpwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhazsKLQotICAgIC8vIFNw
ZWNpZnlpbmcgJ2hhbmdpbmcnIGludmVydHMgd2hldGhlciB0aGUgbGluZSBzaG91bGQgYmUgaW5k
ZW50ZWQgb3Igbm90LgotICAgIGlmIChyb290LnN0eWxlKCkudGV4dEluZGVudFR5cGUoKSA9PSBU
ZXh0SW5kZW50VHlwZTo6SGFuZ2luZykKLSAgICAgICAgc2hvdWxkSW5kZW50ID0gIXNob3VsZElu
ZGVudDsKLQotICAgIGlmICghc2hvdWxkSW5kZW50KQotICAgICAgICByZXR1cm4geyB9OwotCi0g
ICAgYXV0byB0ZXh0SW5kZW50ID0gcm9vdC5zdHlsZSgpLnRleHRJbmRlbnQoKTsKLSAgICBpZiAo
dGV4dEluZGVudCA9PSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRJbmRlbnQoKSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICBpZiAoaXNJbnRyaW5zaWNXaWR0aE1vZGUgPT0gSXNJbnRyaW5zaWNX
aWR0aE1vZGU6OlllcyAmJiB0ZXh0SW5kZW50LmlzUGVyY2VudCgpKSB7Ci0gICAgICAgIC8vIFBl
cmNlbnRhZ2VzIG11c3QgYmUgdHJlYXRlZCBhcyAwIGZvciB0aGUgcHVycG9zZSBvZiBjYWxjdWxh
dGluZyBpbnRyaW5zaWMgc2l6ZSBjb250cmlidXRpb25zLgotICAgICAgICAvLyBodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQvI3RleHQtaW5kZW50LXByb3BlcnR5Ci0gICAgICAgIHJl
dHVybiB7IH07Ci0gICAgfQotICAgIHJldHVybiB7IG1pbmltdW1WYWx1ZUZvckxlbmd0aCh0ZXh0
SW5kZW50LCBhdmFpbGFibGVXaWR0aCkgfTsKLX0KLQotSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnk6OmluaXRpYWxMaW5lSGVpZ2h0KGJvb2wgaXNGaXJzdExpbmUpIGNv
bnN0Ci17Ci0gICAgaWYgKGlubGluZUxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCi0g
ICAgICAgIHJldHVybiBpc0ZpcnN0TGluZSA/IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLmZp
cnN0TGluZVN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCkgOiBmb3JtYXR0aW5nQ29udGV4dCgp
LnJvb3QoKS5zdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwotICAgIHJldHVybiBmb3JtYXR0
aW5nQ29udGV4dCgpLnF1aXJrcygpLmluaXRpYWxMaW5lSGVpZ2h0KCk7Ci19Ci0KLUZsb2F0aW5n
Q29udGV4dDo6Q29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpmbG9hdENvbnN0
cmFpbnRzRm9yTGluZShJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsVG9wLCBJbmxpbmVMYXlv
dXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0
aW5nQ29udGV4dCkgY29uc3QKLXsKLSAgICBhdXRvIGxvZ2ljYWxUb3BDYW5kaWRhdGUgPSBMYXlv
dXRVbml0IHsgbGluZUxvZ2ljYWxUb3AgfTsKLSAgICBhdXRvIGxvZ2ljYWxCb3R0b21DYW5kaWRh
dGUgPSBMYXlvdXRVbml0IHsgbGluZUxvZ2ljYWxUb3AgKyBjb250ZW50TG9naWNhbEhlaWdodCB9
OwotICAgIGlmIChsb2dpY2FsVG9wQ2FuZGlkYXRlLm1pZ2h0QmVTYXR1cmF0ZWQoKSB8fCBsb2dp
Y2FsQm90dG9tQ2FuZGlkYXRlLm1pZ2h0QmVTYXR1cmF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAvLyBDaGVjayBmb3IgaW50cnVkaW5nIGZsb2F0cyBhbmQgYWRqdXN0IGxvZ2ljYWwg
bGVmdC9hdmFpbGFibGUgd2lkdGggZm9yIHRoaXMgbGluZSBhY2NvcmRpbmdseS4KLSAgICByZXR1
cm4gZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKGxvZ2ljYWxUb3BDYW5kaWRhdGUsIGxvZ2lj
YWxCb3R0b21DYW5kaWRhdGUsIEZsb2F0aW5nQ29udGV4dDo6TWF5QmVBYm92ZUxhc3RGbG9hdDo6
WWVzKTsKLX0KLQotSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Omhv
cml6b250YWxBbGlnbm1lbnRPZmZzZXQoY29uc3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgSW5s
aW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0LCBJbmxpbmVMYXlvdXRVbml0IGxpbmVM
b2dpY2FsV2lkdGgsIElubGluZUxheW91dFVuaXQgaGFuZ2luZ1RyYWlsaW5nV2lkdGgsIGNvbnN0
IExpbmU6OlJ1bkxpc3QmIHJ1bnMsIGJvb2wgaXNMYXN0TGluZSwgc3RkOjpvcHRpb25hbDxUZXh0
RGlyZWN0aW9uPiBpbmxpbmVCYXNlRGlyZWN0aW9uT3ZlcnJpZGUpCi17Ci0gICAgLy8gRGVwZW5k
aW5nIG9uIHRoZSBsaW5l4oCZcyBhbGlnbm1lbnQvanVzdGlmaWNhdGlvbiwgdGhlIGhhbmdpbmcg
Z2x5cGggY2FuIGJlIHBsYWNlZCBvdXRzaWRlIHRoZSBsaW5lIGJveC4KLSAgICBpZiAoaGFuZ2lu
Z1RyYWlsaW5nV2lkdGgpIHsKLSAgICAgICAgLy8gSWYgd2hpdGUtc3BhY2UgaXMgc2V0IHRvIHBy
ZS13cmFwLCB0aGUgVUEgbXVzdCAodW5jb25kaXRpb25hbGx5KSBoYW5nIHRoaXMgc2VxdWVuY2Us
IHVubGVzcyB0aGUgc2VxdWVuY2UgaXMgZm9sbG93ZWQKLSAgICAgICAgLy8gYnkgYSBmb3JjZWQg
bGluZSBicmVhaywgaW4gd2hpY2ggY2FzZSBpdCBtdXN0IGNvbmRpdGlvbmFsbHkgaGFuZyB0aGUg
c2VxdWVuY2UgaXMgaW5zdGVhZC4KLSAgICAgICAgLy8gTm90ZSB0aGF0IGVuZCBvZiBsYXN0IGxp
bmUgaW4gYSBwYXJhZ3JhcGggaXMgY29uc2lkZXJlZCBhIGZvcmNlZCBicmVhay4KLSAgICAgICAg
YXV0byBpc0NvbmRpdGlvbmFsSGFuZ2luZyA9IHJ1bnMubGFzdCgpLmlzTGluZUJyZWFrKCkgfHwg
aXNMYXN0TGluZTsKLSAgICAgICAgLy8gSW4gc29tZSBjYXNlcywgYSBnbHlwaCBhdCB0aGUgZW5k
IG9mIGEgbGluZSBjYW4gY29uZGl0aW9uYWxseSBoYW5nOiBpdCBoYW5ncyBvbmx5IGlmIGl0IGRv
ZXMgbm90IG90aGVyd2lzZSBmaXQgaW4gdGhlIGxpbmUgcHJpb3IgdG8ganVzdGlmaWNhdGlvbi4K
LSAgICAgICAgaWYgKGlzQ29uZGl0aW9uYWxIYW5naW5nKSB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogQ29uZGl0aW9uYWwgaGFuZ2luZyBuZWVkcyBwYXJ0aWFsIG92ZXJmbG93IHRyaW1taW5nIGF0
IGdseXBoIGJvdW5kYXJ5LCBvbmUgYnkgb25lIHVudGlsIHRoZXkgZml0LgotICAgICAgICAgICAg
Y29udGVudExvZ2ljYWxSaWdodCA9IHN0ZDo6bWluKGNvbnRlbnRMb2dpY2FsUmlnaHQsIGxpbmVM
b2dpY2FsV2lkdGgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRlbnRMb2dpY2Fs
UmlnaHQgLT0gaGFuZ2luZ1RyYWlsaW5nV2lkdGg7Ci0gICAgfQotCi0gICAgYXV0byBpc0xhc3RM
aW5lT3JBZnRlckxpbmVCcmVhayA9IGlzTGFzdExpbmUgfHwgKCFydW5zLmlzRW1wdHkoKSAmJiBy
dW5zLmxhc3QoKS5pc0xpbmVCcmVhaygpKTsKLSAgICBhdXRvIGhvcml6b250YWxBdmFpbGFibGVT
cGFjZSA9IGxpbmVMb2dpY2FsV2lkdGggLSBjb250ZW50TG9naWNhbFJpZ2h0OwotCi0gICAgaWYg
KGhvcml6b250YWxBdmFpbGFibGVTcGFjZSA8PSAwKQotICAgICAgICByZXR1cm4geyB9OwotCi0g
ICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gaW5saW5lQmFzZURpcmVjdGlvbk92ZXJy
aWRlLnZhbHVlX29yKHJvb3RTdHlsZS5kaXJlY3Rpb24oKSkgPT0gVGV4dERpcmVjdGlvbjo6TFRS
OwotCi0gICAgYXV0byBjb21wdXRlZEhvcml6b250YWxBbGlnbm1lbnQgPSBbJl0gewotICAgICAg
ICBhdXRvIHRleHRBbGlnbiA9IHJvb3RTdHlsZS50ZXh0QWxpZ24oKTsKLSAgICAgICAgaWYgKCFp
c0xhc3RMaW5lT3JBZnRlckxpbmVCcmVhaykKLSAgICAgICAgICAgIHJldHVybiB0ZXh0QWxpZ247
Ci0gICAgICAgIC8vIFRoZSBsYXN0IGxpbmUgYmVmb3JlIGEgZm9yY2VkIGJyZWFrIG9yIHRoZSBl
bmQgb2YgdGhlIGJsb2NrIGlzIGFsaWduZWQgYWNjb3JkaW5nIHRvIHRleHQtYWxpZ24tbGFzdC4K
LSAgICAgICAgc3dpdGNoIChyb290U3R5bGUudGV4dEFsaWduTGFzdCgpKSB7Ci0gICAgICAgIGNh
c2UgVGV4dEFsaWduTGFzdDo6QXV0bzoKLSAgICAgICAgICAgIGlmICh0ZXh0QWxpZ24gPT0gVGV4
dEFsaWduTW9kZTo6SnVzdGlmeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVGV4dEFsaWduTW9k
ZTo6U3RhcnQ7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dEFsaWduOwotICAgICAgICBjYXNlIFRl
eHRBbGlnbkxhc3Q6OlN0YXJ0OgotICAgICAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0
YXJ0OwotICAgICAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkVuZDoKLSAgICAgICAgICAgIHJldHVy
biBUZXh0QWxpZ25Nb2RlOjpFbmQ7Ci0gICAgICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6TGVmdDoK
LSAgICAgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpMZWZ0OwotICAgICAgICBjYXNlIFRl
eHRBbGlnbkxhc3Q6OlJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlJp
Z2h0OwotICAgICAgICBjYXNlIFRleHRBbGlnbkxhc3Q6OkNlbnRlcjoKLSAgICAgICAgICAgIHJl
dHVybiBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI7Ci0gICAgICAgIGNhc2UgVGV4dEFsaWduTGFzdDo6
SnVzdGlmeToKLSAgICAgICAgICAgIHJldHVybiBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gVGV4dEFsaWduTW9kZTo6U3RhcnQ7Ci0gICAgICAgIH0KLSAgICB9OwotCi0g
ICAgc3dpdGNoIChjb21wdXRlZEhvcml6b250YWxBbGlnbm1lbnQoKSkgewotICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6TGVmdDoKLSAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6Ci0g
ICAgICAgIGlmICghaXNMZWZ0VG9SaWdodERpcmVjdGlvbikKLSAgICAgICAgICAgIHJldHVybiBo
b3Jpem9udGFsQXZhaWxhYmxlU3BhY2U7Ci0gICAgICAgIEZBTExUSFJPVUdIOwotICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6U3RhcnQ6Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpSaWdodDoKLSAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0Ogot
ICAgICAgICBpZiAoIWlzTGVmdFRvUmlnaHREaXJlY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4g
eyB9OwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkVuZDoK
LSAgICAgICAgcmV0dXJuIGhvcml6b250YWxBdmFpbGFibGVTcGFjZTsKLSAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OkNlbnRlcjoKLSAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoK
LSAgICAgICAgcmV0dXJuIGhvcml6b250YWxBdmFpbGFibGVTcGFjZSAvIDI7Ci0gICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgotICAgICAgICAvLyBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5
IGlzIGEgcnVuIGFsaWdubWVudCAoYW5kIHdlIG9ubHkgZG8gaW5saW5lIGJveCBhbGlnbm1lbnQg
aGVyZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRf
Tk9UX0lNUExFTUVOVEVEX1lFVCgpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1JbmxpbmVJdGVtUG9z
aXRpb24gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9u
Rm9yTmV4dExpbmUoSW5saW5lSXRlbVBvc2l0aW9uIGxpbmVDb250ZW50RW5kLCBzdGQ6Om9wdGlv
bmFsPElubGluZUl0ZW1Qb3NpdGlvbj4gcHJldmlvdXNMaW5lVHJhaWxpbmdJbmxpbmVJdGVtUG9z
aXRpb24sIElubGluZUl0ZW1Qb3NpdGlvbiBsYXlvdXRSYW5nZUVuZCkKLXsKLSAgICBpZiAoIXBy
ZXZpb3VzTGluZVRyYWlsaW5nSW5saW5lSXRlbVBvc2l0aW9uKQotICAgICAgICByZXR1cm4gbGlu
ZUNvbnRlbnRFbmQ7Ci0gICAgaWYgKHByZXZpb3VzTGluZVRyYWlsaW5nSW5saW5lSXRlbVBvc2l0
aW9uLT5pbmRleCA8IGxpbmVDb250ZW50RW5kLmluZGV4IHx8IChwcmV2aW91c0xpbmVUcmFpbGlu
Z0lubGluZUl0ZW1Qb3NpdGlvbi0+aW5kZXggPT0gbGluZUNvbnRlbnRFbmQuaW5kZXggJiYgcHJl
dmlvdXNMaW5lVHJhaWxpbmdJbmxpbmVJdGVtUG9zaXRpb24tPm9mZnNldCA8IGxpbmVDb250ZW50
RW5kLm9mZnNldCkpIHsKLSAgICAgICAgLy8gRWl0aGVyIGZ1bGwgb3IgcGFydGlhbCBhZHZhbmNp
bmcuCi0gICAgICAgIHJldHVybiBsaW5lQ29udGVudEVuZDsKLSAgICB9Ci0gICAgaWYgKHByZXZp
b3VzTGluZVRyYWlsaW5nSW5saW5lSXRlbVBvc2l0aW9uLT5pbmRleCA9PSBsaW5lQ29udGVudEVu
ZC5pbmRleCAmJiAhcHJldmlvdXNMaW5lVHJhaWxpbmdJbmxpbmVJdGVtUG9zaXRpb24tPm9mZnNl
dCAmJiAhbGluZUNvbnRlbnRFbmQub2Zmc2V0KSB7Ci0gICAgICAgIC8vIENhbid0IG1hbmdhZ2Ug
dG8gcHV0IGFueSBjb250ZW50IG9uIGxpbmUgKG1vc3QgbGlrZWx5IGR1ZSB0byBmbG9hdHMpLiBO
b3RlIHRoYXQgdGhpcyBvbmx5IGFwcGxpZXMgdG8gZnVsbCBjb250ZW50LgotICAgICAgICByZXR1
cm4gbGluZUNvbnRlbnRFbmQ7Ci0gICAgfQotICAgIC8vIFRoaXMgbG9va3MgbGlrZSBhIHBhcnRp
YWwgY29udGVudCBhbmQgd2UgYXJlIHN0dWNrLiBMZXQncyBmb3JjZS1tb3ZlIG92ZXIgdG8gdGhl
IG5leHQgaW5saW5lIGl0ZW0uCi0gICAgLy8gV2UgY2VydGFpbmx5IGxvc2Ugc29tZSBjb250ZW50
LCBidXQgd2Ugd291bGQgYmUgYnVzeSBsb29waW5nIG90aGVyd2lzZS4KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4geyBzdGQ6Om1pbihsaW5lQ29udGVudEVuZC5pbmRleCAr
IDEsIGxheW91dFJhbmdlRW5kLmluZGV4KSwgeyB9IH07Ci19Ci0KLUlubGluZUxheW91dFVuaXQg
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVJdGVtV2lkdGgoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQsIGJvb2wg
dXNlRmlyc3RMaW5lU3R5bGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlubGluZUl0ZW0ubGF5b3V0
Qm94KCkuaXNJbmxpbmVMZXZlbEJveCgpKTsKLSAgICBpZiAoaXM8SW5saW5lVGV4dEl0ZW0+KGlu
bGluZUl0ZW0pKSB7Ci0gICAgICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5s
aW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pOwotICAgICAgICBpZiAoYXV0byBjb250ZW50V2lkdGgg
PSBpbmxpbmVUZXh0SXRlbS53aWR0aCgpKQotICAgICAgICAgICAgcmV0dXJuICpjb250ZW50V2lk
dGg7Ci0gICAgICAgIGF1dG8mIGZvbnRDYXNjYWRlID0gdXNlRmlyc3RMaW5lU3R5bGUgPyBpbmxp
bmVUZXh0SXRlbS5maXJzdExpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCkgOiBpbmxpbmVUZXh0SXRl
bS5zdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgIGlmICghaW5saW5lVGV4dEl0ZW0uaXNX
aGl0ZXNwYWNlKCkgfHwgSW5saW5lVGV4dEl0ZW06OnNob3VsZFByZXNlcnZlU3BhY2VzQW5kVGFi
cyhpbmxpbmVUZXh0SXRlbSkpCi0gICAgICAgICAgICByZXR1cm4gVGV4dFV0aWw6OndpZHRoKGlu
bGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgY29udGVudExvZ2ljYWxMZWZ0KTsKLSAgICAgICAg
cmV0dXJuIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGlubGlu
ZVRleHRJdGVtLnN0YXJ0KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCkgKyAxLCBjb250ZW50TG9n
aWNhbExlZnQpOwotICAgIH0KLQotICAgIGlmIChpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkgfHwg
aW5saW5lSXRlbS5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpCi0gICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVJdGVtLmxheW91dEJveCgpOwotICAgIGF1
dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlv
dXRCb3gpOwotCi0gICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpCi0gICAgICAgIHJl
dHVybiBib3hHZW9tZXRyeS5tYXJnaW5Cb3hXaWR0aCgpOwotCi0gICAgaWYgKGlubGluZUl0ZW0u
aXNJbmxpbmVCb3hTdGFydCgpKSB7Ci0gICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gYm94R2Vv
bWV0cnkubWFyZ2luU3RhcnQoKSArIGJveEdlb21ldHJ5LmJvcmRlclN0YXJ0KCkgKyBib3hHZW9t
ZXRyeS5wYWRkaW5nU3RhcnQoKS52YWx1ZV9vcigwKTsKLSNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNP
UkFUSU9OX0JSRUFLKQotICAgICAgICBhdXRvJiBzdHlsZSA9IHVzZUZpcnN0TGluZVN0eWxlID8g
aW5saW5lSXRlbS5maXJzdExpbmVTdHlsZSgpIDogaW5saW5lSXRlbS5zdHlsZSgpOwotICAgICAg
ICBpZiAoc3R5bGUuYm94RGVjb3JhdGlvbkJyZWFrKCkgPT0gQm94RGVjb3JhdGlvbkJyZWFrOjpD
bG9uZSkKLSAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCArPSBib3hHZW9tZXRyeS5ib3JkZXJFbmQo
KSArIGJveEdlb21ldHJ5LnBhZGRpbmdFbmQoKS52YWx1ZV9vcigwX2x1KTsKLSNlbmRpZgotICAg
ICAgICByZXR1cm4gbG9naWNhbFdpZHRoOwotICAgIH0KLQotICAgIGlmIChpbmxpbmVJdGVtLmlz
SW5saW5lQm94RW5kKCkpCi0gICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSAr
IGJveEdlb21ldHJ5LmJvcmRlckVuZCgpICsgYm94R2VvbWV0cnkucGFkZGluZ0VuZCgpLnZhbHVl
X29yKDApOwotCi0gICAgaWYgKGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKLSAgICAgICAgcmV0dXJu
IHsgfTsKLQotICAgIC8vIE5vbi1yZXBsYWNlZCBpbmxpbmUgYm94IChlLmcuIGlubGluZS1ibG9j
aykKLSAgICByZXR1cm4gYm94R2VvbWV0cnkubWFyZ2luQm94V2lkdGgoKTsKLX0KLQotc3RhdGlj
IGlubGluZSBib29sIGVuZHNXaXRoU29mdFdyYXBPcHBvcnR1bml0eShjb25zdCBJbmxpbmVUZXh0
SXRlbSYgcHJldmlvdXNJbmxpbmVUZXh0SXRlbSwgY29uc3QgSW5saW5lVGV4dEl0ZW0mIG5leHRJ
bmxpbmVUZXh0SXRlbSkKLXsKLSAgICBBU1NFUlQoIW5leHRJbmxpbmVUZXh0SXRlbS5pc1doaXRl
c3BhY2UoKSk7Ci0gICAgLy8gV2UgYXJlIGF0IHRoZSBwb3NpdGlvbiBhZnRlciBhIHdoaXRlc3Bh
Y2UuCi0gICAgaWYgKHByZXZpb3VzSW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIC8vIFdoZW4gYm90aCB0aGVzZSBub24td2hpdGVzcGFjZSBy
dW5zIGJlbG9uZyB0byB0aGUgc2FtZSBsYXlvdXQgYm94IHdpdGggdGhlIHNhbWUgYmlkaSBsZXZl
bCwgaXQncyBndWFyYW50ZWVkIHRoYXQKLSAgICAvLyB0aGV5IGFyZSBzcGxpdCBhdCBhIHNvZnQg
YnJlYWtpbmcgb3Bwb3J0dW5pdHkuIFNlZSBJbmxpbmVJdGVtc0J1aWxkZXI6Om1vdmVUb05leHRC
cmVha2FibGVQb3NpdGlvbi4KLSAgICBpZiAoJnByZXZpb3VzSW5saW5lVGV4dEl0ZW0uaW5saW5l
VGV4dEJveCgpID09ICZuZXh0SW5saW5lVGV4dEl0ZW0uaW5saW5lVGV4dEJveCgpKSB7Ci0gICAg
ICAgIGlmIChwcmV2aW91c0lubGluZVRleHRJdGVtLmJpZGlMZXZlbCgpID09IG5leHRJbmxpbmVU
ZXh0SXRlbS5iaWRpTGV2ZWwoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAv
LyBUaGUgYmlkaSBib3VuZGFyeSBtYXkgb3IgbWF5IG5vdCBiZSB0aGUgcmVhc29uIGZvciBzcGxp
dHRpbmcgdGhlIGlubGluZSB0ZXh0IGJveCBjb250ZW50LgotICAgICAgICAvLyBGSVhNRTogV2Ug
Y291bGQgYWRkIGEgInJlYXNvbiBmbGFnIiB0byBJbmxpbmVUZXh0SXRlbSB0byB0ZWxsIHdoeSB0
aGUgc3BsaXQgaGFwcGVuZWQuCi0gICAgICAgIGF1dG8mIHN0eWxlID0gcHJldmlvdXNJbmxpbmVU
ZXh0SXRlbS5zdHlsZSgpOwotICAgICAgICBhdXRvIGxpbmVCcmVha0l0ZXJhdG9yRmFjdG9yeSA9
IENhY2hlZExpbmVCcmVha0l0ZXJhdG9yRmFjdG9yeSB7IHByZXZpb3VzSW5saW5lVGV4dEl0ZW0u
aW5saW5lVGV4dEJveCgpLmNvbnRlbnQoKSwgc3R5bGUuY29tcHV0ZWRMb2NhbGUoKSwgVGV4dFV0
aWw6OmxpbmVCcmVha0l0ZXJhdG9yTW9kZShzdHlsZS5saW5lQnJlYWsoKSksIFRleHRVdGlsOjpj
b250ZW50QW5hbHlzaXMoc3R5bGUud29yZEJyZWFrKCkpIH07Ci0gICAgICAgIGF1dG8gc29mdFdy
YXBPcHBvcnR1bml0eUNhbmRpZGF0ZSA9IG5leHRJbmxpbmVUZXh0SXRlbS5zdGFydCgpOwotICAg
ICAgICByZXR1cm4gVGV4dFV0aWw6OmZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24obGluZUJyZWFr
SXRlcmF0b3JGYWN0b3J5LCBzb2Z0V3JhcE9wcG9ydHVuaXR5Q2FuZGlkYXRlLCBzdHlsZSkgPT0g
c29mdFdyYXBPcHBvcnR1bml0eUNhbmRpZGF0ZTsKLSAgICB9Ci0gICAgcmV0dXJuIFRleHRVdGls
OjptYXlCcmVha0luQmV0d2VlbihwcmV2aW91c0lubGluZVRleHRJdGVtLCBuZXh0SW5saW5lVGV4
dEl0ZW0pOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNBdFNvZnRXcmFwT3Bwb3J0dW5pdHko
Y29uc3QgSW5saW5lSXRlbSYgcHJldmlvdXMsIGNvbnN0IElubGluZUl0ZW0mIG5leHQpCi17Ci0g
ICAgLy8gRklYTUU6IFRyYW5zaXRpb24gbm8td3JhcHBpbmcgbG9naWMgZnJvbSBJbmxpbmVDb250
ZW50QnJlYWtlciB0byBoZXJlIHdoZXJlIHdlIGNvbXB1dGUgdGhlIHNvZnQgd3JhcCBvcHBvcnR1
bml0eSBpbmRleGVzLgotICAgIC8vICJpcyBhdCIgc2ltcGxlIG1lYW5zIHRoYXQgdGhlcmUncyBh
IHNvZnQgd3JhcCBvcHBvcnR1bml0eSByaWdodCBhZnRlciB0aGUgW3ByZXZpb3VzXS4KLSAgICAv
LyBbdGV4dF1bIF1bdGV4dF1baW5saW5lIGJveCBzdGFydF0uLi4gKDxkaXY+dGV4dCBjb250ZW50
PHNwYW4+Li48L2Rpdj4pCi0gICAgLy8gc29mdCB3cmFwIGluZGV4ZXM6IDAgYW5kIDEgZGVmaW5p
dGVseSwgMiBkZXBlbmRzIG9uIHRoZSBjb250ZW50IGFmdGVyIHRoZSBbaW5saW5lIGJveCBzdGFy
dF0uCi0KLSAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQtMy8jbGluZS1i
cmVhay1kZXRhaWxzCi0gICAgLy8gRmlndXJlIG91dCBpZiB0aGUgbmV3IGluY29taW5nIGNvbnRl
bnQgcHV0cyB0aGUgdW5jb21taXR0ZWQgY29udGVudCBvbiBhIHNvZnQgd3JhcCBvcHBvcnR1bml0
eS4KLSAgICAvLyBlLmcuIFtpbmxpbmUgYm94IHN0YXJ0XVtwcmlvcl9jb250aW51b3VzX2NvbnRl
bnRdW2lubGluZSBib3ggZW5kXSAoPHNwYW4+cHJpb3JfY29udGludW91c19jb250ZW50PC9zcGFu
PikKLSAgICAvLyBBbiBpbmNvbWluZyA8aW1nPiBib3ggd291bGQgZW5hYmxlIHVzIHRvIGNvbW1p
dCB0aGUgIjxzcGFuPnByaW9yX2NvbnRpbnVvdXNfY29udGVudDwvc3Bhbj4iIGNvbnRlbnQKLSAg
ICAvLyBidXQgYW4gaW5jb21pbmcgdGV4dCBjb250ZW50IHdvdWxkIG5vdCBuZWNlc3NhcmlseS4K
LSAgICBBU1NFUlQocHJldmlvdXMuaXNUZXh0KCkgfHwgcHJldmlvdXMuaXNCb3goKSk7Ci0gICAg
QVNTRVJUKG5leHQuaXNUZXh0KCkgfHwgbmV4dC5pc0JveCgpKTsKLSAgICBpZiAocHJldmlvdXMu
aXNUZXh0KCkgJiYgbmV4dC5pc1RleHQoKSkgewotICAgICAgICBhdXRvJiBjdXJyZW50SW5saW5l
VGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4ocHJldmlvdXMpOwotICAgICAgICBh
dXRvJiBuZXh0SW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4obmV4dCk7
Ci0gICAgICAgIGlmIChjdXJyZW50SW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkgJiYgbmV4
dElubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpKSB7Ci0gICAgICAgICAgICAvLyA8c3Bhbj4g
PC9zcGFuPjxzcGFuPiA8L3NwYW4+LiBEZXBlbmRpbmcgb24gdGhlIHN0eWxlcywgdGhlcmUgbWF5
IG9yIG1heSBub3QgYmUgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYmV0d2VlbiB0aGVzZSAyIHdo
aXRlc3BhY2UgY29udGVudC4KLSAgICAgICAgICAgIHJldHVybiBUZXh0VXRpbDo6aXNXcmFwcGlu
Z0FsbG93ZWQoY3VycmVudElubGluZVRleHRJdGVtLnN0eWxlKCkpIHx8IFRleHRVdGlsOjppc1dy
YXBwaW5nQWxsb3dlZChuZXh0SW5saW5lVGV4dEl0ZW0uc3R5bGUoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGN1cnJlbnRJbmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSkgewotICAgICAg
ICAgICAgLy8gIiA8c3Bhbj50ZXh0PC9zcGFuPiIgOiBhZnRlciBbd2hpdGVzcGFjZV0gcG9zaXRp
b24gaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICByZXR1cm4gVGV4dFV0
aWw6OmlzV3JhcHBpbmdBbGxvd2VkKGN1cnJlbnRJbmxpbmVUZXh0SXRlbS5zdHlsZSgpKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAobmV4dElubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpKSB7
Ci0gICAgICAgICAgICAvLyAiPHNwYW4+dGV4dDwvc3Bhbj4gIgotICAgICAgICAgICAgLy8gJ3do
aXRlLXNwYWNlOiBicmVhay1zcGFjZXMnIGFuZCAnLXdlYmtpdC1saW5lLWJyZWFrOiBhZnRlci13
aGl0ZS1zcGFjZSc6IGxpbmUgYnJlYWtpbmcgb3Bwb3J0dW5pdHkgZXhpc3RzIGFmdGVyIGV2ZXJ5
IHByZXNlcnZlZCB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXIsIGJ1dCBub3QgYmVmb3JlLgotICAgICAg
ICAgICAgYXV0byYgc3R5bGUgPSBuZXh0SW5saW5lVGV4dEl0ZW0uc3R5bGUoKTsKLSAgICAgICAg
ICAgIHJldHVybiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQoc3R5bGUpICYmIHN0eWxlLndo
aXRlU3BhY2VDb2xsYXBzZSgpICE9IFdoaXRlU3BhY2VDb2xsYXBzZTo6QnJlYWtTcGFjZXMgJiYg
c3R5bGUubGluZUJyZWFrKCkgIT0gTGluZUJyZWFrOjpBZnRlcldoaXRlU3BhY2U7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHByZXZpb3VzLnN0eWxlKCkubGluZUJyZWFrKCkgPT0gTGluZUJyZWFr
OjpBbnl3aGVyZSB8fCBuZXh0LnN0eWxlKCkubGluZUJyZWFrKCkgPT0gTGluZUJyZWFrOjpBbnl3
aGVyZSkgewotICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkg
YXJvdW5kIGV2ZXJ5IHR5cG9ncmFwaGljIGNoYXJhY3RlciB1bml0LCBpbmNsdWRpbmcgYXJvdW5k
IGFueSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXIKLSAgICAgICAgICAgIC8vIG9yIHByZXNlcnZlZCB3
aGl0ZSBzcGFjZXMsIG9yIGluIHRoZSBtaWRkbGUgb2Ygd29yZHMuCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAvLyBCb3RoIHByZXZpb3VzIGFuZCBuZXh0IGl0
ZW1zIGFyZSBub24td2hpdGVzcGFjZSB0ZXh0LgotICAgICAgICAvLyBbdGV4dF1bdGV4dF0gOiBp
cyBhIGNvbnRpbnVvdXMgY29udGVudC4KLSAgICAgICAgLy8gW3RleHQtXVt0ZXh0XSA6IGFmdGVy
IFtoeXBoZW5dIHBvc2l0aW9uIGlzIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5LgotICAgICAgICBy
ZXR1cm4gZW5kc1dpdGhTb2Z0V3JhcE9wcG9ydHVuaXR5KGN1cnJlbnRJbmxpbmVUZXh0SXRlbSwg
bmV4dElubGluZVRleHRJdGVtKTsKLSAgICB9Ci0gICAgaWYgKHByZXZpb3VzLmxheW91dEJveCgp
LmlzTGlzdE1hcmtlckJveCgpIHx8IG5leHQubGF5b3V0Qm94KCkuaXNMaXN0TWFya2VyQm94KCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwcmV2aW91cy5pc0JveCgpIHx8IG5leHQu
aXNCb3goKSkgewotICAgICAgICAvLyBbdGV4dF1baW5saW5lIGJveCBzdGFydF1baW5saW5lIGJv
eCBlbmRdW2lubGluZSBib3hdICh0ZXh0PHNwYW4+PC9zcGFuPjxpbWc+KSA6IHRoZXJlJ3MgYSBz
b2Z0IHdyYXAgb3Bwb3J0dW5pdHkgYmV0d2VlbiB0aGUgW3RleHRdIGFuZCBbaW1nXS4KLSAgICAg
ICAgLy8gVGhlIGxpbmUgYnJlYWtpbmcgYmVoYXZpb3Igb2YgYSByZXBsYWNlZCBlbGVtZW50IG9y
IG90aGVyIGF0b21pYyBpbmxpbmUgaXMgZXF1aXZhbGVudCB0byBhbiBpZGVvZ3JhcGhpYyBjaGFy
YWN0ZXIuCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc2l6ZV90IElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTo6bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3Qgc3RhcnRJbmRleCwgY29uc3QgSW5saW5l
SXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwgY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1M
aXN0KQotewotICAgIC8vIDEuIEZpbmQgdGhlIHN0YXJ0IGNhbmRpZGF0ZSBieSBza2lwcGluZyBs
ZWFkaW5nIG5vbi1jb250ZW50IGl0ZW1zIGUuZyAiPHNwYW4+PHNwYW4+c3RhcnQiLiBPcHBvcnR1
bml0eSBpcyBhZnRlciAiPHNwYW4+PHNwYW4+Ii4KLSAgICAvLyAyLiBGaW5kIHRoZSBlbmQgY2Fu
ZGlkYXRlIGJ5IHNraXBwaW5nIG5vbi1jb250ZW50IGl0ZW1zIGluYmV0d2VlbiBlLmcuICI8c3Bh
bj48c3Bhbj5zdGFydDwvc3Bhbj5lbmQiLiBPcHBvcnR1bml0eSBpcyBhZnRlciAiPC9zcGFuPiIu
Ci0gICAgLy8gMy4gQ2hlY2sgaWYgdGhlcmUncyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBiZXR3
ZWVuIHRoZSAyIGNhbmRpZGF0ZSBpbmxpbmUgaXRlbXMgYW5kIHJlcGVhdC4KLSAgICAvLyA0LiBB
bnkgZm9yY2UgbGluZSBicmVhay9leHBsaWNpdCB3cmFwIGNvbnRlbnQgaW5iZXR3ZWVuIGlzIGNv
bnNpZGVyZWQgYXMgd3JhcCBvcHBvcnR1bml0eS4KLQotICAgIC8vIFtleC1dW2lubGluZSBib3gg
c3RhcnRdW2lubGluZSBib3ggZW5kXVtmbG9hdF1bYW1wbGVdIChleC08c3Bhbj48L3NwYW4+PGRp
diBzdHlsZT0iZmxvYXQ6bGVmdCI+PC9kaXY+YW1wbGUpLiBXcmFwIGluZGV4IGlzIGF0IFtleC1d
LgotICAgIC8vIFtleF1baW5saW5lIGJveCBzdGFydF1bYW1wLV1baW5saW5lIGJveCBzdGFydF1b
bGVdIChleDxzcGFuPmFtcC08c3Bhbj5hbXBsZSkuIFdyYXAgaW5kZXggaXMgYXQgW2FtcC1dLgot
ICAgIC8vIFtleC1dW2lubGluZSBib3ggc3RhcnRdW2xpbmUgYnJlYWtdW2FtcGxlXSAoZXgtPHNw
YW4+PGJyPmFtcGxlKS4gV3JhcCBpbmRleCBpcyBhZnRlciBbYnJdLgotICAgIGF1dG8gcHJldmlv
dXNJbmxpbmVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4geyB9OwotICAgIGZvciAo
YXV0byBpbmRleCA9IHN0YXJ0SW5kZXg7IGluZGV4IDwgbGF5b3V0UmFuZ2UuZW5kSW5kZXgoKTsg
KytpbmRleCkgewotICAgICAgICBhdXRvJiBjdXJyZW50SXRlbSA9IGlubGluZUl0ZW1MaXN0W2lu
ZGV4XTsKLSAgICAgICAgaWYgKGN1cnJlbnRJdGVtLmlzTGluZUJyZWFrKCkgfHwgY3VycmVudEl0
ZW0uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKSB7Ci0gICAgICAgICAgICAvLyBXZSBhbHdheXMg
c3RvcCBhdCBleHBsaWNpdCB3cmFwcGluZyBvcHBvcnR1bml0aWVzIGUuZy4gPGJyPi4gSG93ZXZl
ciB0aGUgd3JhcCBwb3NpdGlvbiBtYXkgYmUgYXQgbGF0ZXIgcG9zaXRpb24uCi0gICAgICAgICAg
ICAvLyBlLmcuIDxzcGFuPjxzcGFuPjxicj48L3NwYW4+PC9zcGFuPiA8LSB3cmFwIHBvc2l0aW9u
IGlzIGFmdGVyIHRoZSBzZWNvbmQgPC9zcGFuPgotICAgICAgICAgICAgLy8gYnV0IGluIGNhc2Ug
b2YgPHNwYW4+PGJyPjxzcGFuPjwvc3Bhbj48L3NwYW4+IDwtIHdyYXAgcG9zaXRpb24gaXMgcmln
aHQgYWZ0ZXIgPGJyPi4KLSAgICAgICAgICAgIGZvciAoKytpbmRleDsgaW5kZXggPCBsYXlvdXRS
YW5nZS5lbmRJbmRleCgpICYmIGlubGluZUl0ZW1MaXN0W2luZGV4XS5pc0lubGluZUJveEVuZCgp
OyArK2luZGV4KSB7IH0KLSAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoY3VycmVudEl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGN1cnJlbnRJdGVtLmlz
SW5saW5lQm94RW5kKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIG5leHRXcmFwT3Bwb3J0dW5p
dHlGb3JSdWJ5ID0gUnVieUZvcm1hdHRpbmdDb250ZXh0OjpuZXh0V3JhcE9wcG9ydHVuaXR5KGlu
ZGV4LCBwcmV2aW91c0lubGluZUl0ZW1JbmRleCwgbGF5b3V0UmFuZ2UsIGlubGluZUl0ZW1MaXN0
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gKm5leHRXcmFwT3Bwb3J0dW5pdHlGb3JSdWJ5Owot
ICAgICAgICAgICAgLy8gTmVlZCB0byBzZWUgd2hhdCBjb21lcyBuZXh0IHRvIGRlY2lkZS4KLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjdXJyZW50SXRlbS5p
c09wYXF1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGl0ZW0gaXMgaW52aXNpYmxlIHRvIGxp
bmUgYnJlYWtpbmcuIE5lZWQgdG8gcHJldGVuZCBpdCdzIG5vdCBoZXJlLgotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKGN1cnJlbnRJdGVtLmlzVGV4dCgp
IHx8IGN1cnJlbnRJdGVtLmlzQm94KCkgfHwgY3VycmVudEl0ZW0uaXNGbG9hdCgpKTsKLSAgICAg
ICAgaWYgKGN1cnJlbnRJdGVtLmlzRmxvYXQoKSkgewotICAgICAgICAgICAgLy8gV2hpbGUgZmxv
YXRzIGFyZSBub3QgcGFydCBvZiB0aGUgaW5saW5lIGNvbnRlbnQgYW5kIHRoZXkgYXJlIG5vdCBz
dXBwb3NlZCB0byBpbnRyb2R1Y2Ugc29mdCB3cmFwIG9wcG9ydHVuaXRpZXMsCi0gICAgICAgICAg
ICAvLyBlLmcuIFt0ZXh0XVtmbG9hdCBib3hdW2Zsb2F0IGJveF1bdGV4dF1bZmxvYXQgYm94XVt0
ZXh0XSBpcyBlc3NlbnRpYWxseSBqdXN0IFt0ZXh0XVt0ZXh0XVt0ZXh0XQotICAgICAgICAgICAg
Ly8gZmlndXJpbmcgb3V0IHdoZXRoZXIgYSBmbG9hdCAob3Igc2V0IG9mIGZsb2F0cykgc2hvdWxk
IHN0YXkgb24gdGhlIGxpbmUgb3Igbm90IChhbmQgaGFuZGxlIHBvdGVudGlhbGx5IG91dCBvZiBv
cmRlciBpbmxpbmUgaXRlbXMpCi0gICAgICAgICAgICAvLyBicmluZ3MgaW4gdW5uZWNlc3Nhcnkg
Y29tcGxleGl0eS4KLSAgICAgICAgICAgIC8vIEZvciBub3cgbGV0J3MgYWx3YXlzIHRyZWF0IGEg
ZmxvYXQgYXMgYSBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHkuCi0gICAgICAgICAgICBhdXRvIHdyYXBw
aW5nUG9zaXRpb24gPSBpbmRleCA9PSBzdGFydEluZGV4ID8gc3RkOjptaW4oaW5kZXggKyAxLCBs
YXlvdXRSYW5nZS5lbmRJbmRleCgpKSA6IGluZGV4OwotICAgICAgICAgICAgcmV0dXJuIHdyYXBw
aW5nUG9zaXRpb247Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFwcmV2aW91c0lubGluZUl0ZW1J
bmRleCkgewotICAgICAgICAgICAgcHJldmlvdXNJbmxpbmVJdGVtSW5kZXggPSBpbmRleDsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIC8vIEF0IHRoaXMgcG9pbnQg
cHJldmlvdXMgYW5kIGN1cnJlbnQgaXRlbXMgYXJlIG5vdCBuZWNlc3NhcmlseSBhZGphY2VudCBp
dGVtcyBlLmcgInByZXZpb3VzPHNwYW4+Y3VycmVudDwvc3Bhbj4iCi0gICAgICAgIGF1dG8mIHBy
ZXZpb3VzSXRlbSA9IGlubGluZUl0ZW1MaXN0WypwcmV2aW91c0lubGluZUl0ZW1JbmRleF07Ci0g
ICAgICAgIGlmIChpc0F0U29mdFdyYXBPcHBvcnR1bml0eShwcmV2aW91c0l0ZW0sIGN1cnJlbnRJ
dGVtKSkgewotICAgICAgICAgICAgaWYgKCpwcmV2aW91c0lubGluZUl0ZW1JbmRleCArIDEgPT0g
aW5kZXggJiYgKCFwcmV2aW91c0l0ZW0uaXNUZXh0KCkgfHwgIWN1cnJlbnRJdGVtLmlzVGV4dCgp
KSkgewotICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkga25vdyB0aGUgZXhhY3Qgc29mdCB3cmFw
IG9wcG9ydHVuaXR5IGluZGV4IHdoZW4gdGhlIHByZXZpb3VzIGFuZCBjdXJyZW50IGl0ZW1zIGFy
ZSBuZXh0IHRvIGVhY2ggb3RoZXIuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgLy8gVGhlcmUncyBhIHNvZnQgd3JhcCBvcHBvcnR1bml0
eSBiZXR3ZWVuICdwcmV2aW91c0lubGluZUl0ZW1JbmRleCcgYW5kICdpbmRleCcuCi0gICAgICAg
ICAgICAvLyBOb3cgZm9yd2FyZC1maW5kIGZyb20gdGhlIHN0YXJ0IHBvc2l0aW9uIHRvIHNlZSB3
aGVyZSB3ZSBjYW4gYWN0dWFsbHkgd3JhcC4KLSAgICAgICAgICAgIC8vIFtleC1dW2FtcGxlXSB2
cy4gW2V4LV1baW5saW5lIGJveCBzdGFydF1baW5saW5lIGJveCBlbmRdW2FtcGxlXQotICAgICAg
ICAgICAgLy8gd2hlcmUgW2V4LV0gaXMgcHJldmlvdXNJbmxpbmVJdGVtSW5kZXggYW5kIFthbXBs
ZV0gaXMgaW5kZXguCi0KLSAgICAgICAgICAgIC8vIGlubGluZSBjb250ZW50IGFuZCB0aGVpciBp
bmxpbmUgYm94ZXMgZm9ybSB1bmJyZWFrYWJsZSBjb250ZW50LgotICAgICAgICAgICAgLy8gZXgt
PHNwYW4+PC9zcGFuPmFtcGxlICAgICAgICAgICAgICAgOiB3cmFwIG9wcG9ydHVuaXR5IGlzIGFm
dGVyICJleC08c3Bhbj48L3NwYW4+Ii4KLSAgICAgICAgICAgIC8vIGV4LTxzcGFuPmFtcGxlICAg
ICAgICAgICAgICAgICAgICAgIDogd3JhcCBvcHBvcnR1bml0eSBpcyBhZnRlciAiZXgtIi4KLSAg
ICAgICAgICAgIC8vIGV4LTxzcGFuPjxzcGFuPjwvc3Bhbj48L3NwYW4+YW1wbGUgIDogd3JhcCBv
cHBvcnR1bml0eSBpcyBhZnRlciAiZXgtPHNwYW4+PHNwYW4+PC9zcGFuPjwvc3Bhbj4iLgotICAg
ICAgICAgICAgLy8gZXgtPC9zcGFuPjwvc3Bhbj5hbXBsZSAgICAgICAgICAgICAgOiB3cmFwIG9w
cG9ydHVuaXR5IGlzIGFmdGVyICJleC08L3NwYW4+PC9zcGFuPiIuCi0gICAgICAgICAgICAvLyBl
eC08L3NwYW4+PHNwYW4+YW1wbGUgICAgICAgICAgICAgICA6IHdyYXAgb3Bwb3J0dW5pdHkgaXMg
YWZ0ZXIgImV4LTwvc3Bhbj4iLgotICAgICAgICAgICAgLy8gZXgtPHNwYW4+PHNwYW4+YW1wbGUg
ICAgICAgICAgICAgICAgOiB3cmFwIG9wcG9ydHVuaXR5IGlzIGFmdGVyICJleC0iLgotICAgICAg
ICAgICAgc3RydWN0IElubGluZUJveFBvc2l0aW9uIHsKLSAgICAgICAgICAgICAgICBjb25zdCBC
b3gqIGlubGluZUJveCB7IG51bGxwdHIgfTsKLSAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXgg
eyAwIH07Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgVmVjdG9yPElubGluZUJveFBvc2l0
aW9uPiBpbmxpbmVCb3hTdGFjazsKLSAgICAgICAgICAgIGF1dG8gc3RhcnQgPSAqcHJldmlvdXNJ
bmxpbmVJdGVtSW5kZXg7Ci0gICAgICAgICAgICBhdXRvIGVuZCA9IGluZGV4OwotICAgICAgICAg
ICAgLy8gU29mdCB3cmFwIG9wcG9ydHVuaXR5IGlzIGF0IHRoZSBmaXJzdCBpbmxpbmUgYm94IHRo
YXQgZW5jbG9zZXMgdGhlIHRyYWlsaW5nIGNvbnRlbnQuCi0gICAgICAgICAgICBmb3IgKGF1dG8g
Y2FuZGlkYXRlSW5kZXggPSBzdGFydCArIDE7IGNhbmRpZGF0ZUluZGV4IDwgZW5kOyArK2NhbmRp
ZGF0ZUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IGlubGluZUl0
ZW1MaXN0W2NhbmRpZGF0ZUluZGV4XTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoKGlubGluZUl0
ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSB8fCBp
bmxpbmVJdGVtLmlzT3BhcXVlKCkpICYmICFpbmxpbmVJdGVtLmxheW91dEJveCgpLmlzUnVieSgp
KTsKLSAgICAgICAgICAgICAgICBpZiAoaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGlubGluZUJveFN0YWNrLmFwcGVuZCh7ICZpbmxpbmVJdGVtLmxh
eW91dEJveCgpLCBjYW5kaWRhdGVJbmRleCB9KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChp
bmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgJiYgIWlubGluZUJveFN0YWNrLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICAgICAgaW5saW5lQm94U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGlubGluZUJveFN0YWNrLmlzRW1wdHkoKSA/IGlu
ZGV4IDogaW5saW5lQm94U3RhY2suZmlyc3QoKS5pbmRleDsKLSAgICAgICAgfQotICAgICAgICBw
cmV2aW91c0lubGluZUl0ZW1JbmRleCA9IGluZGV4OwotICAgIH0KLSAgICByZXR1cm4gbGF5b3V0
UmFuZ2UuZW5kSW5kZXgoKTsKLX0KLQotY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lTGF5b3V0U3RhdGUoKSBjb25zdAotewotICAgIHJldHVy
biBmb3JtYXR0aW5nQ29udGV4dCgpLmlubGluZUxheW91dFN0YXRlKCk7Ci19Ci0KLX0KLX0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNhZGM5ZjI0NmFiLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJGbG9hdGluZ0NvbnRleHQuaCIKLSNpbmNs
dWRlICJGb3JtYXR0aW5nR2VvbWV0cnkuaCIKLSNpbmNsdWRlICJJbmxpbmVMaW5lQnVpbGRlci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsKLQotY2xhc3MgRmxv
YXRpbmdDb250ZXh0OwotY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7Ci1jbGFzcyBJbmxp
bmVMZXZlbEJveDsKLQotY2xhc3MgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5IDogcHVibGljIEZv
cm1hdHRpbmdHZW9tZXRyeSB7Ci1wdWJsaWM6Ci0gICAgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5
KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7Ci0KLSAgICBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxUb3BGb3JOZXh0TGluZShjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiwgY29uc3QgSW5s
aW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmKSBjb25zdDsK
LQotICAgIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gaW5saW5lQmxvY2tDb250ZW50SGVpZ2h0QW5k
TWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92
ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyYpIGNvbnN0OwotICAgIENvbnRlbnRXaWR0aEFuZE1hcmdp
biBpbmxpbmVCbG9ja0NvbnRlbnRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcyYpIGNv
bnN0OwotCi0gICAgZW51bSBjbGFzcyBJc0ludHJpbnNpY1dpZHRoTW9kZSA6IGJvb2wgeyBObywg
WWVzIH07Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBjb21wdXRlZFRleHRJbmRlbnQoSXNJbnRyaW5z
aWNXaWR0aE1vZGUsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5l
QnJlYWssIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpIGNvbnN0OwotCi0gICAgYm9v
bCBpbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JikgY29u
c3Q7Ci0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGluaXRpYWxMaW5lSGVpZ2h0KGJvb2wgaXNGaXJz
dExpbmUpIGNvbnN0OwotCi0gICAgRmxvYXRpbmdDb250ZXh0OjpDb25zdHJhaW50cyBmbG9hdENv
bnN0cmFpbnRzRm9yTGluZShJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsVG9wLCBJbmxpbmVM
YXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmKSBj
b25zdDsKLQotICAgIHN0YXRpYyBJbmxpbmVSZWN0IGZsaXBWaXN1YWxSZWN0VG9Mb2dpY2FsRm9y
V3JpdGluZ01vZGUoY29uc3QgSW5saW5lUmVjdCYgdmlzdWFsUmVjdCwgV3JpdGluZ01vZGUpOwot
Ci0gICAgdm9pZCBhZGp1c3RNYXJnaW5TdGFydEZvckxpc3RNYXJrZXIoY29uc3QgRWxlbWVudEJv
eCYsIExheW91dFVuaXQgbmVzdGVkTGlzdE1hcmtlck1hcmdpblN0YXJ0LCBJbmxpbmVMYXlvdXRV
bml0IHJvb3RJbmxpbmVCb3hPZmZzZXQpIGNvbnN0OwotCi0gICAgc3RhdGljIElubGluZUxheW91
dFVuaXQgaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0
eWxlLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHQsIElubGluZUxheW91dFVu
aXQgbGluZUxvZ2ljYWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBoYW5naW5nVHJhaWxpbmdXaWR0
aCwgY29uc3QgTGluZTo6UnVuTGlzdCYgcnVucywgYm9vbCBpc0xhc3RMaW5lLCBzdGQ6Om9wdGlv
bmFsPFRleHREaXJlY3Rpb24+IGlubGluZUJhc2VEaXJlY3Rpb25PdmVycmlkZSA9IHN0ZDo6bnVs
bG9wdCk7Ci0KLSAgICBzdGF0aWMgSW5saW5lSXRlbVBvc2l0aW9uIGxlYWRpbmdJbmxpbmVJdGVt
UG9zaXRpb25Gb3JOZXh0TGluZShJbmxpbmVJdGVtUG9zaXRpb24gbGluZUNvbnRlbnRFbmQsIHN0
ZDo6b3B0aW9uYWw8SW5saW5lSXRlbVBvc2l0aW9uPiBwcmV2aW91c0xpbmVUcmFpbGluZ0lubGlu
ZUl0ZW1Qb3NpdGlvbiwgSW5saW5lSXRlbVBvc2l0aW9uIGxheW91dFJhbmdlRW5kKTsKLQotICAg
IElubGluZUxheW91dFVuaXQgaW5saW5lSXRlbVdpZHRoKGNvbnN0IElubGluZUl0ZW0mLCBJbmxp
bmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCwgYm9vbCB1c2VGaXJzdExpbmVTdHlsZSkg
Y29uc3Q7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG5leHRXcmFwT3Bwb3J0dW5pdHkoc2l6ZV90IHN0
YXJ0SW5kZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIGNvbnN0IElubGlu
ZUl0ZW1MaXN0Jik7Ci0KLXByaXZhdGU6Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TGVm
dEFmdGVyTGFzdExpbmUoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jiwgc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBsYXN0TGluZUxvZ2ljYWxCb3R0b20sIGNvbnN0IEZs
b2F0aW5nQ29udGV4dCYpIGNvbnN0OwotCi0gICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ+KEZvcm1hdHRpbmdHZW9tZXRyeTo6Zm9ybWF0dGluZ0NvbnRleHQoKSk7
IH0KLSAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5lTGF5b3V0U3RhdGUoKSBjb25z
dDsKLX07Ci0KLX0KLX0KLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19MQVlPVVRfRk9STUFUVElO
R19HRU9NRVRSWShJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnksIGlzSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5KCkpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCmluZGV4IDdhM2I2NTg4
NWI3ZS4uNmZjZmY2ZDlkYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKQEAg
LTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMaW5lQm94OwogICAg
IGZyaWVuZCBjbGFzcyBMaW5lQm94QnVpbGRlcjsKICAgICBmcmllbmQgY2xhc3MgTGluZUJveFZl
cnRpY2FsQWxpZ25lcjsKLSAgICBmcmllbmQgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5
OworICAgIGZyaWVuZCBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nVXRpbHM7CiAKICAgICBjb25zdCBJ
bmxpbmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3Q7IH0K
ICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX2xvZ2lj
YWxSZWN0LnRvcCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hWZXJ0aWNhbEFsaWduZXIuY3BwCmluZGV4IDI4YzMzNWIwZmY4Mi4uYTg3OTBlNDNkYjljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGln
bmVyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogTGluZUJveFZl
cnRpY2FsQWxpZ25lcjo6TGluZUJveFZlcnRpY2FsQWxpZ25lcihjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiAgICAgOiBtX2lubGluZUZvcm1h
dHRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQotICAgICwgbV9pbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCisgICAgLCBtX2lubGluZUZv
cm1hdHRpbmdVdGlscyhpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKIHsKIH0KIApAQCAtMTM3LDcg
KzEzNyw3IEBAIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50
IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMCiAgICAgLy8gMi4gQ29tcHV0ZSB0aGUg
YmFzZWxpbmUvbG9naWNhbCB0b3AgcG9zaXRpb24gb2YgdGhlIHJvb3QgaW5saW5lIGJveC4gQWxp
Z25lZCBib3hlcyBwdXNoIHRoZSByb290IGlubGluZSBib3ggYXJvdW5kIGluc2lkZSB0aGUgbGlu
ZSBib3guCiAgICAgLy8gMy4gRmluYWxseSBhbGlnbiB0aGUgaW5saW5lIGxldmVsIGJveGVzIHVz
aW5nIChtb3N0bHkpIG5vcm1hbCBpbmxpbmUgbGV2ZWwgYm94IGdlb21ldHJpZXMuCiAgICAgYXV0
byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElubGluZUJveCgpOwotICAgIGF1dG8mIGZv
cm1hdHRpbmdHZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOworICAgIGF1dG8m
IGZvcm1hdHRpbmdVdGlscyA9IHRoaXMtPmZvcm1hdHRpbmdVdGlscygpOwogICAgIGF1dG8gY29u
dGVudEhhc0Fubm90YXRpb24gPSByb290SW5saW5lQm94Lmhhc0Fubm90YXRpb24oKTsKIAogICAg
IC8vIExpbmUgYm94IGhlaWdodCBjb21wdXRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbGF5b3V0IGJv
dW5kcyBvZiB0aGUgaW5saW5lIGJveGVzIGFuZCBub3QgdGhlaXIgbG9naWNhbCAoYXNjZW50L2Rl
c2NlbnQpIGRpbWVuc2lvbnMuCkBAIC0xNDksNyArMTQ5LDcgQEAgTGluZUJveFZlcnRpY2FsQWxp
Z25lcjo6TGluZUJveEFsaWdubWVudENvbnRlbnQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29t
cHV0ZUwKIAogICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6Om9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IHsgfTsKICAgICBhdXRvIG1heGltdW1Mb2dpY2FsQm90dG9tID0gc3RkOjpv
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07Ci0gICAgaWYgKGZvcm1hdHRpbmdHZW9tZXRy
eS5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVCb3gpKSB7CisgICAgaWYg
KGZvcm1hdHRpbmdVdGlscy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVC
b3gpKSB7CiAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IH07
CiAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0gcm9vdElubGluZUJveC5sYXlvdXRCb3Vu
ZHMoKS5oZWlnaHQoKTsKICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRv
bU1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIEFic29sdXRlVG9wQW5kQm90dG9tIHsgKm1pbmltdW1M
b2dpY2FsVG9wLCAqbWF4aW11bUxvZ2ljYWxCb3R0b20gfSk7CkBAIC0yMjQsNyArMjI0LDcgQEAg
TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6TGluZUJveEFsaWdubWVudENvbnRlbnQgTGluZUJveFZl
cnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUwKICAgICAgICAgYXV0byBhYnNvbHV0ZUxvZ2ljYWxCb3R0
b20gPSBhYnNvbHV0ZUxvZ2ljYWxUb3AgKyBsYXlvdXRCb3VuZHMuaGVpZ2h0KCk7CiAgICAgICAg
IGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZpbmxpbmVMZXZlbEJv
eCwgQWJzb2x1dGVUb3BBbmRCb3R0b20geyBhYnNvbHV0ZUxvZ2ljYWxUb3AsIGFic29sdXRlTG9n
aWNhbEJvdHRvbSB9KTsKICAgICAgICAgLy8gU3RyZXRjaCB0aGUgbWluL21heCBhYnNvbHV0ZSB2
YWx1ZXMgaWYgYXBwbGljYWJsZS4KLSAgICAgICAgaWYgKGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxp
bmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94KSkgeworICAgICAgICBpZiAo
Zm9ybWF0dGluZ1V0aWxzLmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxC
b3gpKSB7CiAgICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IHN0ZDo6bWluKG1pbmltdW1M
b2dpY2FsVG9wLnZhbHVlX29yKGFic29sdXRlTG9naWNhbFRvcCksIGFic29sdXRlTG9naWNhbFRv
cCk7CiAgICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1heGltdW1M
b2dpY2FsQm90dG9tLnZhbHVlX29yKGFic29sdXRlTG9naWNhbEJvdHRvbSksIGFic29sdXRlTG9n
aWNhbEJvdHRvbSk7CiAgICAgICAgIH0KQEAgLTIzNiw3ICsyMzYsNyBAQCBMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpMaW5lQm94QWxpZ25tZW50Q29udGVudCBMaW5lQm94VmVydGljYWxBbGlnbmVy
Ojpjb21wdXRlTAogICAgIGF1dG8gdG9wQWxpZ25lZEJveGVzTWF4aW11bUhlaWdodCA9IHN0ZDo6
b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwogICAgIGF1dG8gYm90dG9tQWxpZ25lZEJv
eGVzTWF4aW11bUhlaWdodCA9IHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9Owog
ICAgIGZvciAoYXV0byogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94UmVs
YXRpdmVJbmxpbmVMZXZlbEJveGVzKSB7Ci0gICAgICAgIGlmICghZm9ybWF0dGluZ0dlb21ldHJ5
LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goKmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVs
Qm94KSkKKyAgICAgICAgaWYgKCFmb3JtYXR0aW5nVXRpbHMuaW5saW5lTGV2ZWxCb3hBZmZlY3Rz
TGluZUJveCgqbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3gpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIC8vIFRoaXMgbGluZSBib3ggcmVsYXRpdmUgYWxpZ25lZCBpbmxpbmUg
bGV2ZWwgYm94IHN0cmV0Y2hlcyB0aGUgbGluZSBib3guCiAgICAgICAgIGF1dG8gaW5saW5lTGV2
ZWxCb3hIZWlnaHQgPSBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuaGVpZ2h0KCk7CkBAIC0yNTYsMTggKzI1NiwxOCBAQCBMaW5lQm94VmVydGljYWxBbGlnbmVy
OjpMaW5lQm94QWxpZ25tZW50Q29udGVudCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRl
TAogdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlUm9vdElubGluZUJveFZlcnRp
Y2FsUG9zaXRpb24oTGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZUJveEFsaWdubWVudENvbnRl
bnQmIGxpbmVCb3hBbGlnbm1lbnRDb250ZW50KSBjb25zdAogewogICAgIGF1dG8mIHJvb3RJbmxp
bmVCb3ggPSBsaW5lQm94LnJvb3RJbmxpbmVCb3goKTsKLSAgICBhdXRvJiBmb3JtYXR0aW5nR2Vv
bWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKKyAgICBhdXRvJiBmb3JtYXR0aW5n
VXRpbHMgPSB0aGlzLT5mb3JtYXR0aW5nVXRpbHMoKTsKICAgICBhdXRvIGhhc1RvcEFsaWduZWRJ
bmxpbmVMZXZlbEJveCA9IGZhbHNlOwogCiAgICAgSGFzaE1hcDxjb25zdCBJbmxpbmVMZXZlbEJv
eCosIElubGluZUxheW91dFVuaXQ+IGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNl
dE1hcDsKICAgICBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXAuYWRkKCZy
b290SW5saW5lQm94LCBJbmxpbmVMYXlvdXRVbml0IHsgfSk7CiAKICAgICBhdXRvIG1heGltdW1U
b3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gc3RkOjpvcHRpb25hbDxJbmxpbmVM
YXlvdXRVbml0PiB7IH07Ci0gICAgaWYgKGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVMZXZlbEJv
eEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVCb3gpKQorICAgIGlmIChmb3JtYXR0aW5nVXRpbHMu
aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChyb290SW5saW5lQm94KSkKICAgICAgICAgbWF4
aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSByb290SW5saW5lQm94Lmxh
eW91dEJvdW5kcygpLmFzY2VudDsKIAogICAgIGF1dG8gYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0
aWNhbFBvc2l0aW9uID0gWyZdKGF1dG8mIGlubGluZUxldmVsQm94KSB7Ci0gICAgICAgIHJldHVy
biBmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChpbmxpbmVM
ZXZlbEJveCk7CisgICAgICAgIHJldHVybiBmb3JtYXR0aW5nVXRpbHMuaW5saW5lTGV2ZWxCb3hB
ZmZlY3RzTGluZUJveChpbmxpbmVMZXZlbEJveCk7CiAgICAgfTsKIAogICAgIGZvciAoYXV0byYg
aW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKQEAg
LTM3NSw3ICszNzUsNyBAQCBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBMaW5lQm94
VmVydGljYWxBbGlnbmVyOjpsYXlvdXRCb3VuZHNGb3JJbmxpbmVCbwogICAgIC8vIGlubGluZSBl
bGVtZW50cyB3aG9zZSBjb21wdXRlZCB2ZXJ0aWNhbC1hbGlnbiB2YWx1ZSBpcyBub3QgdG9wIG9y
IGJvdHRvbS4KICAgICAvLyBUaGUgdG9wIG9mIHRoZSBhbGlnbmVkIHN1YnRyZWUgaXMgdGhlIGhp
Z2hlc3Qgb2YgdGhlIHRvcHMgb2YgdGhlIGJveGVzIGluIHRoZSBzdWJ0cmVlLCBhbmQgdGhlIGJv
dHRvbSBpcyBhbmFsb2dvdXMuCiAgICAgQVNTRVJUKG5vblJvb3RJbmxpbmVMZXZlbEJveGVzW2lu
bGluZUJveEluZGV4XS5pc0lubGluZUJveCgpKTsKLSAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0
cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nVXRp
bHMgPSB0aGlzLT5mb3JtYXR0aW5nVXRpbHMoKTsKICAgICBhdXRvIGVuY2xvc2luZ0xheW91dEJv
dW5kcyA9IElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHsgfTsKICAgICBhdXRvJiBp
bmxpbmVCb3hQYXJlbnQgPSBub25Sb290SW5saW5lTGV2ZWxCb3hlc1tpbmxpbmVCb3hJbmRleF0u
bGF5b3V0Qm94KCkucGFyZW50KCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSBpbmxpbmVCb3hJ
bmRleCArIDE7IGluZGV4IDwgbm9uUm9vdElubGluZUxldmVsQm94ZXMuc2l6ZSgpOyArK2luZGV4
KSB7CkBAIC0zODQsNyArMzg0LDcgQEAgSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQg
TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm8KICAgICAgICAg
ICAgIC8vIFdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBkZXNjZW5kYW50IGxpc3QuCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoIWZvcm1hdHRpbmdHZW9tZXRyeS5p
bmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveCkgfHwg
ZGVzY2VuZGFudElubGluZUxldmVsQm94Lmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKQor
ICAgICAgICBpZiAoIWZvcm1hdHRpbmdVdGlscy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94
KGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveCkgfHwgZGVzY2VuZGFudElubGluZUxldmVsQm94Lmhh
c0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGVuY2xvc2luZ0xheW91dEJvdW5kcy5hc2NlbnQgPSBzdGQ6Om1heChkZXNjZW5kYW50SW5s
aW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50LCBlbmNsb3NpbmdMYXlvdXRCb3VuZHMu
YXNjZW50KTsKICAgICAgICAgZW5jbG9zaW5nTGF5b3V0Qm91bmRzLmRlc2NlbnQgPSBzdGQ6Om1h
eChkZXNjZW5kYW50SW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2VudCwgZW5jbG9z
aW5nTGF5b3V0Qm91bmRzLmRlc2NlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25l
ci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oCmluZGV4IGJiNmU2ZDhiMWQyMy4uMzYyM2VlOGNh
NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2Fs
QWxpZ25lci5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5LmgiCisjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewpAQCAtNTYsMTQgKzU2LDE0IEBAIHByaXZhdGU6
CiAgICAgSW5saW5lTGF5b3V0VW5pdCBhZGp1c3RGb3JBbm5vdGF0aW9uSWZOZWVkZWQoTGluZUJv
eCYsIElubGluZUxheW91dFVuaXQgbGluZUJveEhlaWdodCkgY29uc3Q7CiAgICAgSW5saW5lTGV2
ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgbGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZShj
b25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveExpc3QmIG5vblJvb3RJbmxpbmVMZXZlbEJveGVz
LCBzaXplX3QgaW5saW5lQm94SW5kZXgpIGNvbnN0OwogCi0gICAgY29uc3QgSW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5JiBmb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX2lubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeTsgfQorICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdVdGlscyYg
Zm9ybWF0dGluZ1V0aWxzKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nVXRpbHM7
IH0KICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9CiAgICAgY29uc3Qg
RWxlbWVudEJveCYgcm9vdEJveCgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCku
cm9vdCgpOyB9CiAgICAgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5pbmxpbmVMYXlvdXRTdGF0ZSgp
OyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ7Ci0gICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5
IG1faW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OworICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdV
dGlscyBtX2lubGluZUZvcm1hdHRpbmdVdGlsczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCAzNDcwZTI3ZGZiMTQuLjUwNTI5MmYyZTQ0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogCiAjaW5jbHVkZSAiQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIgogI2luY2x1ZGUgIklu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5LmgiCisjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgiCiAjaW5jbHVkZSAiSW5s
aW5lUXVpcmtzLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94
R2VvbWV0cnkuaCIKQEAgLTI1MSw3ICsyNTEsNyBAQCBMaW5lTGF5b3V0UmVzdWx0IExpbmVCdWls
ZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYgbGluZUlucHV0LCBjbwog
CiAgICAgYXV0byBpc0xhc3RMaW5lID0gaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KGxpbmVD
b250ZW50LCBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZS5lbmRJbmRleCgpLCAhcmVzdWx0LnJ1
bnMuaXNFbXB0eSgpKTsKICAgICBhdXRvIGlubGluZUJhc2VEaXJlY3Rpb24gPSAhcmVzdWx0LnJ1
bnMuaXNFbXB0eSgpID8gaW5saW5lQmFzZURpcmVjdGlvbkZvckxpbmVDb250ZW50KHJlc3VsdC5y
dW5zLCByb290U3R5bGUoKSwgbV9wcmV2aW91c0xpbmUpIDogVGV4dERpcmVjdGlvbjo6TFRSOwot
ICAgIGF1dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gIXJlc3VsdC5ydW5zLmlzRW1wdHkoKSA/IElu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChyb290U3R5
bGUoKSwgcmVzdWx0LmNvbnRlbnRMb2dpY2FsUmlnaHQsIG1fbGluZUxvZ2ljYWxSZWN0LndpZHRo
KCksIHJlc3VsdC5oYW5naW5nVHJhaWxpbmdDb250ZW50V2lkdGgsIHJlc3VsdC5ydW5zLCBpc0xh
c3RMaW5lLCBpbmxpbmVCYXNlRGlyZWN0aW9uKSA6IDAuZjsKKyAgICBhdXRvIGNvbnRlbnRMb2dp
Y2FsTGVmdCA9ICFyZXN1bHQucnVucy5pc0VtcHR5KCkgPyBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6
Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQocm9vdFN0eWxlKCksIHJlc3VsdC5jb250ZW50TG9n
aWNhbFJpZ2h0LCBtX2xpbmVMb2dpY2FsUmVjdC53aWR0aCgpLCByZXN1bHQuaGFuZ2luZ1RyYWls
aW5nQ29udGVudFdpZHRoLCByZXN1bHQucnVucywgaXNMYXN0TGluZSwgaW5saW5lQmFzZURpcmVj
dGlvbikgOiAwLmY7CiAgICAgVmVjdG9yPGludDMyX3Q+IHZpc3VhbE9yZGVyTGlzdDsKICAgICBp
ZiAocmVzdWx0LmNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nKQogICAgICAgICBjb21wdXRlZFZp
c3VhbE9yZGVyKHJlc3VsdC5ydW5zLCB2aXN1YWxPcmRlckxpc3QpOwpAQCAtNTI1LDggKzUyNSw4
IEBAIExpbmVDb250ZW50IExpbmVCdWlsZGVyOjpwbGFjZUlubGluZUFuZEZsb2F0Q29udGVudChj
b25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzCiAKIExpbmVCdWlsZGVyOjpVc2VkQ29uc3RyYWlu
dHMgTGluZUJ1aWxkZXI6OmluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSW5saW5lUmVj
dCYgaW5pdGlhbExpbmVMb2dpY2FsUmVjdCwgc3RkOjpvcHRpb25hbDxib29sPiBwcmV2aW91c0xp
bmVFbmRzV2l0aExpbmVCcmVhaykgY29uc3QKIHsKLSAgICBhdXRvIGlzSW50cmluc2ljV2lkdGhN
b2RlID0gaXNJbkludHJpbnNpY1dpZHRoTW9kZSgpID8gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5
OjpJc0ludHJpbnNpY1dpZHRoTW9kZTo6WWVzIDogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpJ
c0ludHJpbnNpY1dpZHRoTW9kZTo6Tm87Ci0gICAgYXV0byB0ZXh0SW5kZW50ID0gZm9ybWF0dGlu
Z0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZFRleHRJbmRlbnQoaXNJbnRy
aW5zaWNXaWR0aE1vZGUsIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrLCBpbml0aWFsTGlu
ZUxvZ2ljYWxSZWN0LndpZHRoKCkpOworICAgIGF1dG8gaXNJbnRyaW5zaWNXaWR0aE1vZGUgPSBp
c0luSW50cmluc2ljV2lkdGhNb2RlKCkgPyBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OklzSW50cmlu
c2ljV2lkdGhNb2RlOjpZZXMgOiBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OklzSW50cmluc2ljV2lk
dGhNb2RlOjpObzsKKyAgICBhdXRvIHRleHRJbmRlbnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZv
cm1hdHRpbmdVdGlscygpLmNvbXB1dGVkVGV4dEluZGVudChpc0ludHJpbnNpY1dpZHRoTW9kZSwg
cHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJlYWssIGluaXRpYWxMaW5lTG9naWNhbFJlY3Qud2lk
dGgoKSk7CiAKICAgICByZXR1cm4gZmxvYXRDb25zdHJhaW5lZFJlY3QoaW5pdGlhbExpbmVMb2dp
Y2FsUmVjdCwgdGV4dEluZGVudCk7CiB9CkBAIC02MDYsNyArNjA2LDcgQEAgdm9pZCBMaW5lQnVp
bGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0
ZSwgc2l6ZV90IGMKICAgICAvLyAxLiBTaW1wbHkgYWRkIGFueSBvdmVyZmxvdyBjb250ZW50IGZy
b20gdGhlIHByZXZpb3VzIGxpbmUgdG8gdGhlIGNhbmRpZGF0ZSBjb250ZW50LiBJdCdzIGFsd2F5
cyBhIHRleHQgY29udGVudC4KICAgICAvLyAyLiBGaW5kIHRoZSBuZXh0IHNvZnQgd3JhcCBwb3Np
dGlvbiBvciBleHBsaWNpdCBsaW5lIGJyZWFrLgogICAgIC8vIDMuIENvbGxlY3QgZmxvYXRzIGJl
dHdlZW4gdGhlIGlubGluZSBjb250ZW50LgotICAgIGF1dG8gc29mdFdyYXBPcHBvcnR1bml0eUlu
ZGV4ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5uZXh0V3JhcE9w
cG9ydHVuaXR5KGN1cnJlbnRJbmxpbmVJdGVtSW5kZXgsIGxheW91dFJhbmdlLCBtX2lubGluZUl0
ZW1MaXN0KTsKKyAgICBhdXRvIHNvZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCA9IGZvcm1hdHRpbmdD
b250ZXh0KCkuZm9ybWF0dGluZ1V0aWxzKCkubmV4dFdyYXBPcHBvcnR1bml0eShjdXJyZW50SW5s
aW5lSXRlbUluZGV4LCBsYXlvdXRSYW5nZSwgbV9pbmxpbmVJdGVtTGlzdCk7CiAgICAgLy8gc29m
dFdyYXBPcHBvcnR1bml0eUluZGV4ID09IGxheW91dFJhbmdlLmVuZCBtZWFucyB3ZSBkb24ndCBo
YXZlIGFueSB3cmFwIG9wcG9ydHVuaXR5IGluIHRoaXMgY29udGVudC4KICAgICBBU1NFUlQoc29m
dFdyYXBPcHBvcnR1bml0eUluZGV4IDw9IGxheW91dFJhbmdlLmVuZEluZGV4KCkpOwogCkBAIC02
MTQsNyArNjE0LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUo
TGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGMKICAgICBpZiAoaXNMZWFkaW5n
UGFydGlhQ29udGVudCkgewogICAgICAgICBBU1NFUlQoIW1fb3ZlcmZsb3dpbmdMb2dpY2FsV2lk
dGgpOwogICAgICAgICAvLyBIYW5kbGUgbGVhZGluZyBwYXJ0aWFsIGNvbnRlbnQgZmlyc3QgKG92
ZXJmbG93aW5nIHRleHQgZnJvbSB0aGUgcHJldmlvdXMgbGluZSkuCi0gICAgICAgIGF1dG8gaXRl
bVdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5pbmxpbmVJ
dGVtV2lkdGgoKm1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCwg
aXNGaXJzdEZvcm1hdHRlZExpbmUoKSk7CisgICAgICAgIGF1dG8gaXRlbVdpZHRoID0gZm9ybWF0
dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lkdGgoKm1fcGFydGlh
bExlYWRpbmdUZXh0SXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCwgaXNGaXJzdEZvcm1hdHRlZExp
bmUoKSk7CiAgICAgICAgIGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudC5hcHBlbmRJbmxpbmVJ
dGVtKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIG1fcGFydGlhbExlYWRpbmdUZXh0SXRlbS0+
c3R5bGUoKSwgaXRlbVdpZHRoKTsKICAgICAgICAgY3VycmVudExvZ2ljYWxSaWdodCArPSBpdGVt
V2lkdGg7CiAgICAgICAgICsrY3VycmVudElubGluZUl0ZW1JbmRleDsKQEAgLTY1Miw3ICs2NTIs
NyBAQCB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlk
YXRlJiBsaW5lQ2FuZGlkYXRlLCBzaXplX3QgYwogICAgICAgICB9CiAgICAgICAgIGlmIChpbmxp
bmVJdGVtLmlzVGV4dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRv
d25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKTsKLSAgICAgICAgICAgIGF1dG8gbG9n
aWNhbFdpZHRoID0gbV9vdmVyZmxvd2luZ0xvZ2ljYWxXaWR0aCA/ICpzdGQ6OmV4Y2hhbmdlKG1f
b3ZlcmZsb3dpbmdMb2dpY2FsV2lkdGgsIHN0ZDo6bnVsbG9wdCkgOiBmb3JtYXR0aW5nQ29udGV4
dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmlubGluZUl0ZW1XaWR0aChpbmxpbmVUZXh0SXRlbSwg
Y3VycmVudExvZ2ljYWxSaWdodCwgaXNGaXJzdEZvcm1hdHRlZExpbmUoKSk7CisgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxXaWR0aCA9IG1fb3ZlcmZsb3dpbmdMb2dpY2FsV2lkdGggPyAqc3RkOjpl
eGNoYW5nZShtX292ZXJmbG93aW5nTG9naWNhbFdpZHRoLCBzdGQ6Om51bGxvcHQpIDogZm9ybWF0
dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lVGV4
dEl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQsIGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkpOwogICAg
ICAgICAgICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmFwcGVuZElubGluZUl0ZW0oaW5s
aW5lVGV4dEl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgLy8gV29yZCBz
cGFjaW5nIGRvZXMgbm90IG1ha2UgdGhlIHJ1biBsb25nZXIsIGJ1dCBpdCBwcm9kdWNlcyBhbiBv
ZmZzZXQgaW5zdGVhZC4gU2VlIExpbmU6OmFwcGVuZFRleHRDb250ZW50IGFzIHdlbGwuCiAgICAg
ICAgICAgICBjdXJyZW50TG9naWNhbFJpZ2h0ICs9IGxvZ2ljYWxXaWR0aCArIChpbmxpbmVUZXh0
SXRlbS5pc1dvcmRTZXBhcmF0b3IoKSA/IHN0eWxlLmZvbnRDYXNjYWRlKCkud29yZFNwYWNpbmco
KSA6IDAuZik7CkBAIC02NjEsNyArNjYxLDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRl
Q29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGMKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlz
SW5saW5lQm94U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5n
R2VvbWV0cnkoKS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxSaWdo
dCwgaXNGaXJzdEZvcm1hdHRlZExpbmUoKSk7CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0
aCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ1V0aWxzKCkuaW5saW5lSXRlbVdpZHRo
KGlubGluZUl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQsIGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkp
OwogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspCiAgICAgICAgICAgICBpZiAo
c3R5bGUuYm94RGVjb3JhdGlvbkJyZWFrKCkgPT0gQm94RGVjb3JhdGlvbkJyZWFrOjpDbG9uZSkg
ewogICAgICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUl0ZW0ubGF5b3V0Qm94
KCk7CkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVu
dEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGMKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpbmxpbmVJdGVtLmlzQm94KCkp
IHsKLSAgICAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQoKS5m
b3JtYXR0aW5nR2VvbWV0cnkoKS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExv
Z2ljYWxSaWdodCwgaXNGaXJzdEZvcm1hdHRlZExpbmUoKSk7CisgICAgICAgICAgICBhdXRvIGxv
Z2ljYWxXaWR0aCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ1V0aWxzKCkuaW5saW5l
SXRlbVdpZHRoKGlubGluZUl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQsIGlzRmlyc3RGb3JtYXR0
ZWRMaW5lKCkpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdoaWxlIHRoZSBsaW5lIGJyZWFraW5n
IHJlbGF0ZWQgcHJvcGVydGllcyBmb3IgYXRvbWljIGxldmVsIGJveGVzIGRvIG5vdCBkZXBlbmQg
b24gdGhlIGxpbmUgaW5kZXggKGZpcnN0IGxpbmUgc3R5bGUpIGl0J2QgYmUgZ3JlYXQgdG8gZmln
dXJlIG91dCB0aGUgY29ycmVjdCBzdHlsZSB0byBwYXNzIGluLgogICAgICAgICAgICAgbGluZUNh
bmRpZGF0ZS5pbmxpbmVDb250ZW50LmFwcGVuZElubGluZUl0ZW0oaW5saW5lSXRlbSwgaW5saW5l
SXRlbS5sYXlvdXRCb3goKS5wYXJlbnQoKS5zdHlsZSgpLCBsb2dpY2FsV2lkdGgpOwogICAgICAg
ICAgICAgY3VycmVudExvZ2ljYWxSaWdodCArPSBsb2dpY2FsV2lkdGg7CkBAIC03NDUsNyArNzQ1
LDcgQEAgTGluZUJ1aWxkZXI6OlVzZWRDb25zdHJhaW50cyBMaW5lQnVpbGRlcjo6ZmxvYXRDb25z
dHJhaW5lZFJlY3QoY29uc3QgSW5saW5lUmVjdCYKICAgICAgICAgaWYgKGlzSW5JbnRyaW5zaWNX
aWR0aE1vZGUoKSB8fCBwbGFjZWRGbG9hdHMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4geyBsb2dpY2FsUmVjdCwgbWFyZ2luU3RhcnQsIHsgfSB9OwogCi0gICAgICAgIGF1dG8gY29u
c3RyYWludHMgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmZsb2F0
Q29uc3RyYWludHNGb3JMaW5lKGxvZ2ljYWxSZWN0LnRvcCgpLCBsb2dpY2FsUmVjdC5oZWlnaHQo
KSwgRmxvYXRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ0NvbnRleHQoKSwgcGxhY2VkRmxvYXRzKCkg
fSk7CisgICAgICAgIGF1dG8gY29uc3RyYWludHMgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1h
dHRpbmdVdGlscygpLmZsb2F0Q29uc3RyYWludHNGb3JMaW5lKGxvZ2ljYWxSZWN0LnRvcCgpLCBs
b2dpY2FsUmVjdC5oZWlnaHQoKSwgRmxvYXRpbmdDb250ZXh0IHsgZm9ybWF0dGluZ0NvbnRleHQo
KSwgcGxhY2VkRmxvYXRzKCkgfSk7CiAgICAgICAgIGlmICghY29uc3RyYWludHMubGVmdCAmJiAh
Y29uc3RyYWludHMucmlnaHQpCiAgICAgICAgICAgICByZXR1cm4geyBsb2dpY2FsUmVjdCwgbWFy
Z2luU3RhcnQsIHsgfSB9OwogCkBAIC03NzgsNyArNzc4LDcgQEAgTGluZUJ1aWxkZXI6OlVzZWRD
b25zdHJhaW50cyBMaW5lQnVpbGRlcjo6YWRqdXN0ZWRMaW5lUmVjdFdpdGhDYW5kaWRhdGVJbmxp
bmVDb24KICAgICBhdXRvJiBpbmxpbmVDb250ZW50ID0gbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250
ZW50OwogICAgIGlmIChpc0luSW50cmluc2ljV2lkdGhNb2RlKCkpCiAgICAgICAgIHJldHVybiB7
IG1fbGluZUxvZ2ljYWxSZWN0IH07Ci0gICAgLy8gRklYTUU6IFVzZSBJbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnk6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3ggaW5zdGVhZC4KKyAgICAvLyBG
SVhNRTogVXNlIElubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGlu
ZUJveCBpbnN0ZWFkLgogICAgIGF1dG8gY2FuZGlkYXRlQ29udGVudEhlaWdodCA9IElubGluZUxh
eW91dFVuaXQgeyB9OwogICAgIGF1dG8gbGluZUJveENvbnRhaW4gPSBmb3JtYXR0aW5nQ29udGV4
dCgpLnJvb3QoKS5zdHlsZSgpLmxpbmVCb3hDb250YWluKCk7CiAgICAgZm9yIChhdXRvJiBydW4g
OiBpbmxpbmVDb250ZW50LmNvbnRpbnVvdXNDb250ZW50KCkucnVucygpKSB7CkBAIC0xMTUzLDcg
KzExNTMsNyBAQCBzaXplX3QgTGluZUJ1aWxkZXI6OnJlYnVpbGRMaW5lV2l0aElubGluZUNvbnRl
bnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYQogICAgIC8vIExldCdzIGp1c3QgcmV1
c2Ugd2hhdCB0aGUgbGluZSBoYXMgYXQgdGhpcyBwb2ludC4KICAgICBtX2xpbmUuaW5pdGlhbGl6
ZShtX2xpbmVTcGFubmluZ0lubGluZUJveGVzLCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKICAg
ICBpZiAobV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtKSB7Ci0gICAgICAgIG1fbGluZS5hcHBlbmQo
Km1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSwgbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLT5zdHls
ZSgpLCBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmlubGluZUl0ZW1X
aWR0aCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCB7IH0sIGlzRmlyc3RGb3JtYXR0ZWRMaW5l
KCkpKTsKKyAgICAgICAgbV9saW5lLmFwcGVuZCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBt
X3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0tPnN0eWxlKCksIGZvcm1hdHRpbmdDb250ZXh0KCkuZm9y
bWF0dGluZ1V0aWxzKCkuaW5saW5lSXRlbVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0s
IHsgfSwgaXNGaXJzdEZvcm1hdHRlZExpbmUoKSkpOwogICAgICAgICArK251bWJlck9mSW5saW5l
SXRlbXNPbkxpbmU7CiAgICAgICAgIGlmICgmbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLnZhbHVl
KCkgPT0gJmxhc3RJbmxpbmVJdGVtVG9BZGQpCiAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTEx
NjUsNyArMTE2NSw3IEBAIHNpemVfdCBMaW5lQnVpbGRlcjo6cmVidWlsZExpbmVXaXRoSW5saW5l
Q29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBhdXRvJiBzdHlsZSA9IGlzRmlyc3RGb3JtYXR0ZWRM
aW5lKCkgPyBpbmxpbmVJdGVtLmZpcnN0TGluZVN0eWxlKCkgOiBpbmxpbmVJdGVtLnN0eWxlKCk7
Ci0gICAgICAgIG1fbGluZS5hcHBlbmQoaW5saW5lSXRlbSwgc3R5bGUsIGZvcm1hdHRpbmdDb250
ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCkuaW5saW5lSXRlbVdpZHRoKGlubGluZUl0ZW0sIG1f
bGluZS5jb250ZW50TG9naWNhbFJpZ2h0KCksIGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkpKTsKKyAg
ICAgICAgbV9saW5lLmFwcGVuZChpbmxpbmVJdGVtLCBzdHlsZSwgZm9ybWF0dGluZ0NvbnRleHQo
KS5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgbV9saW5lLmNv
bnRlbnRMb2dpY2FsUmlnaHQoKSwgaXNGaXJzdEZvcm1hdHRlZExpbmUoKSkpOwogICAgICAgICAr
K251bWJlck9mSW5saW5lSXRlbXNPbkxpbmU7CiAgICAgICAgIGlmICgmaW5saW5lSXRlbSA9PSAm
bGFzdElubGluZUl0ZW1Ub0FkZCkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lk
dGhIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0ludHJpbnNpY1dpZHRoSGFuZGxlci5jcHAKaW5kZXggMWYzODcwZjcxZjAyLi4xZWZm
MWQxYzgxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0ludHJpbnNpY1dpZHRoSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVy
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIElubGluZUxheW91dFVuaXQgSW50cmluc2ljV2lkdGhI
YW5kbGVyOjpjb21wdXRlZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludChJbnRyCiAgICAgICAg
IH07CiAgICAgICAgIG1heGltdW1Db250ZW50V2lkdGggPSBzdGQ6Om1heChtYXhpbXVtQ29udGVu
dFdpZHRoLCBsaW5lTGF5b3V0UmVzdWx0LmxpbmVHZW9tZXRyeS5sb2dpY2FsVG9wTGVmdC54KCkg
KyBsaW5lTGF5b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGggKyBmbG9hdENv
bnRlbnRXaWR0aCgpKTsKIAotICAgICAgICBsYXlvdXRSYW5nZS5zdGFydCA9IElubGluZUZvcm1h
dHRpbmdHZW9tZXRyeTo6bGVhZGluZ0lubGluZUl0ZW1Qb3NpdGlvbkZvck5leHRMaW5lKGxpbmVM
YXlvdXRSZXN1bHQuaW5saW5lSXRlbVJhbmdlLmVuZCwgcHJldmlvdXNMaW5lRW5kLCBsYXlvdXRS
YW5nZS5lbmQpOworICAgICAgICBsYXlvdXRSYW5nZS5zdGFydCA9IElubGluZUZvcm1hdHRpbmdV
dGlsczo6bGVhZGluZ0lubGluZUl0ZW1Qb3NpdGlvbkZvck5leHRMaW5lKGxpbmVMYXlvdXRSZXN1
bHQuaW5saW5lSXRlbVJhbmdlLmVuZCwgcHJldmlvdXNMaW5lRW5kLCBsYXlvdXRSYW5nZS5lbmQp
OwogICAgICAgICBpZiAobGF5b3V0UmFuZ2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRv
IGNhY2hlTGluZUJyZWFraW5nUmVzdWx0Rm9yU3Vic2VxdWVudExheW91dElmQXBwbGljYWJsZSA9
IFsmXSB7CiAgICAgICAgICAgICAgICAgbV9tYXhpbXVtSW50cmluc2ljV2lkdGhSZXN1bHRGb3JT
aW5nbGVMaW5lID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBs
ZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4YTM3MzBiYjRiMWMuLjE3ZGQxNzllZjBiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4
dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5jcHAKQEAg
LTEwOSw3ICsxMDksNyBAQCBMaW5lTGF5b3V0UmVzdWx0IFRleHRPbmx5U2ltcGxlTGluZUJ1aWxk
ZXI6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JgogCiAgICAgYXV0byBpc0xh
c3RMaW5lID0gaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50KHBsYWNlZENvbnRlbnRFbmQsIGxp
bmVJbnB1dC5uZWVkc0xheW91dFJhbmdlLmVuZEluZGV4KCkpOwogICAgIGF1dG8mIHJvb3RTdHls
ZSA9IGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkgPyByb290KCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJv
b3QoKS5zdHlsZSgpOwotICAgIGF1dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gSW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJvb3RTdHlsZSwgcmVzdWx0
LmNvbnRlbnRMb2dpY2FsUmlnaHQsIG1fbGluZUxvZ2ljYWxSZWN0LndpZHRoKCksIHJlc3VsdC5o
YW5naW5nVHJhaWxpbmdDb250ZW50V2lkdGgsIHJlc3VsdC5ydW5zLCBpc0xhc3RMaW5lKTsKKyAg
ICBhdXRvIGNvbnRlbnRMb2dpY2FsTGVmdCA9IElubGluZUZvcm1hdHRpbmdVdGlsczo6aG9yaXpv
bnRhbEFsaWdubWVudE9mZnNldChyb290U3R5bGUsIHJlc3VsdC5jb250ZW50TG9naWNhbFJpZ2h0
LCBtX2xpbmVMb2dpY2FsUmVjdC53aWR0aCgpLCByZXN1bHQuaGFuZ2luZ1RyYWlsaW5nQ29udGVu
dFdpZHRoLCByZXN1bHQucnVucywgaXNMYXN0TGluZSk7CiAKICAgICByZXR1cm4geyB7IGxpbmVJ
bnB1dC5uZWVkc0xheW91dFJhbmdlLnN0YXJ0LCBwbGFjZWRDb250ZW50RW5kIH0KICAgICAgICAg
LCBXVEZNb3ZlKHJlc3VsdC5ydW5zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDAwMTgwMzI0
NzMxOS4uYzA4NmVmZDBlYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC0yNyw3ICsyNyw3
IEBACiAjaW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgiCiAKICNpbmNsdWRl
ICJGb250Q2FzY2FkZS5oIgotI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgor
I2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdVdGlscy5oIgogI2luY2x1ZGUgIklubGluZVRleHRC
b3hTdHlsZS5oIgogI2luY2x1ZGUgIkxheW91dEJveEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5
b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgSW5saW5l
UmVjdCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmZsaXBMb2dpY2FsUmVjdFRvVmlzdWFs
Rm9yV3JpdGluZ01vZGVXaXQKICAgICAgICAgcmV0dXJuIHsgbG9naWNhbFJlY3QubGVmdCgpLCBi
b3R0b21PZmZzZXQsIGxvZ2ljYWxSZWN0LmhlaWdodCgpLCBsb2dpY2FsUmVjdC53aWR0aCgpIH07
CiAgICAgfQogICAgIGNhc2UgQmxvY2tGbG93RGlyZWN0aW9uOjpSaWdodFRvTGVmdDoKLSAgICAg
ICAgLy8gU2VlIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSBmb3IgbW9yZSBpbmZvLgorICAgICAg
ICAvLyBTZWUgSW5saW5lRm9ybWF0dGluZ1V0aWxzIGZvciBtb3JlIGluZm8uCiAgICAgICAgIHJl
dHVybiB7IGxvZ2ljYWxSZWN0LmxlZnQoKSwgbG9naWNhbFJlY3QudG9wKCksIGxvZ2ljYWxSZWN0
LmhlaWdodCgpLCBsb2dpY2FsUmVjdC53aWR0aCgpIH07CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTU5LDcgKzExNTksNyBAQCBJbmxpbmVSZWN0IElu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6ZmxpcFJvb3RJbmxpbmVCb3hSZWN0VG9WaXN1YWxG
b3JXcml0aW5nTQogICAgIH0KICAgICBjYXNlIEJsb2NrRmxvd0RpcmVjdGlvbjo6TGVmdFRvUmln
aHQ6CiAgICAgY2FzZSBCbG9ja0Zsb3dEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OiB7Ci0gICAgICAg
IC8vIFNlZSBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgZm9yIG1vcmUgaW5mby4KKyAgICAgICAg
Ly8gU2VlIElubGluZUZvcm1hdHRpbmdVdGlscyBmb3IgbW9yZSBpbmZvLgogICAgICAgICBhdXRv
IHZpc3VhbFJlY3QgPSBJbmxpbmVSZWN0IHsgcm9vdElubGluZUJveExvZ2ljYWxSZWN0LmxlZnQo
KSwgcm9vdElubGluZUJveExvZ2ljYWxSZWN0LnRvcCgpLCByb290SW5saW5lQm94TG9naWNhbFJl
Y3QuaGVpZ2h0KCksIHJvb3RJbmxpbmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpIH07CiAgICAgICAg
IHZpc3VhbFJlY3QubW92ZUJ5KHsgbV9kaXNwbGF5TGluZS5sZWZ0KCksIG1fZGlzcGxheUxpbmUu
dG9wKCkgfSk7CiAgICAgICAgIHJldHVybiB2aXN1YWxSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCmluZGV4
IGQ1ZGY0YzNiOGViNC4uZTUyY2Q3OTBmNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5l
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIHN0YXRpYyBJbmxpbmVSZWN0IGZsaXBMb2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZvcldy
aXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmIGxpCiAgICAgICAgIHJldHVybiBsaW5lTG9naWNh
bFJlY3Q7CiAgICAgY2FzZSBCbG9ja0Zsb3dEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgogICAgIGNh
c2UgQmxvY2tGbG93RGlyZWN0aW9uOjpSaWdodFRvTGVmdDoKLSAgICAgICAgLy8gU2VlIElubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeSBmb3IgbW9yZSBpbmZvLgorICAgICAgICAvLyBTZWUgSW5saW5l
Rm9ybWF0dGluZ1V0aWxzIGZvciBtb3JlIGluZm8uCiAgICAgICAgIHJldHVybiB7IGxpbmVMb2dp
Y2FsUmVjdC5sZWZ0KCksIGxpbmVMb2dpY2FsUmVjdC50b3AoKSwgbGluZUxvZ2ljYWxSZWN0Lmhl
aWdodCgpLCBsaW5lTG9naWNhbFJlY3Qud2lkdGgoKSB9OwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9S
dWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGE2ODYxMDBhYzdjOS4uZGM5ZDgyNjUwY2Yw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6OnBs
YWNlUnVieUNvbnRlbnQoV1RGOjpSYW5nZTxzaXplX3Q+IGNhbmRpZGF0ZVJhbmdlLAogewogICAg
IEFTU0VSVChjYW5kaWRhdGVSYW5nZS5lbmQoKSA8PSBpbmxpbmVJdGVtTGlzdC5zaXplKCkpOwog
ICAgIEFTU0VSVChpbmxpbmVJdGVtTGlzdFtjYW5kaWRhdGVSYW5nZS5iZWdpbigpXS5sYXlvdXRC
b3goKS5pc1J1YnkoKSB8fCBpbmxpbmVJdGVtTGlzdFtjYW5kaWRhdGVSYW5nZS5iZWdpbigpXS5s
YXlvdXRCb3goKS5pc1J1YnlCYXNlKCkpOwotICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9
IHBhcmVudEZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCk7CisgICAgYXV0
byYgZm9ybWF0dGluZ1V0aWxzID0gcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5n
VXRpbHMoKTsKIAogICAgIGF1dG8gaW5kZXggPSBjYW5kaWRhdGVSYW5nZS5iZWdpbigpOwogICAg
IHdoaWxlIChpbmRleCA8IGNhbmRpZGF0ZVJhbmdlLmVuZCgpKSB7CiAgICAgICAgIGF1dG8gYXBw
ZW5kSW5saW5lTGV2ZWxJdGVtID0gWyZdKGF1dG8mIGlubGluZUJveEl0ZW0pIHsKICAgICAgICAg
ICAgIEFTU0VSVChpbmxpbmVCb3hJdGVtLmxheW91dEJveCgpLmlzUnVieSgpIHx8IGlubGluZUJv
eEl0ZW0ubGF5b3V0Qm94KCkuaXNSdWJ5QmFzZSgpIHx8IGlubGluZUJveEl0ZW0ubGF5b3V0Qm94
KCkuaXNSdWJ5QW5ub3RhdGlvbkJveCgpKTsKIAotICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lk
dGggPSBmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lSXRlbVdpZHRoKGlubGluZUJveEl0ZW0sIGxp
bmUuY29udGVudExvZ2ljYWxSaWdodCgpLCB7IH0pOworICAgICAgICAgICAgYXV0byBsb2dpY2Fs
V2lkdGggPSBmb3JtYXR0aW5nVXRpbHMuaW5saW5lSXRlbVdpZHRoKGlubGluZUJveEl0ZW0sIGxp
bmUuY29udGVudExvZ2ljYWxSaWdodCgpLCB7IH0pOwogICAgICAgICAgICAgbGluZS5hcHBlbmQo
aW5saW5lQm94SXRlbSwgaW5saW5lQm94SXRlbS5zdHlsZSgpLCBsb2dpY2FsV2lkdGgpOwogICAg
ICAgICAgICAgKytpbmRleDsKICAgICAgICAgfTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFJ1
YnlGb3JtYXR0aW5nQ29udGV4dDo6cGxhY2VSdWJ5Q29udGVudChXVEY6OlJhbmdlPHNpemVfdD4g
Y2FuZGlkYXRlUmFuZ2UsCiBzaXplX3QgUnVieUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRSdWJ5
QmFzZUlubGluZUF4aXMoTGluZSYgbGluZSwgY29uc3QgQm94JiBydWJ5QmFzZUxheW91dEJveCwg
c2l6ZV90IHJ1YnlCYXNlQ29udGVudFN0YXJ0SW5kZXgsIGNvbnN0IElubGluZUl0ZW1MaXN0JiBp
bmxpbmVJdGVtTGlzdCkKIHsKICAgICAvLyBBcHBlbmQgcnVieSBiYXNlIGNvbnRlbnQgKGluY2x1
ZGluZyBzdGFydC9lbmQgaW5saW5lIGJveCkgdG8gdGhlIGxpbmUgYW5kIGFwcGx5ICJydWJ5LWFs
aWduOiBzcGFjZS1hcm91bmQiIG9uIHRoZSBydWJ5IHN1YnJhbmdlLgotICAgIGF1dG8mIGZvcm1h
dHRpbmdHZW9tZXRyeSA9IHBhcmVudEZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21l
dHJ5KCk7CisgICAgYXV0byYgZm9ybWF0dGluZ1V0aWxzID0gcGFyZW50Rm9ybWF0dGluZ0NvbnRl
eHQoKS5mb3JtYXR0aW5nVXRpbHMoKTsKICAgICBhdXRvIGxpbmVMb2dpY2FsUmlnaHQgPSBsaW5l
LmNvbnRlbnRMb2dpY2FsUmlnaHQoKTsKICAgICBhdXRvIGJhc2VDb250ZW50TG9naWNhbFdpZHRo
ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgYXV0byBiYXNlUnVuU3RhcnQgPSBsaW5lLnJ1
bnMoKS5zaXplKCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgc2l6ZV90IFJ1YnlGb3JtYXR0aW5nQ29u
dGV4dDo6bGF5b3V0UnVieUJhc2VJbmxpbmVBeGlzKExpbmUmIGxpbmUsIGNvbnN0IEJveCYgcnUK
ICAgICAgICAgICAgICAgICBhcHBseVJ1YnlBbGlnbihsaW5lLCB7IGJhc2VSdW5TdGFydCwgYmFz
ZVJ1blN0YXJ0ICsgYmFzZVJ1bkNvdW50IH0sIHJ1YnlCYXNlTGF5b3V0Qm94LCBiYXNlQ29udGVu
dExvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICByZXR1cm4gaW5kZXggLSBydWJ5QmFzZUNvbnRl
bnRTdGFydEluZGV4OwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gZm9y
bWF0dGluZ0dlb21ldHJ5LmlubGluZUl0ZW1XaWR0aChydWJ5QmFzZUlubGluZUl0ZW0sIGxpbmVM
b2dpY2FsUmlnaHQgKyBiYXNlQ29udGVudExvZ2ljYWxXaWR0aCwgeyB9KTsKKyAgICAgICAgYXV0
byBsb2dpY2FsV2lkdGggPSBmb3JtYXR0aW5nVXRpbHMuaW5saW5lSXRlbVdpZHRoKHJ1YnlCYXNl
SW5saW5lSXRlbSwgbGluZUxvZ2ljYWxSaWdodCArIGJhc2VDb250ZW50TG9naWNhbFdpZHRoLCB7
IH0pOwogICAgICAgICBsaW5lLmFwcGVuZChydWJ5QmFzZUlubGluZUl0ZW0sIHJ1YnlCYXNlSW5s
aW5lSXRlbS5zdHlsZSgpLCBsb2dpY2FsV2lkdGgpOwogICAgICAgICBiYXNlQ29udGVudExvZ2lj
YWxXaWR0aCArPSBsb2dpY2FsV2lkdGg7CiAgICAgfQpAQCAtMzU1LDcgKzM1NSw3IEBAIElubGlu
ZUxheW91dFVuaXQgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojpsb2dpY2FXaWR0aEZvclJ1YnlSYW5n
ZShXVEY6OlJhbmdlPHNpemVfCiAgICAgQVNTRVJUKGNhbmRpZGF0ZVJhbmdlLmVuZCgpIDw9IGlu
bGluZUl0ZW1MaXN0LnNpemUoKSk7CiAgICAgQVNTRVJUKGlubGluZUl0ZW1MaXN0W2NhbmRpZGF0
ZVJhbmdlLmJlZ2luKCldLmxheW91dEJveCgpLmlzUnVieSgpIHx8IGlubGluZUl0ZW1MaXN0W2Nh
bmRpZGF0ZVJhbmdlLmJlZ2luKCldLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSk7CiAKLSAgICBh
dXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSBwYXJlbnRGb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1h
dHRpbmdHZW9tZXRyeSgpOworICAgIGF1dG8mIGZvcm1hdHRpbmdVdGlscyA9IHBhcmVudEZvcm1h
dHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ1V0aWxzKCk7CiAgICAgYXV0byBjYW5kaWRhdGVDb250
ZW50TG9naWNhbFdpZHRoID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgYXV0byBpbmRleCA9
IGNhbmRpZGF0ZVJhbmdlLmJlZ2luKCk7CiAKQEAgLTM2NSw3ICszNjUsNyBAQCBJbmxpbmVMYXlv
dXRVbml0IFJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6bG9naWNhV2lkdGhGb3JSdWJ5UmFuZ2UoV1RG
OjpSYW5nZTxzaXplXwogCiAgICAgICAgIGlmIChydWJ5TGF5b3V0Qm94LmlzUnVieSgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQocnVieUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1YnlJdGVt
LmlzSW5saW5lQm94RW5kKCkpOwotICAgICAgICAgICAgY2FuZGlkYXRlQ29udGVudExvZ2ljYWxX
aWR0aCArPSBmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lSXRlbVdpZHRoKHJ1YnlJdGVtLCBsaW5l
Q29udGVudExvZ2ljYWxSaWdodCArIGNhbmRpZGF0ZUNvbnRlbnRMb2dpY2FsV2lkdGgsIHsgfSk7
CisgICAgICAgICAgICBjYW5kaWRhdGVDb250ZW50TG9naWNhbFdpZHRoICs9IGZvcm1hdHRpbmdV
dGlscy5pbmxpbmVJdGVtV2lkdGgocnVieUl0ZW0sIGxpbmVDb250ZW50TG9naWNhbFJpZ2h0ICsg
Y2FuZGlkYXRlQ29udGVudExvZ2ljYWxXaWR0aCwgeyB9KTsKICAgICAgICAgICAgICsraW5kZXg7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMzg0LDcgKzM4NCw3IEBAIElu
bGluZUxheW91dFVuaXQgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojpsb2dpY2FXaWR0aEZvclJ1YnlS
YW5nZShXVEY6OlJhbmdlPHNpemVfCiAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGgg
PSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICAgICAgICAgICAgICBmb3IgKDsgaW5kZXggPCBj
YW5kaWRhdGVSYW5nZS5lbmQoKTsgKytpbmRleCkgewogICAgICAgICAgICAgICAgICAgICBhdXRv
JiBiYXNlSW5saW5lSXRlbSA9IGlubGluZUl0ZW1MaXN0W2luZGV4XTsKLSAgICAgICAgICAgICAg
ICAgICAgbG9naWNhbFdpZHRoICs9IGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVJdGVtV2lkdGgo
YmFzZUlubGluZUl0ZW0sIGxpbmVDb250ZW50TG9naWNhbFJpZ2h0ICsgbG9naWNhbFdpZHRoLCB7
IH0pOworICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggKz0gZm9ybWF0dGluZ1V0aWxz
LmlubGluZUl0ZW1XaWR0aChiYXNlSW5saW5lSXRlbSwgbGluZUNvbnRlbnRMb2dpY2FsUmlnaHQg
KyBsb2dpY2FsV2lkdGgsIHsgfSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgmYmFzZUlubGlu
ZUl0ZW0ubGF5b3V0Qm94KCkgPT0gJnJ1YnlMYXlvdXRCb3ggJiYgYmFzZUlubGluZUl0ZW0uaXNJ
bmxpbmVCb3hFbmQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW5kIG9mIGJhc2Uu
CiAgICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1Rh
YmxlRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA2MmJmOTdjZTMxMTMuLmFmYWIwNGFhZjU1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJs
ZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IHVzZWRD
b250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBUYWJsZUZvcm1hdHRp
bmdHZW9tZXRyeSYgZm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90
YWJsZUZvcm1hdHRpbmdHZW9tZXRyeTsgfQorICAgIGNvbnN0IFRhYmxlRm9ybWF0dGluZ0dlb21l
dHJ5JiBmb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlRm9ybWF0dGlu
Z0dlb21ldHJ5OyB9CiAgICAgY29uc3QgVGFibGVGb3JtYXR0aW5nUXVpcmtzJiBmb3JtYXR0aW5n
UXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV90YWJsZUZvcm1hdHRpbmdRdWlya3M7IH0KICAgICBj
b25zdCBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV90YWJsZUZvcm1hdHRpbmdTdGF0ZTsgfQogCg==
</data>
<flag name="commit-queue"
          id="495081"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468064</attachid>
            <date>2023-10-04 08:48:06 -0700</date>
            <delta_ts>2023-10-04 13:05:38 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-262559-20231004084805.patch</filename>
            <type>text/plain</type>
            <size>80478</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxMDVkMjUzNjdjN2M2ZTY0ZTE2OThjOWY5Yjg4MzM5OTUyOGZkZDRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgNCBPY3QgMjAyMyAwODoyMzoyNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtJRkNdW0Ns
ZWFudXBdIERldGFjaCAoYW5kIHJlbmFtZSkgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5CiBmcm9t
IGJhc2UgY2xhc3MgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MjU1
OQoKUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCgpBcyBpdCB0dXJucyBvdXQgdGhlcmUncyBu
b3QgbXVjaCBnZW9tZXRyeSBjb21wdXRhdGlvbiB0byBzaGFyZSBiZXR3ZWVuIGZvcm1hdHRpbmcg
Y29udGV4dHMuCgoqIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0OgoqIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaDoKKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5Ojppc0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0dlb21ldHJ5Ojppc0lubGluZUZv
cm1hdHRpbmdHZW9tZXRyeSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tX
aXRoRml4ZWRIZWlnaHQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oOgooV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhG
aXhlZEhlaWdodCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6CihXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdHZW9tZXRyeSBjb25zdCk6CigpOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdo
dCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2Vy
LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6Y29tcHV0ZUJyZWFrT3Bwb3J0dW5pdGllcyk6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6aW5pdGlhbGl6ZSk6CihXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6YmFsYW5jZVJhbmdlV2l0aExpbmVSZXF1
aXJlbWVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCYWxhbmNlcjo6YmFsYW5j
ZVJhbmdlV2l0aE5vTGluZVJlcXVpcmVtZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsaW5lTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OnVwZGF0ZUlubGluZUxheW91dFN0YXRlV2l0aExpbmVMYXlvdXRSZXN1bHQpOgoo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNv
bnRlbnRGb3JJbmxpbmVDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZUZyb21DYWNoZWRDb250ZW50KToK
KiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Zm9ybWF0dGluZ1V0aWxzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwOiBSZW1v
dmVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOiBSZW1vdmVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94Lmg6CiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRp
Y2FsQWxpZ25lci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6
OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXIpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQgY29uc3QpOgooV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlUm9vdElubGluZUJveFZlcnRp
Y2FsUG9zaXRpb24gY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGln
bmVyOjpsYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGlj
YWxBbGlnbmVyLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmZv
cm1hdHRpbmdVdGlscyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmZvcm1hdHRpbmdHZW9tZXRyeSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudCk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppbml0aWFsQ29uc3RyYWludHNGb3JMaW5lIGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JM
aW5lKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmZsb2F0Q29uc3RyYWluZWRSZWN0
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFkanVzdGVkTGluZVJlY3RX
aXRoQ2FuZGlkYXRlSW5saW5lQ29udGVudCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
dWlsZGVyOjpyZWJ1aWxkTGluZVdpdGhJbmxpbmVDb250ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpJbnRyaW5zaWNXaWR0aEhhbmRsZXI6OmNvbXB1dGVkSW50cmlu
c2ljV2lkdGhGb3JDb25zdHJhaW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6
OkxheW91dDo6VGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudCk6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmZsaXBMb2dpY2FsUmVjdFRvVmlzdWFsRm9yV3JpdGlu
Z01vZGVXaXRoaW5MaW5lIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyOjpmbGlwUm9vdElubGluZUJveFJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2Rl
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OmZsaXBMb2dpY2FsTGluZVJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKToKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5n
Q29udGV4dC5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6cGxh
Y2VSdWJ5Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OlJ1YnlGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0UnVieUJhc2VJbmxpbmVBeGlzKToKKFdlYkNvcmU6OkxheW91dDo6UnVieUZvcm1hdHRp
bmdDb250ZXh0Ojpsb2dpY2FXaWR0aEZvclJ1YnlSYW5nZSBjb25zdCk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0
Lmg6Ci0tLQogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwg
IDIgKy0KIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiB8IDEy
ICsrLS0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaCAgICB8ICAy
IC0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmggICB8ICAxIC0K
IC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAgICB8IDI5IC0tLS0t
LS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuaCAgICAgfCAgMiAr
LQogLi4uL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCAgICAgICAgICAgIHwgIDIgKy0K
IC4uLi9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwICAgICAgICAgICB8IDI5ICsrKysr
KysrCiAuLi4vYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggICAgICAgICAgICAgfCAgMSAr
CiAuLi4vZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuaCAgICAgICAgICAgICAgfCAgMiArLQog
Li4uL2lubGluZS9JbmxpbmVDb250ZW50QmFsYW5jZXIuY3BwICAgICAgICAgIHwgMTggKystLS0K
IC4uLi9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmggICAgICAgICAgICB8ICAyICstCiAu
Li4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAgICAgICAgfCAxNCArKy0tCiAu
Li4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAgICAgfCAgOCArLS0KIC4u
Lkdlb21ldHJ5LmNwcCA9PiBJbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwfSB8IDY2ICsrKysrKy0t
LS0tLS0tLS0tLS0KIC4uLnRpbmdHZW9tZXRyeS5oID0+IElubGluZUZvcm1hdHRpbmdVdGlscy5o
fSB8IDE0ICsrLS0KIC4uLi9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaCAgICAgICAgICAgICAgICAg
ICB8ICAyICstCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwICAg
fCAyMCArKystLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oICAg
ICB8ICA2ICstCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAgICAgICAg
fCAyNiArKysrLS0tLQogLi4uL2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwICAgICAg
ICAgIHwgIDIgKy0KIC4uLi9pbmxpbmUvVGV4dE9ubHlTaW1wbGVMaW5lQnVpbGRlci5jcHAgICAg
ICB8ICAyICstCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICAg
fCAgNiArLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCAgICAgIHwg
IDIgKy0KIC4uLi9pbmxpbmUvcnVieS9SdWJ5Rm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICB8IDE0
ICsrLS0KIC4uLi90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAgICAgICB8ICAy
ICstCiAyNiBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgMTU2IGRlbGV0aW9ucygt
KQogcmVuYW1lIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3tJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwID0+IElubGluZUZvcm1hdHRpbmdVdGlscy5j
cHB9ICg4NiUpCiByZW5hbWUgU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUve0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oID0+IElubGluZUZvcm1hdHRpbmdV
dGlscy5ofSAoOTElKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMGQ4MmFkOTIxNTkyLi4zYjlkOTA5NTIz
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9BYnN0cmFjdExpbmVCdWlsZGVyLmNwcAogbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmNwcAogbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCiBsYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKLWxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
K2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGlscy5j
cHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW0uY3BwCiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYyZGM0YjI5
ZjUzMy4uMmY4MTFhYWYzZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzIxLDcgKzE3MjEsNyBAQAogCQk0NkZFRkJDODI2
REQ2N0EyMDBCMEM0ODggLyogU3RydWN0dXJlZFNlcmlhbGl6ZU9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RkVGQkM2MjZERDY3ODIwMEIw
QzQ4OCAvKiBTdHJ1Y3R1cmVkU2VyaWFsaXplT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ3NUM4OUE0MjY1MEFDM0MwMEYzQjQ1NiAv
KiBGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ3NUM4OUEzMjY1MEFDM0IwMEYzQjQ1NiAvKiBGb3JtYXR0aW5nR2VvbWV0
cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
Nzg2MzU2NTI2NTA3QTM4MDBDNUUyRTAgLyogQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3ODYzNTY0MjY1MDdB
MzcwMEM1RTJFMCAvKiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQ3QzRENTdEMjY1MDhCQ0IwMEM3QUIx
RiAvKiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3QzRENTdDMjY1MDhCQ0EwMEM3QUIxRiAvKiBJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0N0M0RDU3RDI2NTA4QkNCMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGlu
Z1V0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
N0M0RDU3QzI2NTA4QkNBMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGluZ1V0aWxzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDdGOTQ3REIyNjUw
MkYyRjAwODc5NjhDIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDdGOTQ3REEyNjUwMkYyRjAwODc5NjhDIC8q
IEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ3RkE5NzAwMjY1MDk4MkIwMDg0MTQxNiAvKiBUYWJsZUZvcm1h
dHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDdGQTk2RkYyNjUwOTgyQTAwODQxNDE2IC8qIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDgy
Mjk3MEUyOUM4RUJDMDAwMzNBMTI2IC8qIFJlZ2lvbkNvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ4MjI5NzBDMjlDOEVCQzAwMDMzQTEyNiAv
KiBSZWdpb25Db250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEwNjc4LDcgKzEwNjc4LDcgQEAKIAkJNDZGRUZCQzcyNkRENjc4MzAwQjBD
NDg4IC8qIFN0cnVjdHVyZWRTZXJpYWxpemVPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdHJ1Y3R1cmVkU2Vy
aWFsaXplT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ3NUM4OUEz
MjY1MEFDM0IwMEYzQjQ1NiAvKiBGb3JtYXR0aW5nR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0dGluZ0dlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ3ODYzNTY0MjY1MDdBMzcwMEM1RTJFMCAvKiBCbG9ja0Zvcm1hdHRpbmdH
ZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0Zvcm1hdHRp
bmdHZW9tZXRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0N0M0RDU3QzI2NTA4
QkNBMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0N0M0RDU3QzI2NTA4QkNBMDBDN0FCMUYgLyogSW5saW5lRm9y
bWF0dGluZ1V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZUZv
cm1hdHRpbmdVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0N0Y5NDdEQTI2
NTAyRjJGMDA4Nzk2OEMgLyogQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0N0ZBOTZGRjI2NTA5ODJBMDA4NDE0MTYgLyogVGFibGVGb3JtYXR0
aW5nR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFibGVGb3Jt
YXR0aW5nR2VvbWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDgyMjk3MEIy
OUM4RUJDMDAwMzNBMTI2IC8qIFJlZ2lvbkNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVnaW9uQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMjM3OCw3ICsxMjM3OCw3IEBACiAJCTZGMjZCQjY5MjMzNDNFNUEwMDJGMkJF
QSAvKiBMYXlvdXRDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dENvbnRleHQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjI2QkI2QjIzMzQzRTVCMDAyRjJC
RUEgLyogTGF5b3V0Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRDb250ZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMjZFQjQ2MjM0MDA0QTUwMDY5MDZFMiAvKiBJ
bmxpbmVMaW5lQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxp
bmVMaW5lQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RjM1RUZBRjIx
ODdDQkQ1MDA0NEUwRjQgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGMzVFRkFGMjE4N0NCRDUwMDQ0RTBGNCAv
KiBJbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ1V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkYzNjBFNEUyMzk5OTQyMDAwMTUxMkE3IC8qIElubGluZVNvZnRMaW5lQnJlYWtJ
dGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVNvZnRMaW5lQnJl
YWtJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGM0ZCQTk2MjU1NkUzMDgw
MDM1MzBGRCAvKiBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjNGQkE5NzI1NTZFMzEyMDAzNTMwRkQg
LyogTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQ1NSw4ICsyMTQ1NSw4IEBACiAJ
CQkJRERGQ0I0ODAyOTE3MDE0NTAwQzc5OUM2IC8qIElubGluZUZvcm1hdHRpbmdDb25zdHJhaW50
cy5oICovLAogCQkJCTZGN0NBM0M5MjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAgKi8sCiAJCQkJNkY3Q0EzQzgyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZv
cm1hdHRpbmdDb250ZXh0LmggKi8sCi0JCQkJNkYzNUVGQUYyMTg3Q0JENTAwNDRFMEY0IC8qIElu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgKi8sCi0JCQkJNDdDNEQ1N0MyNjUwOEJDQTAwQzdB
QjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oICovLAorCQkJCTZGMzVFRkFGMjE4N0NC
RDUwMDQ0RTBGNCAvKiBJbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwICovLAorCQkJCTQ3QzRENTdD
MjY1MDhCQ0EwMEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nVXRpbHMuaCAqLywKIAkJCQk2RjdC
OENFQzIzNjI2RTY2MDBDOUZGMTUgLyogSW5saW5lSXRlbS5jcHAgKi8sCiAJCQkJNkZFN0NGQTAy
MTc3RUVGMTAwNUIxNTczIC8qIElubGluZUl0ZW0uaCAqLywKIAkJCQkxMUQwMzYzOTI3MkM0Q0U3
MDA5RUQ3MEQgLyogSW5saW5lSXRlbXNCdWlsZGVyLmNwcCAqLywKQEAgLTM4OTc3LDcgKzM4OTc3
LDcgQEAKIAkJCQk2RjYwRTVBQTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxpbmVC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEREZDQjQ4MTI5MTcwMTQ2MDBDNzk5QzYgLyog
SW5saW5lRm9ybWF0dGluZ0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjdDQTND
QTIwOEMyQjJFMDAyRjI5QUIgLyogSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQ3QzRENTdEMjY1MDhCQ0IwMEM3QUIxRiAvKiBJbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ3QzRENTdEMjY1MDhCQ0IwMEM3QUIxRiAvKiBJ
bmxpbmVGb3JtYXR0aW5nVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTExMUZBMUM3MjZGMEYz
MEYwMDNCOEYxNiAvKiBJbmxpbmVJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTZG
RTdDRkEyMjE3N0VFRjIwMDVCMTU3MyAvKiBJbmxpbmVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxMUQwMzYzQzI3MkM0Q0ZEMDA5RUQ3MEQgLyogSW5saW5lSXRlbXNCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAwZDYwZTEyYzZkNWIuLmFhNzNm
MjllY2JmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNjAsOCArNjAsNiBAQCBwdWJs
aWM6CiAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCk7CiAgICAgY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGb3JtYXR0aW5nQ29u
dGV4dCY+KCp0aGlzKS5sYXlvdXRTdGF0ZSgpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEZvcm1h
dHRpbmdHZW9tZXRyeSYgZm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgPSAwOwotCiAgICAgZW51
bSBjbGFzcyBFc2NhcGVSZWFzb24gewogICAgICAgICBUYWJsZVF1aXJrTmVlZHNHZW9tZXRyeUZy
b21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0LAogICAgICAgICBPdXRPZkZsb3dCb3hOZWVk
c0luRmxvd0dlb21ldHJ5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggNTRlMDFjNWEw
Zjg3Li43ZmU0NTI3ZmQ4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAtODcsNyAr
ODcsNiBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFdp
ZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0Owog
CiAgICAgYm9vbCBpc0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gZm9y
bWF0dGluZ0NvbnRleHQoKS5pc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgfQotICAgIGJvb2wg
aXNJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29u
dGV4dCgpLmlzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKTsgfQogICAgIGJvb2wgaXNGbGV4Rm9y
bWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5pc0Zs
ZXhGb3JtYXR0aW5nQ29udGV4dCgpOyB9CiAgICAgYm9vbCBpc1RhYmxlRm9ybWF0dGluZ0dlb21l
dHJ5KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5pc1RhYmxlRm9ybWF0dGlu
Z0NvbnRleHQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCAxMTFiYmRjZmRm
NDguLjBlOGVjOGYyNGU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC00MiwzNSAr
NDIsNiBAQCBGb3JtYXR0aW5nUXVpcmtzOjpGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEZvcm1hdHRp
bmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCkKIHsKIH0KIAotTGF5b3V0VW5pdCBGb3JtYXR0
aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhl
aWdodChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKLXsKLSAgICBBU1NFUlQobGF5b3V0U3Rh
dGUoKS5pblF1aXJrc01vZGUoKSk7Ci0gICAgLy8gSW4gcXVpcmtzIG1vZGUsIHdlIGdvIGFuZCB0
cmF2ZXJzIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluIHRvIGZpbmQgYSBibG9jayBsZXZlbCBi
b3ggd2l0aCBmaXhlZCBoZWlnaHQgdmFsdWUsIGV2ZW4gaWYgaXQgbWVhbnMgbGVhdmluZwotICAg
IC8vIHRoZSBjdXJyZW50IGZvcm1hdHRpbmcgY29udGV4dC4gRklYTUU6IHN1cmVseSB3ZSBuZWVk
IHRvIGRvIHNvbWUgdHJpY2tzIGhlcmUgd2hlbiBibG9jayBkaXJlY3Rpb24gc3VwcG9ydCBpcyBh
ZGRlZC4KLSAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250
ZXh0KCk7Ci0gICAgYXV0byBib2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRC
b3JkZXIgPSBMYXlvdXRVbml0IHsgfTsKLSAgICBmb3IgKGF1dG8mIGNvbnRhaW5pbmdCbG9jayA6
IGNvbnRhaW5pbmdCbG9ja0NoYWluKGxheW91dEJveCkpIHsKLSAgICAgICAgYXV0byBjb250YWlu
aW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2suc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCk7
Ci0gICAgICAgIGlmIChjb250YWluaW5nQmxvY2tIZWlnaHQuaXNGaXhlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQoY29udGFpbmluZ0Jsb2NrSGVpZ2h0LnZhbHVlKCkgLSBib2R5
QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXIpOwotCi0gICAgICAgIC8v
IElmIHRoZSBvbmx5IGZpeGVkIHZhbHVlIGJveCB3ZSBmaW5kIGlzIHRoZSBJQ0IsIHRoZW4gaWdu
b3JlIHRoZSBib2R5IGFuZCB0aGUgZG9jdW1lbnQgKHZlcnRpY2FsKSBtYXJnaW4sIHBhZGRpbmcg
YW5kIGJvcmRlci4gU28gbXVjaCBxdWlya2luZXNzLgotICAgICAgICAvLyAtYW5kIGl0J3MgdG90
YWxseSBpbnNhbmUgYmVjYXVzZSBub3cgd2UgZnJlZWx5IHRyYXZlbCBhY3Jvc3MgZm9ybWF0dGlu
ZyBjb250ZXh0IGJvdW5kYXJpZXMgYW5kIGNvbXB1dGVkIG1hcmdpbnMgYXJlIG5vbmV4aXN0ZW50
LgotICAgICAgICBpZiAoY29udGFpbmluZ0Jsb2NrLmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdC
bG9jay5pc0RvY3VtZW50Qm94KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9t
ZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpOwotICAgICAgICAg
ICAgYXV0byBob3Jpem9udGFsQ29uc3RyYWludHMgPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3Ry
YWludHNGb3JJbkZsb3dDb250ZW50KEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2so
Y29udGFpbmluZ0Jsb2NrKSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmluZEZp
eGVkSGVpZ2h0QW5jZXN0b3JRdWlyaykuaG9yaXpvbnRhbCgpOwotICAgICAgICAgICAgYXV0byB2
ZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFyZ2lu
KGNvbnRhaW5pbmdCbG9jaywgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKLQotICAgICAgICAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChjb250
YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhl
aWdodEFuY2VzdG9yUXVpcmspOwotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbFBhZGRpbmcgPSBi
b3hHZW9tZXRyeS5wYWRkaW5nQmVmb3JlKCkudmFsdWVfb3IoMCkgKyBib3hHZW9tZXRyeS5wYWRk
aW5nQWZ0ZXIoKS52YWx1ZV9vcigwKTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxCb3JkZXIg
PSBib3hHZW9tZXRyeS5ib3JkZXJCZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRlckFmdGVyKCk7
Ci0gICAgICAgICAgICBib2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3Jk
ZXIgKz0gdmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApICsgdmVydGljYWxNYXJnaW4u
YWZ0ZXIudmFsdWVfb3IoMCkgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2ZXJ0aWNhbEJvcmRlcjsKLSAg
ICAgICAgfQotICAgIH0KLSAgICAvLyBJbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgaGFzIHRvIGhh
dmUgYSBoZWlnaHQuCi0gICAgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94
KEZvcm1hdHRpbmdDb250ZXh0Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCksIEZv
cm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9yUXVp
cmspLmNvbnRlbnRCb3goKS5oZWlnaHQoKSAtIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2lu
UGFkZGluZ0FuZEJvcmRlcjsKLX0KLQogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oCmluZGV4
IGE2ZWUzYmUwOGQ5ZS4uZDAxZDYzYThkZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuaApAQCAt
MzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgRm9ybWF0dGluZ1F1aXJrcyhjb25zdCBGb3JtYXR0
aW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfkZvcm1hdHRpbmdRdWlya3MoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgaGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5n
QmxvY2tXaXRoRml4ZWRIZWlnaHQoY29uc3QgQm94JikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlv
dXRVbml0IGhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0
KGNvbnN0IEJveCYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCiAgICAgYm9vbCBpc0Jsb2NrRm9y
bWF0dGluZ1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkuaXNCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KCk7IH0KICAgICBib29sIGlzVGFibGVGb3JtYXR0aW5nUXVpcmtz
KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5pc1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApp
bmRleCAwZTU4ZTU1MzI4NjUuLjJjMWFjZWU0MWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIExh
eW91dFVuaXQgdXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNvbnN0
IEJsb2NrRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X2Jsb2NrRm9ybWF0dGluZ1N0YXRlOyB9Ci0gICAgY29uc3QgQmxvY2tGb3JtYXR0aW5nR2VvbWV0
cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnk7IH0KKyAgICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeSYgZm9y
bWF0dGluZ0dlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja0Zvcm1hdHRpbmdHZW9tZXRy
eTsgfQogICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ1F1aXJrcyYgZm9ybWF0dGluZ1F1aXJrcygp
IGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tGb3JtYXR0aW5nUXVpcmtzOyB9CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCA2Y2E1
NWY0MDlhZGYuLmRlMzcyOGRjNWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nUXVpcmtzLmNwcApAQCAtMTI4LDYgKzEyOCwzNSBAQCBib29sIEJsb2NrRm9ybWF0dGlu
Z1F1aXJrczo6c2hvdWxkQ29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihj
b25zdAogICAgIHJldHVybiBoYXNRdWlya01hcmdpblRvQ29sbGFwc2UobGF5b3V0Qm94LCBWZXJ0
aWNhbE1hcmdpbjo6QWZ0ZXIpICYmIGlzUXVpcmtDb250YWluZXIoRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKTsKIH0KIAorTGF5b3V0VW5pdCBCbG9ja0Zvcm1h
dHRpbmdRdWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVk
SGVpZ2h0KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAoreworICAgIEFTU0VSVChsYXlvdXRT
dGF0ZSgpLmluUXVpcmtzTW9kZSgpKTsKKyAgICAvLyBJbiBxdWlya3MgbW9kZSwgd2UgZ28gYW5k
IHRyYXZlcnMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4gdG8gZmluZCBhIGJsb2NrIGxldmVs
IGJveCB3aXRoIGZpeGVkIGhlaWdodCB2YWx1ZSwgZXZlbiBpZiBpdCBtZWFucyBsZWF2aW5nCisg
ICAgLy8gdGhlIGN1cnJlbnQgZm9ybWF0dGluZyBjb250ZXh0LiBGSVhNRTogc3VyZWx5IHdlIG5l
ZWQgdG8gZG8gc29tZSB0cmlja3MgaGVyZSB3aGVuIGJsb2NrIGRpcmVjdGlvbiBzdXBwb3J0IGlz
IGFkZGVkLgorICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gZG93bmNhc3Q8QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dD4odGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKSk7CisgICAgYXV0byBib2R5
QW5kRG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXIgPSBMYXlvdXRVbml0IHsg
fTsKKyAgICBmb3IgKGF1dG8mIGNvbnRhaW5pbmdCbG9jayA6IGNvbnRhaW5pbmdCbG9ja0NoYWlu
KGxheW91dEJveCkpIHsKKyAgICAgICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250
YWluaW5nQmxvY2suc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgIGlmIChjb250YWlu
aW5nQmxvY2tIZWlnaHQuaXNGaXhlZCgpKQorICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQo
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0LnZhbHVlKCkgLSBib2R5QW5kRG9jdW1lbnRWZXJ0aWNhbE1h
cmdpblBhZGRpbmdBbmRCb3JkZXIpOworCisgICAgICAgIC8vIElmIHRoZSBvbmx5IGZpeGVkIHZh
bHVlIGJveCB3ZSBmaW5kIGlzIHRoZSBJQ0IsIHRoZW4gaWdub3JlIHRoZSBib2R5IGFuZCB0aGUg
ZG9jdW1lbnQgKHZlcnRpY2FsKSBtYXJnaW4sIHBhZGRpbmcgYW5kIGJvcmRlci4gU28gbXVjaCBx
dWlya2luZXNzLgorICAgICAgICAvLyAtYW5kIGl0J3MgdG90YWxseSBpbnNhbmUgYmVjYXVzZSBu
b3cgd2UgZnJlZWx5IHRyYXZlbCBhY3Jvc3MgZm9ybWF0dGluZyBjb250ZXh0IGJvdW5kYXJpZXMg
YW5kIGNvbXB1dGVkIG1hcmdpbnMgYXJlIG5vbmV4aXN0ZW50LgorICAgICAgICBpZiAoY29udGFp
bmluZ0Jsb2NrLmlzQm9keUJveCgpIHx8IGNvbnRhaW5pbmdCbG9jay5pc0RvY3VtZW50Qm94KCkp
IHsKKyAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpOworICAgICAgICAgICAgYXV0byBob3Jpem9udGFsQ29u
c3RyYWludHMgPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50
KEZvcm1hdHRpbmdDb250ZXh0Ojpjb250YWluaW5nQmxvY2soY29udGFpbmluZ0Jsb2NrKSwgRm9y
bWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmluZEZpeGVkSGVpZ2h0QW5jZXN0b3JRdWly
aykuaG9yaXpvbnRhbCgpOworICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IGZvcm1h
dHRpbmdHZW9tZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFyZ2luKGNvbnRhaW5pbmdCbG9jaywgaG9y
aXpvbnRhbENvbnN0cmFpbnRzKTsKKworICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBm
b3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChjb250YWluaW5nQmxvY2ssIEZvcm1hdHRp
bmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspOwor
ICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbFBhZGRpbmcgPSBib3hHZW9tZXRyeS5wYWRkaW5nQmVm
b3JlKCkudmFsdWVfb3IoMCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nQWZ0ZXIoKS52YWx1ZV9vcigw
KTsKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxCb3JkZXIgPSBib3hHZW9tZXRyeS5ib3JkZXJC
ZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRlckFmdGVyKCk7CisgICAgICAgICAgICBib2R5QW5k
RG9jdW1lbnRWZXJ0aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXIgKz0gdmVydGljYWxNYXJnaW4u
YmVmb3JlLnZhbHVlX29yKDApICsgdmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgKyB2
ZXJ0aWNhbFBhZGRpbmcgKyB2ZXJ0aWNhbEJvcmRlcjsKKyAgICAgICAgfQorICAgIH0KKyAgICAv
LyBJbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgaGFzIHRvIGhhdmUgYSBoZWlnaHQuCisgICAgcmV0
dXJuIGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KEZvcm1hdHRpbmdDb250ZXh0Ojpp
bml0aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCksIEZvcm1hdHRpbmdDb250ZXh0OjpFc2Nh
cGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspLmNvbnRlbnRCb3goKS5oZWln
aHQoKSAtIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRlcjsKK30K
KwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaAppbmRl
eCA0ZWJjYTZhNjNlYmMuLjk3MzJiM2M5YjRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ1F1aXJrcy5oCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICBCbG9ja0Zv
cm1hdHRpbmdRdWlya3MoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYpOwogCiAgICAgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBzdHJldGNoZWRJbkZsb3dIZWlnaHRJZkFwcGxpY2FibGUo
Y29uc3QgRWxlbWVudEJveCYsIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4pIGNvbnN0OworICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhG
aXhlZEhlaWdodChjb25zdCBCb3gmKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJZ25v
cmVDb2xsYXBzZWRRdWlya01hcmdpbihjb25zdCBFbGVtZW50Qm94Jik7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0
IEVsZW1lbnRCb3gmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVy
V2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IEVsZW1lbnRCb3gmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxl
eC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBhMmE2ZmUwMzc5MGEuLmFjZjA5ZDkwOWMy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9m
bGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXlvdXQoY29uc3QgQ29uc3RyYWludHNGb3JGbGV4
Q29udGVudCYpOwogICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzKCk7CiAKLSAgICBjb25zdCBGbGV4Rm9ybWF0dGluZ0dlb21ldHJ5
JiBmb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZsZXhGb3JtYXR0
aW5nR2VvbWV0cnk7IH0KKyAgICBjb25zdCBGbGV4Rm9ybWF0dGluZ0dlb21ldHJ5JiBmb3JtYXR0
aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX2ZsZXhGb3JtYXR0aW5nR2VvbWV0cnk7IH0K
ICAgICBjb25zdCBGb3JtYXR0aW5nUXVpcmtzJiBmb3JtYXR0aW5nUXVpcmtzKCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGV4Rm9ybWF0dGluZ1F1aXJrczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29u
dGVudEJhbGFuY2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5jcHAKaW5kZXggMzNiZjdjNDA3Mzg0Li4z
YWI1YjM4ODIwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFu
Y2VyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgVmVjdG9yPHNpemVfdD4gY29tcHV0ZUJy
ZWFrT3Bwb3J0dW5pdGllcyhjb25zdCBJbmxpbmVJdGVtTGlzdCYgaW5saW5lSXRlbQogICAgIFZl
Y3RvcjxzaXplX3Q+IGJyZWFrT3Bwb3J0dW5pdGllczsKICAgICBzaXplX3QgY3VycmVudEluZGV4
ID0gcmFuZ2Uuc3RhcnRJbmRleCgpOwogICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCByYW5nZS5l
bmRJbmRleCgpKSB7Ci0gICAgICAgIGN1cnJlbnRJbmRleCA9IElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTo6bmV4dFdyYXBPcHBvcnR1bml0eShjdXJyZW50SW5kZXgsIHJhbmdlLCBpbmxpbmVJdGVt
TGlzdCk7CisgICAgICAgIGN1cnJlbnRJbmRleCA9IElubGluZUZvcm1hdHRpbmdVdGlsczo6bmV4
dFdyYXBPcHBvcnR1bml0eShjdXJyZW50SW5kZXgsIHJhbmdlLCBpbmxpbmVJdGVtTGlzdCk7CiAg
ICAgICAgIGJyZWFrT3Bwb3J0dW5pdGllcy5hcHBlbmQoY3VycmVudEluZGV4KTsKICAgICB9CiAg
ICAgcmV0dXJuIGJyZWFrT3Bwb3J0dW5pdGllczsKQEAgLTEyOCw4ICsxMjgsOCBAQCB2b2lkIElu
bGluZUNvbnRlbnRCYWxhbmNlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBtX2Nhbm5vdEJh
bGFuY2VDb250ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBtX2lubGluZUl0ZW1XaWR0aHMuYXBwZW5kKG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Zm9ybWF0dGluZ0dlb21ldHJ5KCkuaW5saW5lSXRlbVdpZHRoKGl0ZW0sIDAsIGZhbHNlKSk7Ci0g
ICAgICAgIG1fZmlyc3RMaW5lU3R5bGVJbmxpbmVJdGVtV2lkdGhzLmFwcGVuZChtX2lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpLmlubGluZUl0ZW1XaWR0aChpdGVt
LCAwLCB0cnVlKSk7CisgICAgICAgIG1faW5saW5lSXRlbVdpZHRocy5hcHBlbmQobV9pbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lkdGgoaXRlbSwg
MCwgZmFsc2UpKTsKKyAgICAgICAgbV9maXJzdExpbmVTdHlsZUlubGluZUl0ZW1XaWR0aHMuYXBw
ZW5kKG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxzKCkuaW5saW5lSXRl
bVdpZHRoKGl0ZW0sIDAsIHRydWUpKTsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIGEgbGluZSBs
YXlvdXQgd2l0aCBgdGV4dC13cmFwOiB3cmFwYCB0byBjb21wdXRlIHVzZWZ1bCBtZXRyaWNzIHN1
Y2ggYXM6CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCB2b2lkIElubGluZUNvbnRlbnRCYWxhbmNlcjo6
aW5pdGlhbGl6ZSgpCiAgICAgICAgIGJvb2wgaXNGaXJzdExpbmVJbkNodW5rID0gIWxpbmVJbmRl
eCB8fCBtX29yaWdpbmFsTGluZUVuZHNXaXRoRm9yY2VkQnJlYWtbbGluZUluZGV4IC0gMV07CiAg
ICAgICAgIFNsaWRpbmdXaWR0aCBsaW5lU2xpZGluZ1dpZHRoIHsgKnRoaXMsIG1faW5saW5lSXRl
bUxpc3QsIGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lSXRlbVJhbmdlLnN0YXJ0SW5kZXgoKSwgbGlu
ZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kSW5kZXgoKSwgdXNlRmlyc3RMaW5lU3R5
bGUsIGlzRmlyc3RMaW5lSW5DaHVuayB9OwogICAgICAgICBhdXRvIHByZXZpb3VzTGluZUVuZHNX
aXRoTGluZUJyZWFrID0gbGluZUluZGV4ID8gc3RkOjpvcHRpb25hbDxib29sPiB7IG1fb3JpZ2lu
YWxMaW5lRW5kc1dpdGhGb3JjZWRCcmVha1tsaW5lSW5kZXggLSAxXSB9IDogc3RkOjpudWxsb3B0
OwotICAgICAgICBhdXRvIHRleHRJbmRlbnQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmZv
cm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkVGV4dEluZGVudChJbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObywgcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5l
QnJlYWssIG1fbWF4aW11bUxpbmVXaWR0aCk7CisgICAgICAgIGF1dG8gdGV4dEluZGVudCA9IG1f
aW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxzKCkuY29tcHV0ZWRUZXh0SW5k
ZW50KElubGluZUZvcm1hdHRpbmdVdGlsczo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBwcmV2
aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhaywgbV9tYXhpbXVtTGluZVdpZHRoKTsKICAgICAgICAg
bV9vcmlnaW5hbExpbmVXaWR0aHMuYXBwZW5kKHRleHRJbmRlbnQgKyBsaW5lU2xpZGluZ1dpZHRo
LndpZHRoKCkpOwogCi0gICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUobGluZUxheW91
dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kLCBwcmV2aW91c0xpbmVFbmQsIGxheW91dFJhbmdl
LmVuZCk7CisgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gSW5saW5lRm9ybWF0dGluZ1V0aWxz
OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUobGluZUxheW91dFJlc3VsdC5p
bmxpbmVJdGVtUmFuZ2UuZW5kLCBwcmV2aW91c0xpbmVFbmQsIGxheW91dFJhbmdlLmVuZCk7CiAg
ICAgICAgIHByZXZpb3VzTGluZUVuZCA9IGxheW91dFJhbmdlLnN0YXJ0OwogICAgICAgICBwcmV2
aW91c0xpbmUgPSBQcmV2aW91c0xpbmUgeyBsaW5lSW5kZXgsIGxpbmVMYXlvdXRSZXN1bHQuY29u
dGVudEdlb21ldHJ5LnRyYWlsaW5nT3ZlcmZsb3dpbmdDb250ZW50V2lkdGgsICFsaW5lTGF5b3V0
UmVzdWx0LmlubGluZUNvbnRlbnQuaXNFbXB0eSgpICYmIGxpbmVMYXlvdXRSZXN1bHQuaW5saW5l
Q29udGVudC5sYXN0KCkuaXNMaW5lQnJlYWsoKSwgbGluZUxheW91dFJlc3VsdC5kaXJlY3Rpb25h
bGl0eS5pbmxpbmVCYXNlRGlyZWN0aW9uLCBXVEZNb3ZlKGxpbmVMYXlvdXRSZXN1bHQuZmxvYXRD
b250ZW50LnN1c3BlbmRlZEZsb2F0cykgfTsKICAgICAgICAgbGluZUluZGV4Kys7CkBAIC0yMjUs
OCArMjI1LDggQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8TGF5b3V0VW5pdD4+IElubGluZUNvbnRl
bnRCYWxhbmNlcjo6YmFsYW5jZVJhbmdlV2l0aExpbmVSZXEKIAogICAgIC8vIEluZGVudGF0aW9u
IG9mZnNldHMKICAgICBhdXRvIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrID0gaXNGaXJz
dENodW5rID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPiB7IHRydWUgfTsKLSAg
ICBhdXRvIGZpcnN0TGluZVRleHRJbmRlbnQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmZv
cm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkVGV4dEluZGVudChJbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObywgcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5l
QnJlYWssIG1fbWF4aW11bUxpbmVXaWR0aCk7Ci0gICAgYXV0byB0ZXh0SW5kZW50ID0gbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZFRleHRJbmRl
bnQoSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpJc0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGZh
bHNlLCBtX21heGltdW1MaW5lV2lkdGgpOworICAgIGF1dG8gZmlyc3RMaW5lVGV4dEluZGVudCA9
IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1V0aWxzKCkuY29tcHV0ZWRUZXh0
SW5kZW50KElubGluZUZvcm1hdHRpbmdVdGlsczo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBw
cmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhaywgbV9tYXhpbXVtTGluZVdpZHRoKTsKKyAgICBh
dXRvIHRleHRJbmRlbnQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdVdGls
cygpLmNvbXB1dGVkVGV4dEluZGVudChJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OklzSW50cmluc2lj
V2lkdGhNb2RlOjpObywgZmFsc2UsIG1fbWF4aW11bUxpbmVXaWR0aCk7CiAKICAgICBzdHJ1Y3Qg
RW50cnkgewogICAgICAgICBmbG9hdCBhY2N1bXVsYXRlZENvc3QgeyBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9OwpAQCAtMzI1LDggKzMyNSw4IEBAIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPExheW91dFVuaXQ+PiBJbmxpbmVDb250ZW50QmFsYW5jZXI6OmJhbGFuY2VSYW5n
ZVdpdGhOb0xpbmVSCiAKICAgICAvLyBJbmRlbnRhdGlvbiBvZmZzZXRzCiAgICAgYXV0byBwcmV2
aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhayA9IGlzRmlyc3RDaHVuayA/IHN0ZDo6bnVsbG9wdCA6
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4geyB0cnVlIH07Ci0gICAgYXV0byBmaXJzdExpbmVUZXh0SW5k
ZW50ID0gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21w
dXRlZFRleHRJbmRlbnQoSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpJc0ludHJpbnNpY1dpZHRo
TW9kZTo6Tm8sIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrLCBtX21heGltdW1MaW5lV2lk
dGgpOwotICAgIGF1dG8gdGV4dEluZGVudCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9y
bWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRUZXh0SW5kZW50KElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBmYWxzZSwgbV9tYXhpbXVtTGluZVdpZHRo
KTsKKyAgICBhdXRvIGZpcnN0TGluZVRleHRJbmRlbnQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmZvcm1hdHRpbmdVdGlscygpLmNvbXB1dGVkVGV4dEluZGVudChJbmxpbmVGb3JtYXR0aW5n
VXRpbHM6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObywgcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5l
QnJlYWssIG1fbWF4aW11bUxpbmVXaWR0aCk7CisgICAgYXV0byB0ZXh0SW5kZW50ID0gbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nVXRpbHMoKS5jb21wdXRlZFRleHRJbmRlbnQo
SW5saW5lRm9ybWF0dGluZ1V0aWxzOjpJc0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGZhbHNlLCBt
X21heGltdW1MaW5lV2lkdGgpOwogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgZmxvYXQg
YWNjdW11bGF0ZWRDb3N0IHsgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJhbGFuY2VyLmgKaW5kZXggMjVi
N2Y4OGY3Mzk4Li5mOGE0NDEzM2MzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCYWxhbmNlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNv
bnRlbnRCYWxhbmNlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJGb3JtYXR0aW5n
Q29uc3RyYWludHMuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgorI2luY2x1ZGUgIklubGluZUZvcm1h
dHRpbmdVdGlscy5oIgogI2luY2x1ZGUgIklubGluZUl0ZW0uaCIKICNpbmNsdWRlICJJbmxpbmVM
aW5lQnVpbGRlci5oIgogI2luY2x1ZGUgIklubGluZVRleHRJdGVtLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZTI2OGRkZTJkNzBh
Li4zYWJhMmFlMDdjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKElubGluZUZvcm1hdHRpbmdDb250ZXh0KTsKIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgQmxvY2tMYXlvdXRTdGF0ZSYgcGFyZW50
QmxvY2tMYXlvdXRTdGF0ZSkKICAgICA6IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250
ZXh0Um9vdCwgbGF5b3V0U3RhdGUpCiAgICAgLCBtX2lubGluZUNvbnRlbnRDYWNoZShsYXlvdXRT
dGF0ZS5pbmxpbmVDb250ZW50Q2FjaGUoZm9ybWF0dGluZ0NvbnRleHRSb290KSkKLSAgICAsIG1f
aW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5KCp0aGlzKQorICAgICwgbV9pbmxpbmVGb3JtYXR0aW5n
VXRpbHMoKnRoaXMpCiAgICAgLCBtX2lubGluZVF1aXJrcygqdGhpcykKICAgICAsIG1faW5saW5l
TGF5b3V0U3RhdGUocGFyZW50QmxvY2tMYXlvdXRTdGF0ZSkKIHsKQEAgLTE4Miw3ICsxODIsNyBA
QCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQo
QWJzdHJhY3RMaW5lQnVpbGRlciYgbGluZQogICAgIGF1dG8gbGVhZGluZ0lubGluZUl0ZW1Qb3Np
dGlvbiA9IG5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQ7CiAgICAgd2hpbGUgKHRydWUpIHsKIAotICAg
ICAgICBhdXRvIGxpbmVJbml0aWFsUmVjdCA9IElubGluZVJlY3QgeyBsaW5lTG9naWNhbFRvcCwg
Y29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5ob3Jpem9u
dGFsKCkubG9naWNhbFdpZHRoLCBmb3JtYXR0aW5nR2VvbWV0cnkoKS5pbml0aWFsTGluZUhlaWdo
dCghcHJldmlvdXNMaW5lLmhhc192YWx1ZSgpKSB9OworICAgICAgICBhdXRvIGxpbmVJbml0aWFs
UmVjdCA9IElubGluZVJlY3QgeyBsaW5lTG9naWNhbFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRh
bCgpLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoLCBm
b3JtYXR0aW5nVXRpbHMoKS5pbml0aWFsTGluZUhlaWdodCghcHJldmlvdXNMaW5lLmhhc192YWx1
ZSgpKSB9OwogICAgICAgICBhdXRvIGxpbmVJbnB1dCA9IExpbmVJbnB1dCB7IHsgbGVhZGluZ0lu
bGluZUl0ZW1Qb3NpdGlvbiwgbmVlZHNMYXlvdXRSYW5nZS5lbmQgfSwgbGluZUluaXRpYWxSZWN0
IH07CiAgICAgICAgIGF1dG8gbGluZUluZGV4ID0gcHJldmlvdXNMaW5lID8gKHByZXZpb3VzTGlu
ZS0+bGluZUluZGV4ICsgMSkgOiAwbHU7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBJbmxpbmVMYXlv
dXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoQWJzdHJhY3RMaW5l
QnVpbGRlciYgbGluZQogICAgICAgICB1cGRhdGVJbmxpbmVMYXlvdXRTdGF0ZVdpdGhMaW5lTGF5
b3V0UmVzdWx0KGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250
ZXh0KTsKIAogICAgICAgICBhdXRvIGxpbmVDb250ZW50RW5kID0gbGluZUxheW91dFJlc3VsdC5p
bmxpbmVJdGVtUmFuZ2UuZW5kOwotICAgICAgICBsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uID0g
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4
dExpbmUobGluZUNvbnRlbnRFbmQsIHByZXZpb3VzTGluZUVuZCwgbmVlZHNMYXlvdXRSYW5nZS5l
bmQpOworICAgICAgICBsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uID0gSW5saW5lRm9ybWF0dGlu
Z1V0aWxzOjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUobGluZUNvbnRlbnRF
bmQsIHByZXZpb3VzTGluZUVuZCwgbmVlZHNMYXlvdXRSYW5nZS5lbmQpOwogICAgICAgICBhdXRv
IGlzTGFzdExpbmUgPSBsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uID09IG5lZWRzTGF5b3V0UmFu
Z2UuZW5kICYmIGxpbmVMYXlvdXRSZXN1bHQuZmxvYXRDb250ZW50LnN1c3BlbmRlZEZsb2F0cy5p
c0VtcHR5KCk7CiAgICAgICAgIGlmIChpc0xhc3RMaW5lKSB7CiAgICAgICAgICAgICBsYXlvdXRS
ZXN1bHQucmFuZ2UgPSAhaXNQYXJ0aWFsTGF5b3V0ID8gSW5saW5lTGF5b3V0UmVzdWx0OjpSYW5n
ZTo6RnVsbCA6IElubGluZUxheW91dFJlc3VsdDo6UmFuZ2U6OkZ1bGxGcm9tRGFtYWdlOwpAQCAt
MjA2LDcgKzIwNiw3IEBAIElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGluZUxheW91dChBYnN0cmFjdExpbmVCdWlsZGVyJiBsaW5lCiAKICAgICAgICAgcHJldmlv
dXNMaW5lID0gUHJldmlvdXNMaW5lIHsgbGluZUluZGV4LCBsaW5lTGF5b3V0UmVzdWx0LmNvbnRl
bnRHZW9tZXRyeS50cmFpbGluZ092ZXJmbG93aW5nQ29udGVudFdpZHRoLCAhbGluZUxheW91dFJl
c3VsdC5pbmxpbmVDb250ZW50LmlzRW1wdHkoKSAmJiBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNv
bnRlbnQubGFzdCgpLmlzTGluZUJyZWFrKCksIGxpbmVMYXlvdXRSZXN1bHQuZGlyZWN0aW9uYWxp
dHkuaW5saW5lQmFzZURpcmVjdGlvbiwgV1RGTW92ZShsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29u
dGVudC5zdXNwZW5kZWRGbG9hdHMpIH07CiAgICAgICAgIHByZXZpb3VzTGluZUVuZCA9IGxpbmVD
b250ZW50RW5kOwotICAgICAgICBsaW5lTG9naWNhbFRvcCA9IGZvcm1hdHRpbmdHZW9tZXRyeSgp
LmxvZ2ljYWxUb3BGb3JOZXh0TGluZShsaW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNhbFJlY3Qs
IGZsb2F0aW5nQ29udGV4dCk7CisgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gZm9ybWF0dGluZ1V0
aWxzKCkubG9naWNhbFRvcEZvck5leHRMaW5lKGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2Fs
UmVjdCwgZmxvYXRpbmdDb250ZXh0KTsKICAgICB9CiAgICAgSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyOjphZGRMaW5lQ2xhbXBUcmFpbGluZ0xpbmtCb3hJZkFwcGxpY2FibGUoKnRoaXMsIGlubGlu
ZUxheW91dFN0YXRlKCksIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CiAgICAgcmV0dXJu
IGxheW91dFJlc3VsdDsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojp1cGRhdGVJbmxpbmVMYXlvdXRTdGF0ZVdpdGhMaW5lTGF5b3V0UmVzdWx0KGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKGxpbmVMYXlvdXRSZXN1bHQuaXNGaXJzdExhc3QuaXNMYXN0TGlu
ZVdpdGhJbmxpbmVDb250ZW50KQotICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZSgpLnNldENsZWFy
R2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nR2VvbWV0cnkoKS5sb2dpY2FsVG9wRm9yTmV4dExp
bmUobGluZUxheW91dFJlc3VsdCwgbGluZUxvZ2ljYWxSZWN0LCBmbG9hdGluZ0NvbnRleHQpIC0g
bGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgpKTsKKyAgICAgICAgaW5saW5lTGF5b3V0U3RhdGUoKS5z
ZXRDbGVhckdhcEFmdGVyTGFzdExpbmUoZm9ybWF0dGluZ1V0aWxzKCkubG9naWNhbFRvcEZvck5l
eHRMaW5lKGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0
KSAtIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSk7CiAKICAgICBsaW5lTGF5b3V0UmVzdWx0LmVu
ZHNXaXRoSHlwaGVuID8gaW5saW5lTGF5b3V0U3RhdGUoKS5pbmNyZW1lbnRTdWNjZXNzaXZlSHlw
aGVuYXRlZExpbmVDb3VudCgpIDogaW5saW5lTGF5b3V0U3RhdGUoKS5yZXNldFN1Y2Nlc3NpdmVI
eXBoZW5hdGVkTGluZUNvdW50KCk7CiB9CkBAIC0zMDUsNyArMzA1LDcgQEAgSW5saW5lUmVjdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JJbmxpbmVDb250
ZW50KGNvbnN0IEwKIAogICAgIGRpc3BsYXlDb250ZW50LmJveGVzLmFwcGVuZFZlY3RvcihXVEZN
b3ZlKGJveGVzKSk7CiAgICAgZGlzcGxheUNvbnRlbnQubGluZXMuYXBwZW5kKGRpc3BsYXlMaW5l
KTsKLSAgICByZXR1cm4gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpmbGlwVmlzdWFsUmVjdFRv
TG9naWNhbEZvcldyaXRpbmdNb2RlKGRpc3BsYXlDb250ZW50LmxpbmVzLmxhc3QoKS5saW5lQm94
UmVjdCgpLCByb290KCkuc3R5bGUoKS53cml0aW5nTW9kZSgpKTsKKyAgICByZXR1cm4gSW5saW5l
Rm9ybWF0dGluZ1V0aWxzOjpmbGlwVmlzdWFsUmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGRp
c3BsYXlDb250ZW50LmxpbmVzLmxhc3QoKS5saW5lQm94UmVjdCgpLCByb290KCkuc3R5bGUoKS53
cml0aW5nTW9kZSgpKTsKIH0KIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6cmVzZXRH
ZW9tZXRyeUZvckNsYW1wZWRDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHNEaXNw
bGF5Q29udGVudFJhbmdlLCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0OjpTdXNwZW5kZWRGbG9hdExp
c3QmIHN1c3BlbmRlZEZsb2F0cywgTGF5b3V0UG9pbnQgdG9wbGVmdCkKQEAgLTM2Myw3ICszNjMs
NyBAQCBib29sIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZv
ckxpbmVGcm9tQ2FjaGVkQ29udGVudChjb25zdAogCiAgICAgbGluZUJyZWFraW5nUmVzdWx0Lmxp
bmVHZW9tZXRyeS5sb2dpY2FsVG9wTGVmdCA9IHsgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxv
Z2ljYWxMZWZ0LCBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkgfTsKICAgICBsaW5lQnJlYWtpbmdS
ZXN1bHQubGluZUdlb21ldHJ5LmxvZ2ljYWxXaWR0aCA9IGNvbnN0cmFpbnRzLmhvcml6b250YWwo
KS5sb2dpY2FsV2lkdGg7Ci0gICAgbGluZUJyZWFraW5nUmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5s
b2dpY2FsTGVmdCA9IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aG9yaXpvbnRhbEFsaWdubWVu
dE9mZnNldChyb290KCkuc3R5bGUoKSwgbGluZUJyZWFraW5nUmVzdWx0LmNvbnRlbnRHZW9tZXRy
eS5sb2dpY2FsV2lkdGgsIGxpbmVCcmVha2luZ1Jlc3VsdC5saW5lR2VvbWV0cnkubG9naWNhbFdp
ZHRoLCBsaW5lQnJlYWtpbmdSZXN1bHQuaGFuZ2luZ0NvbnRlbnQubG9naWNhbFdpZHRoLCBsaW5l
QnJlYWtpbmdSZXN1bHQuaW5saW5lQ29udGVudCwgdHJ1ZSk7CisgICAgbGluZUJyZWFraW5nUmVz
dWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsTGVmdCA9IElubGluZUZvcm1hdHRpbmdVdGlsczo6
aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChyb290KCkuc3R5bGUoKSwgbGluZUJyZWFraW5nUmVz
dWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVCcmVha2luZ1Jlc3VsdC5saW5l
R2VvbWV0cnkubG9naWNhbFdpZHRoLCBsaW5lQnJlYWtpbmdSZXN1bHQuaGFuZ2luZ0NvbnRlbnQu
bG9naWNhbFdpZHRoLCBsaW5lQnJlYWtpbmdSZXN1bHQuaW5saW5lQ29udGVudCwgdHJ1ZSk7CiAg
ICAgYXV0byBsaW5lQm94ID0gTGluZUJveEJ1aWxkZXIgeyAqdGhpcywgbGluZUJyZWFraW5nUmVz
dWx0IH0uYnVpbGQoeyB9KTsKICAgICBjcmVhdGVEaXNwbGF5Q29udGVudEZvcklubGluZUNvbnRl
bnQobGluZUJveCwgbGluZUJyZWFraW5nUmVzdWx0LCBjb25zdHJhaW50cywgbGF5b3V0UmVzdWx0
LmRpc3BsYXlDb250ZW50KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDkwZGJhYmIzYWNmMy4uNjZmNzBiMmI3
MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
QEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRl
ICJJbmxpbmVEaXNwbGF5Q29udGVudC5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdDb25z
dHJhaW50cy5oIgotI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgorI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdVdGlscy5oIgogI2luY2x1ZGUgIklubGluZUxheW91dFN0YXRl
LmgiCiAjaW5jbHVkZSAiSW5saW5lUXVpcmtzLmgiCiAjaW5jbHVkZSAiSW50cmluc2ljV2lkdGhI
YW5kbGVyLmgiCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBJbmxpbmVMYXlvdXRSZXN1bHQgewog
CiAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIGxheW91dCBsb2dpYyBmb3IgaW5saW5lIGZv
cm1hdHRpbmcgY29udGV4dHMuCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdmlzdXJl
bi5odG1sI2lubGluZS1mb3JtYXR0aW5nCi1jbGFzcyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CitjbGFzcyBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBM
YXlvdXRTdGF0ZSYsIEJsb2NrTGF5b3V0U3RhdGUmIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUpOwpA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBj
b21wdXRlZEludHJpbnNpY1NpemVzKGNvbnN0IElubGluZURhbWFnZSopOwogICAgIExheW91dFVu
aXQgbWF4aW11bUNvbnRlbnRTaXplKCk7CiAKLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faW5saW5l
Rm9ybWF0dGluZ0dlb21ldHJ5OyB9CisgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ1V0aWxzJiBm
b3JtYXR0aW5nVXRpbHMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdVdGlsczsg
fQogICAgIGNvbnN0IElubGluZVF1aXJrcyYgcXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVRdWlya3M7IH0KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQganVzdCBiZSAibGF5b3V0IHN0
YXRlIiAocGVuZGluZyBvbiByZW5hbWluZyBMYXlvdXRTdGF0ZSkuCiAgICAgSW5saW5lTGF5b3V0
U3RhdGUmIGlubGluZUxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9pbmxpbmVMYXlvdXRTdGF0ZTsg
fQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogCiBwcml2YXRlOgogICAgIElubGluZUNvbnRl
bnRDYWNoZSYgbV9pbmxpbmVDb250ZW50Q2FjaGU7Ci0gICAgY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5IG1faW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OworICAgIGNvbnN0IElubGluZUZv
cm1hdHRpbmdVdGlscyBtX2lubGluZUZvcm1hdHRpbmdVdGlsczsKICAgICBjb25zdCBJbmxpbmVR
dWlya3MgbV9pbmxpbmVRdWlya3M7CiAgICAgSW5saW5lTGF5b3V0U3RhdGUgbV9pbmxpbmVMYXlv
dXRTdGF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1V0
aWxzLmNwcApzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuY3BwCmluZGV4IDFlNmExMmQ1Y2NlMy4uMDc4OTcx
MzJhYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdVdGls
cy5jcHAKQEAgLTI0LDE3ICsyNCwxNSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCIKKyNpbmNsdWRlICJJbmxpbmVGb3Jt
YXR0aW5nVXRpbHMuaCIKIAogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiRm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJJbmxpbmVEaXNwbGF5Q29udGVudC5oIgotI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lTGV2ZWxCb3hJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW5s
aW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oIgogI2luY2x1ZGUgIklubGluZVF1aXJrcy5oIgot
I2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEVsZW1lbnRCb3guaCIKICNp
bmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUlubGluZXMu
aCIKQEAgLTQzLDEyICs0MSwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExh
eW91dCB7CiAKLUlubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6SW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCkKLSAgICA6IEZvcm1hdHRpbmdHZW9tZXRyeShpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKK0lu
bGluZUZvcm1hdHRpbmdVdGlsczo6SW5saW5lRm9ybWF0dGluZ1V0aWxzKGNvbnN0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKKyAgICA6IG1faW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiB7CiB9CiAKLUlubGlu
ZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExp
bmUoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgSW5saW5l
UmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29u
dGV4dCkgY29uc3QKK0lubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpsb2dp
Y2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3Vs
dCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdGluZ0NvbnRl
eHQmIGZsb2F0aW5nQ29udGV4dCkgY29uc3QKIHsKICAgICBhdXRvIGRpZE1hbmFnZVRvUGxhY2VJ
bmxpbmVDb250ZW50T3JGbG9hdCA9ICFsaW5lTGF5b3V0UmVzdWx0LmlubGluZUl0ZW1SYW5nZS5p
c0VtcHR5KCk7CiAgICAgaWYgKGRpZE1hbmFnZVRvUGxhY2VJbmxpbmVDb250ZW50T3JGbG9hdCkg
ewpAQCAtOTYsNDUgKzk0LDIzIEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUxheW91CiAgICAgcmV0dXJu
IGNlaWwobmV4dGFmdGVyKGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSwgc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46Om1heCgpKSk7CiB9CiAKLUNvbnRlbnRXaWR0aEFuZE1hcmdpbiBJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUJsb2NrQ29udGVudFdpZHRoQW5kTWFyZ2luKGNvbnN0
IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
IGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMm
IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzKSBjb25zdAorQ29udGVudFdpZHRoQW5kTWFyZ2lu
IElubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lQmxvY2tDb250ZW50V2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRl
bkhvcml6b250YWxWYWx1ZXMmKSBjb25zdAogewotICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4
dFJvb3QuaXNJbkZsb3coKSk7Ci0KLSAgICAvLyAxMC4zLjEwICdJbmxpbmUtYmxvY2snLCByZXBs
YWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwotCi0gICAgLy8gRXhhY3RseSBhcyBpbmxpbmUg
cmVwbGFjZWQgZWxlbWVudHMuCi0gICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5pc1JlcGxh
Y2VkQm94KCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1h
cmdpbihkb3duY2FzdDxFbGVtZW50Qm94Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QpLCBob3Jpem9u
dGFsQ29uc3RyYWludHMsIHsgfSwgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMpOwotCisgICAg
QVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAvLyAxMC4zLjkgJ0lubGluZS1ibG9j
aycsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdwotCi0gICAgLy8gSWYgJ3dp
ZHRoJyBpcyAnYXV0bycsIHRoZSB1c2VkIHZhbHVlIGlzIHRoZSBzaHJpbmstdG8tZml0IHdpZHRo
IGFzIGZvciBmbG9hdGluZyBlbGVtZW50cy4KLSAgICAvLyBBIGNvbXB1dGVkIHZhbHVlIG9mICdh
dXRvJyBmb3IgJ21hcmdpbi1sZWZ0JyBvciAnbWFyZ2luLXJpZ2h0JyBiZWNvbWVzIGEgdXNlZCB2
YWx1ZSBvZiAnMCcuCi0gICAgLy8gIzEKLSAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZShm
b3JtYXR0aW5nQ29udGV4dFJvb3Quc3R5bGUoKS5sb2dpY2FsV2lkdGgoKSwgaG9yaXpvbnRhbENv
bnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7Ci0gICAgaWYgKCF3aWR0aCkKLSAgICAgICAgd2lkdGgg
PSBzaHJpbmtUb0ZpdFdpZHRoKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaG9yaXpvbnRhbENvbnN0
cmFpbnRzLmxvZ2ljYWxXaWR0aCk7Ci0KLSAgICAvLyAjMgotICAgIGF1dG8gY29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJn
aW4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotCi0gICAg
cmV0dXJuIENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5l
bmQudmFsdWVfb3IoMF9sdSkgfSB9OworICAgIC8vIDEwLjMuMTAgJ0lubGluZS1ibG9jaycsIHJl
cGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93CisgICAgcmV0dXJuIHsgfTsKIH0KIAotQ29u
dGVudEhlaWdodEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUJsb2Nr
Q29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpv
bnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IE92ZXJyaWRkZW5W
ZXJ0aWNhbFZhbHVlcyYgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKSBjb25zdAorQ29udGVudEhl
aWdodEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmlubGluZUJsb2NrQ29udGVudEhl
aWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBj
b25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdAogewotICAgIEFTU0VSVChsYXlv
dXRCb3guaXNJbkZsb3coKSk7Ci0KKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwog
ICAgIC8vIDEwLjYuMiBJbmxpbmUgcmVwbGFjZWQgZWxlbWVudHMsIGJsb2NrLWxldmVsIHJlcGxh
Y2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93LCAnaW5saW5lLWJsb2NrJyByZXBsYWNlZCBlbGVt
ZW50cyBpbiBub3JtYWwgZmxvdyBhbmQgZmxvYXRpbmcgcmVwbGFjZWQgZWxlbWVudHMKLSAgICBp
ZiAobGF5b3V0Qm94LmlzUmVwbGFjZWRCb3goKSkKLSAgICAgICAgcmV0dXJuIGlubGluZVJlcGxh
Y2VkQ29udGVudEhlaWdodEFuZE1hcmdpbihkb3duY2FzdDxFbGVtZW50Qm94PihsYXlvdXRCb3gp
LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzKTsK
LQogICAgIC8vIDEwLjYuNiBDb21wbGljYXRlZCBjYXNlcwotICAgIC8vIC0gJ0lubGluZS1ibG9j
aycsIG5vbi1yZXBsYWNlZCBlbGVtZW50cy4KLSAgICByZXR1cm4gY29tcGxpY2F0ZWRDYXNlcyhs
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVz
KTsKKyAgICByZXR1cm4geyB9OwogfQogCi1ib29sIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6
aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5l
TGV2ZWxCb3gpIGNvbnN0Citib29sIElubGluZUZvcm1hdHRpbmdVdGlsczo6aW5saW5lTGV2ZWxC
b3hBZmZlY3RzTGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gpIGNv
bnN0CiB7CiAgICAgaWYgKCFpbmxpbmVMZXZlbEJveC5tYXlTdHJldGNoTGluZUJveCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTAsNyArMTI2LDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnk6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goY29uc3QgSW5saW5lTGV2
ZWxCb3gKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5OjpmbGlwVmlzdWFsUmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElu
bGluZVJlY3QmIHZpc3VhbFJlY3QsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQorSW5saW5lUmVj
dCBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6OmZsaXBWaXN1YWxSZWN0VG9Mb2dpY2FsRm9yV3JpdGlu
Z01vZGUoY29uc3QgSW5saW5lUmVjdCYgdmlzdWFsUmVjdCwgV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUpCiB7CiAgICAgc3dpdGNoICh3cml0aW5nTW9kZVRvQmxvY2tGbG93RGlyZWN0aW9uKHdyaXRp
bmdNb2RlKSkgewogICAgIGNhc2UgQmxvY2tGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbToKQEAg
LTE3MCw3ICsxNDYsNyBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Zmxp
cFZpc3VhbFJlY3RUb0xvZ2ljYWxGb3JXcml0aW5nTW9kZShjb25zdAogICAgIHJldHVybiB2aXN1
YWxSZWN0OwogfQogCi1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6
Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2ljV2lkdGhNb2RlIGlzSW50cmluc2ljV2lkdGhN
b2RlLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrLCBJ
bmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKSBjb25zdAorSW5saW5lTGF5b3V0VW5pdCBJ
bmxpbmVGb3JtYXR0aW5nVXRpbHM6OmNvbXB1dGVkVGV4dEluZGVudChJc0ludHJpbnNpY1dpZHRo
TW9kZSBpc0ludHJpbnNpY1dpZHRoTW9kZSwgc3RkOjpvcHRpb25hbDxib29sPiBwcmV2aW91c0xp
bmVFbmRzV2l0aExpbmVCcmVhaywgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkgY29u
c3QKIHsKICAgICBhdXRvJiByb290ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7CiAKQEAg
LTIxMCwxNCArMTg2LDE0IEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5Ojpjb21wdXRlZFRleHRJbmRlbnQoSXNJbnRyaW5zaWNXaWR0aE1vCiAgICAgcmV0dXJuIHsg
bWluaW11bVZhbHVlRm9yTGVuZ3RoKHRleHRJbmRlbnQsIGF2YWlsYWJsZVdpZHRoKSB9OwogfQog
Ci1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5pdGlhbExpbmVI
ZWlnaHQoYm9vbCBpc0ZpcnN0TGluZSkgY29uc3QKK0lubGluZUxheW91dFVuaXQgSW5saW5lRm9y
bWF0dGluZ1V0aWxzOjppbml0aWFsTGluZUhlaWdodChib29sIGlzRmlyc3RMaW5lKSBjb25zdAog
ewogICAgIGlmIChpbmxpbmVMYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQogICAgICAg
ICByZXR1cm4gaXNGaXJzdExpbmUgPyBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5maXJzdExp
bmVTdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpIDogZm9ybWF0dGluZ0NvbnRleHQoKS5yb290
KCkuc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKICAgICByZXR1cm4gZm9ybWF0dGluZ0Nv
bnRleHQoKS5xdWlya3MoKS5pbml0aWFsTGluZUhlaWdodCgpOwogfQogCi1GbG9hdGluZ0NvbnRl
eHQ6OkNvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6ZmxvYXRDb25zdHJhaW50
c0ZvckxpbmUoSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCwgSW5saW5lTGF5b3V0VW5p
dCBjb250ZW50TG9naWNhbEhlaWdodCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0Nv
bnRleHQpIGNvbnN0CitGbG9hdGluZ0NvbnRleHQ6OkNvbnN0cmFpbnRzIElubGluZUZvcm1hdHRp
bmdVdGlsczo6ZmxvYXRDb25zdHJhaW50c0ZvckxpbmUoSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9n
aWNhbFRvcCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodCwgY29uc3QgRmxv
YXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0CiB7CiAgICAgYXV0byBsb2dpY2Fs
VG9wQ2FuZGlkYXRlID0gTGF5b3V0VW5pdCB7IGxpbmVMb2dpY2FsVG9wIH07CiAgICAgYXV0byBs
b2dpY2FsQm90dG9tQ2FuZGlkYXRlID0gTGF5b3V0VW5pdCB7IGxpbmVMb2dpY2FsVG9wICsgY29u
dGVudExvZ2ljYWxIZWlnaHQgfTsKQEAgLTIyNyw3ICsyMDMsNyBAQCBGbG9hdGluZ0NvbnRleHQ6
OkNvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6ZmxvYXRDb25zdHJhaW50c0Zv
ckxpbmUoSQogICAgIHJldHVybiBmbG9hdGluZ0NvbnRleHQuY29uc3RyYWludHMobG9naWNhbFRv
cENhbmRpZGF0ZSwgbG9naWNhbEJvdHRvbUNhbmRpZGF0ZSwgRmxvYXRpbmdDb250ZXh0OjpNYXlC
ZUFib3ZlTGFzdEZsb2F0OjpZZXMpOwogfQogCi1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1h
dHRpbmdHZW9tZXRyeTo6aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChjb25zdCBSZW5kZXJTdHls
ZSYgcm9vdFN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHQsIElubGlu
ZUxheW91dFVuaXQgbGluZUxvZ2ljYWxXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBoYW5naW5nVHJh
aWxpbmdXaWR0aCwgY29uc3QgTGluZTo6UnVuTGlzdCYgcnVucywgYm9vbCBpc0xhc3RMaW5lLCBz
dGQ6Om9wdGlvbmFsPFRleHREaXJlY3Rpb24+IGlubGluZUJhc2VEaXJlY3Rpb25PdmVycmlkZSkK
K0lubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpob3Jpem9udGFsQWxpZ25t
ZW50T2Zmc2V0KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIElubGluZUxheW91dFVuaXQg
Y29udGVudExvZ2ljYWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFdpZHRoLCBJ
bmxpbmVMYXlvdXRVbml0IGhhbmdpbmdUcmFpbGluZ1dpZHRoLCBjb25zdCBMaW5lOjpSdW5MaXN0
JiBydW5zLCBib29sIGlzTGFzdExpbmUsIHN0ZDo6b3B0aW9uYWw8VGV4dERpcmVjdGlvbj4gaW5s
aW5lQmFzZURpcmVjdGlvbk92ZXJyaWRlKQogewogICAgIC8vIERlcGVuZGluZyBvbiB0aGUgbGlu
ZeKAmXMgYWxpZ25tZW50L2p1c3RpZmljYXRpb24sIHRoZSBoYW5naW5nIGdseXBoIGNhbiBiZSBw
bGFjZWQgb3V0c2lkZSB0aGUgbGluZSBib3guCiAgICAgaWYgKGhhbmdpbmdUcmFpbGluZ1dpZHRo
KSB7CkBAIC0zMDgsNyArMjg0LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnk6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoY29uc3QgUmVuZGUKICAgICByZXR1
cm4geyB9OwogfQogCi1JbmxpbmVJdGVtUG9zaXRpb24gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5
OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4dExpbmUoSW5saW5lSXRlbVBvc2l0aW9u
IGxpbmVDb250ZW50RW5kLCBzdGQ6Om9wdGlvbmFsPElubGluZUl0ZW1Qb3NpdGlvbj4gcHJldmlv
dXNMaW5lVHJhaWxpbmdJbmxpbmVJdGVtUG9zaXRpb24sIElubGluZUl0ZW1Qb3NpdGlvbiBsYXlv
dXRSYW5nZUVuZCkKK0lubGluZUl0ZW1Qb3NpdGlvbiBJbmxpbmVGb3JtYXR0aW5nVXRpbHM6Omxl
YWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0TGluZShJbmxpbmVJdGVtUG9zaXRpb24gbGlu
ZUNvbnRlbnRFbmQsIHN0ZDo6b3B0aW9uYWw8SW5saW5lSXRlbVBvc2l0aW9uPiBwcmV2aW91c0xp
bmVUcmFpbGluZ0lubGluZUl0ZW1Qb3NpdGlvbiwgSW5saW5lSXRlbVBvc2l0aW9uIGxheW91dFJh
bmdlRW5kKQogewogICAgIGlmICghcHJldmlvdXNMaW5lVHJhaWxpbmdJbmxpbmVJdGVtUG9zaXRp
b24pCiAgICAgICAgIHJldHVybiBsaW5lQ29udGVudEVuZDsKQEAgLTMyNiw3ICszMDIsNyBAQCBJ
bmxpbmVJdGVtUG9zaXRpb24gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpsZWFkaW5nSW5saW5l
SXRlbVBvc2l0aW9uRm9yTmV4dExpbgogICAgIHJldHVybiB7IHN0ZDo6bWluKGxpbmVDb250ZW50
RW5kLmluZGV4ICsgMSwgbGF5b3V0UmFuZ2VFbmQuaW5kZXgpLCB7IH0gfTsKIH0KIAotSW5saW5l
TGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUl0ZW1XaWR0aChjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2Fs
TGVmdCwgYm9vbCB1c2VGaXJzdExpbmVTdHlsZSkgY29uc3QKK0lubGluZUxheW91dFVuaXQgSW5s
aW5lRm9ybWF0dGluZ1V0aWxzOjppbmxpbmVJdGVtV2lkdGgoY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQsIGJvb2wgdXNlRmly
c3RMaW5lU3R5bGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlubGluZUl0ZW0ubGF5b3V0Qm94KCku
aXNJbmxpbmVMZXZlbEJveCgpKTsKICAgICBpZiAoaXM8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0
ZW0pKSB7CkBAIC00NDEsNyArNDE3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXRTb2Z0V3Jh
cE9wcG9ydHVuaXR5KGNvbnN0IElubGluZUl0ZW0mIHByZXZpb3VzLCBjb25zdCBJbmwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6bmV4dFdy
YXBPcHBvcnR1bml0eShzaXplX3Qgc3RhcnRJbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBs
YXlvdXRSYW5nZSwgY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0KQorc2l6ZV90
IElubGluZUZvcm1hdHRpbmdVdGlsczo6bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3Qgc3RhcnRJ
bmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwgY29uc3QgSW5saW5lSXRl
bUxpc3QmIGlubGluZUl0ZW1MaXN0KQogewogICAgIC8vIDEuIEZpbmQgdGhlIHN0YXJ0IGNhbmRp
ZGF0ZSBieSBza2lwcGluZyBsZWFkaW5nIG5vbi1jb250ZW50IGl0ZW1zIGUuZyAiPHNwYW4+PHNw
YW4+c3RhcnQiLiBPcHBvcnR1bml0eSBpcyBhZnRlciAiPHNwYW4+PHNwYW4+Ii4KICAgICAvLyAy
LiBGaW5kIHRoZSBlbmQgY2FuZGlkYXRlIGJ5IHNraXBwaW5nIG5vbi1jb250ZW50IGl0ZW1zIGlu
YmV0d2VlbiBlLmcuICI8c3Bhbj48c3Bhbj5zdGFydDwvc3Bhbj5lbmQiLiBPcHBvcnR1bml0eSBp
cyBhZnRlciAiPC9zcGFuPiIuCkBAIC01MjcsNyArNTAzLDcgQEAgc2l6ZV90IElubGluZUZvcm1h
dHRpbmdHZW9tZXRyeTo6bmV4dFdyYXBPcHBvcnR1bml0eShzaXplX3Qgc3RhcnRJbmRleCwgY29u
c3QgSW4KICAgICByZXR1cm4gbGF5b3V0UmFuZ2UuZW5kSW5kZXgoKTsKIH0KIAotY29uc3QgSW5s
aW5lTGF5b3V0U3RhdGUmIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lTGF5b3V0U3Rh
dGUoKSBjb25zdAorY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIElubGluZUZvcm1hdHRpbmdVdGls
czo6aW5saW5lTGF5b3V0U3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBmb3JtYXR0aW5nQ29u
dGV4dCgpLmlubGluZUxheW91dFN0YXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdVdGlscy5oCnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeS5oCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nVXRpbHMuaAppbmRleCA5M2FkYzlmMjQ2
YWIuLmU0ODI5YTBlMjRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ1V0aWxzLmgKQEAgLTI1LDggKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
ICJGbG9hdGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJGb3JtYXR0aW5nR2VvbWV0cnkuaCIKICNp
bmNsdWRlICJJbmxpbmVMaW5lQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
Niw5ICszNCw5IEBAIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKIGNsYXNzIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OwogY2xhc3MgSW5saW5lTGV2ZWxCb3g7CiAKLWNsYXNzIElubGluZUZvcm1hdHRp
bmdHZW9tZXRyeSA6IHB1YmxpYyBGb3JtYXR0aW5nR2VvbWV0cnkgeworY2xhc3MgSW5saW5lRm9y
bWF0dGluZ1V0aWxzIHsKIHB1YmxpYzoKLSAgICBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoY29u
c3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKKyAgICBJbmxpbmVGb3JtYXR0aW5nVXRpbHMo
Y29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKIAogICAgIElubGluZUxheW91dFVuaXQg
bG9naWNhbFRvcEZvck5leHRMaW5lKGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBJbmxp
bmVSZWN0JiBsaW5lTG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYpIGNvbnN0Owog
CkBAIC02OSwxMiArNjcsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRV
bml0IGNvbnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0Nv
bnRlbnQmLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJv
dHRvbSwgY29uc3QgRmxvYXRpbmdDb250ZXh0JikgY29uc3Q7CiAKLSAgICBjb25zdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0dGluZ0dlb21ldHJ5Ojpmb3JtYXR0
aW5nQ29udGV4dCgpKTsgfQogICAgIGNvbnN0IElubGluZUxheW91dFN0YXRlJiBpbmxpbmVMYXlv
dXRTdGF0ZSgpIGNvbnN0OworICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7
IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDsKKwogfTsKIAogfQogfQogCi1TUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0xBWU9VVF9GT1JNQVRUSU5HX0dFT01FVFJZKElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSwg
aXNJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoKSkKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVs
Qm94LmgKaW5kZXggN2EzYjY1ODg1YjdlLi42ZmNmZjZkOWRhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGV2ZWxCb3guaApAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIExpbmVCb3g7CiAgICAgZnJpZW5kIGNsYXNzIExpbmVCb3hCdWlsZGVyOwogICAgIGZy
aWVuZCBjbGFzcyBMaW5lQm94VmVydGljYWxBbGlnbmVyOwotICAgIGZyaWVuZCBjbGFzcyBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk7CisgICAgZnJpZW5kIGNsYXNzIElubGluZUZvcm1hdHRpbmdV
dGlsczsKIAogICAgIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9sb2dpY2FsUmVjdDsgfQogICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFRvcCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3QudG9wKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKaW5kZXggMjhjMzM1YjBm
ZjgyLi5hODc5MGU0M2RiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBM
YXlvdXQgewogCiBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94VmVydGljYWxBbGlnbmVy
KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkK
ICAgICA6IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQp
Ci0gICAgLCBtX2lubGluZUZvcm1hdHRpbmdHZW9tZXRyeShpbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCkKKyAgICAsIG1faW5saW5lRm9ybWF0dGluZ1V0aWxzKGlubGluZUZvcm1hdHRpbmdDb250ZXh0
KQogewogfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6TGlu
ZUJveEFsaWdubWVudENvbnRlbnQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUwKICAg
ICAvLyAyLiBDb21wdXRlIHRoZSBiYXNlbGluZS9sb2dpY2FsIHRvcCBwb3NpdGlvbiBvZiB0aGUg
cm9vdCBpbmxpbmUgYm94LiBBbGlnbmVkIGJveGVzIHB1c2ggdGhlIHJvb3QgaW5saW5lIGJveCBh
cm91bmQgaW5zaWRlIHRoZSBsaW5lIGJveC4KICAgICAvLyAzLiBGaW5hbGx5IGFsaWduIHRoZSBp
bmxpbmUgbGV2ZWwgYm94ZXMgdXNpbmcgKG1vc3RseSkgbm9ybWFsIGlubGluZSBsZXZlbCBib3gg
Z2VvbWV0cmllcy4KICAgICBhdXRvJiByb290SW5saW5lQm94ID0gbGluZUJveC5yb290SW5saW5l
Qm94KCk7Ci0gICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gdGhpcy0+Zm9ybWF0dGluZ0dl
b21ldHJ5KCk7CisgICAgYXV0byYgZm9ybWF0dGluZ1V0aWxzID0gdGhpcy0+Zm9ybWF0dGluZ1V0
aWxzKCk7CiAgICAgYXV0byBjb250ZW50SGFzQW5ub3RhdGlvbiA9IHJvb3RJbmxpbmVCb3guaGFz
QW5ub3RhdGlvbigpOwogCiAgICAgLy8gTGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGJh
c2VkIG9uIHRoZSBsYXlvdXQgYm91bmRzIG9mIHRoZSBpbmxpbmUgYm94ZXMgYW5kIG5vdCB0aGVp
ciBsb2dpY2FsIChhc2NlbnQvZGVzY2VudCkgZGltZW5zaW9ucy4KQEAgLTE0OSw3ICsxNDksNyBA
QCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94QWxpZ25tZW50Q29udGVudCBMaW5lQm94
VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTAogCiAgICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9
IHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwogICAgIGF1dG8gbWF4aW11bUxv
Z2ljYWxCb3R0b20gPSBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICBp
ZiAoZm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3gocm9vdElu
bGluZUJveCkpIHsKKyAgICBpZiAoZm9ybWF0dGluZ1V0aWxzLmlubGluZUxldmVsQm94QWZmZWN0
c0xpbmVCb3gocm9vdElubGluZUJveCkpIHsKICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBJ
bmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSByb290
SW5saW5lQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICBpbmxpbmVMZXZlbEJv
eEFic29sdXRlVG9wQW5kQm90dG9tTWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVUb3BB
bmRCb3R0b20geyAqbWluaW11bUxvZ2ljYWxUb3AsICptYXhpbXVtTG9naWNhbEJvdHRvbSB9KTsK
QEAgLTIyNCw3ICsyMjQsNyBAQCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94QWxpZ25t
ZW50Q29udGVudCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTAogICAgICAgICBhdXRv
IGFic29sdXRlTG9naWNhbEJvdHRvbSA9IGFic29sdXRlTG9naWNhbFRvcCArIGxheW91dEJvdW5k
cy5oZWlnaHQoKTsKICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1h
cC5hZGQoJmlubGluZUxldmVsQm94LCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFic29sdXRlTG9n
aWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9tIH0pOwogICAgICAgICAvLyBTdHJldGNoIHRo
ZSBtaW4vbWF4IGFic29sdXRlIHZhbHVlcyBpZiBhcHBsaWNhYmxlLgotICAgICAgICBpZiAoZm9y
bWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxC
b3gpKSB7CisgICAgICAgIGlmIChmb3JtYXR0aW5nVXRpbHMuaW5saW5lTGV2ZWxCb3hBZmZlY3Rz
TGluZUJveChpbmxpbmVMZXZlbEJveCkpIHsKICAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9w
ID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxUb3AudmFsdWVfb3IoYWJzb2x1dGVMb2dpY2FsVG9w
KSwgYWJzb2x1dGVMb2dpY2FsVG9wKTsKICAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9t
ID0gc3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVfb3IoYWJzb2x1dGVMb2dpY2Fs
Qm90dG9tKSwgYWJzb2x1dGVMb2dpY2FsQm90dG9tKTsKICAgICAgICAgfQpAQCAtMjM2LDcgKzIz
Niw3IEBAIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50IExp
bmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMCiAgICAgYXV0byB0b3BBbGlnbmVkQm94ZXNN
YXhpbXVtSGVpZ2h0ID0gc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07CiAgICAg
YXV0byBib3R0b21BbGlnbmVkQm94ZXNNYXhpbXVtSGVpZ2h0ID0gc3RkOjpvcHRpb25hbDxJbmxp
bmVMYXlvdXRVbml0PiB7IH07CiAgICAgZm9yIChhdXRvKiBsaW5lQm94UmVsYXRpdmVJbmxpbmVM
ZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMpIHsKLSAgICAgICAgaWYg
KCFmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveCgqbGluZUJv
eFJlbGF0aXZlSW5saW5lTGV2ZWxCb3gpKQorICAgICAgICBpZiAoIWZvcm1hdHRpbmdVdGlscy5p
bmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KCpsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJv
eCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgLy8gVGhpcyBsaW5lIGJveCByZWxh
dGl2ZSBhbGlnbmVkIGlubGluZSBsZXZlbCBib3ggc3RyZXRjaGVzIHRoZSBsaW5lIGJveC4KICAg
ICAgICAgYXV0byBpbmxpbmVMZXZlbEJveEhlaWdodCA9IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxl
dmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKQEAgLTI1NiwxOCArMjU2LDE4IEBAIExp
bmVCb3hWZXJ0aWNhbEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50IExpbmVCb3hWZXJ0
aWNhbEFsaWduZXI6OmNvbXB1dGVMCiB2b2lkIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1
dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbihMaW5lQm94JiBsaW5lQm94LCBjb25zdCBM
aW5lQm94QWxpZ25tZW50Q29udGVudCYgbGluZUJveEFsaWdubWVudENvbnRlbnQpIGNvbnN0CiB7
CiAgICAgYXV0byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElubGluZUJveCgpOwotICAg
IGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOwor
ICAgIGF1dG8mIGZvcm1hdHRpbmdVdGlscyA9IHRoaXMtPmZvcm1hdHRpbmdVdGlscygpOwogICAg
IGF1dG8gaGFzVG9wQWxpZ25lZElubGluZUxldmVsQm94ID0gZmFsc2U7CiAKICAgICBIYXNoTWFw
PGNvbnN0IElubGluZUxldmVsQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gaW5saW5lTGV2ZWxCb3hB
YnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwOwogICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNl
bGluZU9mZnNldE1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIElubGluZUxheW91dFVuaXQgeyB9KTsK
IAogICAgIGF1dG8gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBz
dGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICBpZiAoZm9ybWF0dGluZ0dl
b21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3gocm9vdElubGluZUJveCkpCisgICAg
aWYgKGZvcm1hdHRpbmdVdGlscy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KHJvb3RJbmxp
bmVCb3gpKQogICAgICAgICBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGlu
ZSA9IHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50OwogCiAgICAgYXV0byBhZmZl
Y3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0oYXV0byYgaW5saW5lTGV2ZWxC
b3gpIHsKLSAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVMZXZlbEJveEFm
ZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94KTsKKyAgICAgICAgcmV0dXJuIGZvcm1hdHRpbmdV
dGlscy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94KTsKICAgICB9
OwogCiAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGlu
ZUxldmVsQm94ZXMoKSkgewpAQCAtMzc1LDcgKzM3NSw3IEBAIElubGluZUxldmVsQm94OjpBc2Nl
bnRBbmREZXNjZW50IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmxheW91dEJvdW5kc0ZvcklubGlu
ZUJvCiAgICAgLy8gaW5saW5lIGVsZW1lbnRzIHdob3NlIGNvbXB1dGVkIHZlcnRpY2FsLWFsaWdu
IHZhbHVlIGlzIG5vdCB0b3Agb3IgYm90dG9tLgogICAgIC8vIFRoZSB0b3Agb2YgdGhlIGFsaWdu
ZWQgc3VidHJlZSBpcyB0aGUgaGlnaGVzdCBvZiB0aGUgdG9wcyBvZiB0aGUgYm94ZXMgaW4gdGhl
IHN1YnRyZWUsIGFuZCB0aGUgYm90dG9tIGlzIGFuYWxvZ291cy4KICAgICBBU1NFUlQobm9uUm9v
dElubGluZUxldmVsQm94ZXNbaW5saW5lQm94SW5kZXhdLmlzSW5saW5lQm94KCkpOwotICAgIGF1
dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOworICAg
IGF1dG8mIGZvcm1hdHRpbmdVdGlscyA9IHRoaXMtPmZvcm1hdHRpbmdVdGlscygpOwogICAgIGF1
dG8gZW5jbG9zaW5nTGF5b3V0Qm91bmRzID0gSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2Nl
bnQgeyB9OwogICAgIGF1dG8mIGlubGluZUJveFBhcmVudCA9IG5vblJvb3RJbmxpbmVMZXZlbEJv
eGVzW2lubGluZUJveEluZGV4XS5sYXlvdXRCb3goKS5wYXJlbnQoKTsKICAgICBmb3IgKHNpemVf
dCBpbmRleCA9IGlubGluZUJveEluZGV4ICsgMTsgaW5kZXggPCBub25Sb290SW5saW5lTGV2ZWxC
b3hlcy5zaXplKCk7ICsraW5kZXgpIHsKQEAgLTM4NCw3ICszODQsNyBAQCBJbmxpbmVMZXZlbEJv
eDo6QXNjZW50QW5kRGVzY2VudCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpsYXlvdXRCb3VuZHNG
b3JJbmxpbmVCbwogICAgICAgICAgICAgLy8gV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGRlc2Nl
bmRhbnQgbGlzdC4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmICgh
Zm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goZGVzY2VuZGFu
dElubGluZUxldmVsQm94KSB8fCBkZXNjZW5kYW50SW5saW5lTGV2ZWxCb3guaGFzTGluZUJveFJl
bGF0aXZlQWxpZ25tZW50KCkpCisgICAgICAgIGlmICghZm9ybWF0dGluZ1V0aWxzLmlubGluZUxl
dmVsQm94QWZmZWN0c0xpbmVCb3goZGVzY2VuZGFudElubGluZUxldmVsQm94KSB8fCBkZXNjZW5k
YW50SW5saW5lTGV2ZWxCb3guaGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgZW5jbG9zaW5nTGF5b3V0Qm91bmRzLmFzY2VudCA9IHN0
ZDo6bWF4KGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQsIGVu
Y2xvc2luZ0xheW91dEJvdW5kcy5hc2NlbnQpOwogICAgICAgICBlbmNsb3NpbmdMYXlvdXRCb3Vu
ZHMuZGVzY2VudCA9IHN0ZDo6bWF4KGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveC5sYXlvdXRCb3Vu
ZHMoKS5kZXNjZW50LCBlbmNsb3NpbmdMYXlvdXRCb3VuZHMuZGVzY2VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94VmVydGljYWxBbGlnbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKaW5kZXggYmI2
ZTZkOGIxZDIzLi4zNjIzZWU4Y2E1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCIKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nVXRp
bHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CkBAIC01Niwx
NCArNTYsMTQgQEAgcHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IGFkanVzdEZvckFubm90
YXRpb25JZk5lZWRlZChMaW5lQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94SGVpZ2h0KSBj
b25zdDsKICAgICBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBsYXlvdXRCb3VuZHNG
b3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94TGlzdCYgbm9u
Um9vdElubGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29uc3Q7CiAKLSAg
ICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OyB9CisgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ1V0aWxzJiBmb3JtYXR0aW5nVXRpbHMoKSBjb25zdCB7IHJldHVybiBtX2lu
bGluZUZvcm1hdHRpbmdVdGlsczsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ7IH0KICAgICBjb25zdCBFbGVtZW50Qm94JiByb290Qm94KCkgY29uc3QgeyByZXR1cm4g
Zm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7IH0KICAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0
ZSYgaW5saW5lTGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgp
LmlubGluZUxheW91dFN0YXRlKCk7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKLSAgICBjb25zdCBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnkgbV9pbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk7CisgICAgY29u
c3QgSW5saW5lRm9ybWF0dGluZ1V0aWxzIG1faW5saW5lRm9ybWF0dGluZ1V0aWxzOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDM0NzBlMjdk
ZmIxNC4uNTA1MjkyZjJlNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDU1NMaW5lQm94Q29udGFpblZh
bHVlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCIKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nVXRp
bHMuaCIKICNpbmNsdWRlICJJbmxpbmVRdWlya3MuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIK
ICNpbmNsdWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgpAQCAtMjUxLDcgKzI1MSw3IEBAIExpbmVM
YXlvdXRSZXN1bHQgTGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGluZUlu
cHV0JiBsaW5lSW5wdXQsIGNvCiAKICAgICBhdXRvIGlzTGFzdExpbmUgPSBpc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQobGluZUNvbnRlbnQsIGxpbmVJbnB1dC5uZWVkc0xheW91dFJhbmdlLmVu
ZEluZGV4KCksICFyZXN1bHQucnVucy5pc0VtcHR5KCkpOwogICAgIGF1dG8gaW5saW5lQmFzZURp
cmVjdGlvbiA9ICFyZXN1bHQucnVucy5pc0VtcHR5KCkgPyBpbmxpbmVCYXNlRGlyZWN0aW9uRm9y
TGluZUNvbnRlbnQocmVzdWx0LnJ1bnMsIHJvb3RTdHlsZSgpLCBtX3ByZXZpb3VzTGluZSkgOiBU
ZXh0RGlyZWN0aW9uOjpMVFI7Ci0gICAgYXV0byBjb250ZW50TG9naWNhbExlZnQgPSAhcmVzdWx0
LnJ1bnMuaXNFbXB0eSgpID8gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpob3Jpem9udGFsQWxp
Z25tZW50T2Zmc2V0KHJvb3RTdHlsZSgpLCByZXN1bHQuY29udGVudExvZ2ljYWxSaWdodCwgbV9s
aW5lTG9naWNhbFJlY3Qud2lkdGgoKSwgcmVzdWx0LmhhbmdpbmdUcmFpbGluZ0NvbnRlbnRXaWR0
aCwgcmVzdWx0LnJ1bnMsIGlzTGFzdExpbmUsIGlubGluZUJhc2VEaXJlY3Rpb24pIDogMC5mOwor
ICAgIGF1dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gIXJlc3VsdC5ydW5zLmlzRW1wdHkoKSA/IElu
bGluZUZvcm1hdHRpbmdVdGlsczo6aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChyb290U3R5bGUo
KSwgcmVzdWx0LmNvbnRlbnRMb2dpY2FsUmlnaHQsIG1fbGluZUxvZ2ljYWxSZWN0LndpZHRoKCks
IHJlc3VsdC5oYW5naW5nVHJhaWxpbmdDb250ZW50V2lkdGgsIHJlc3VsdC5ydW5zLCBpc0xhc3RM
aW5lLCBpbmxpbmVCYXNlRGlyZWN0aW9uKSA6IDAuZjsKICAgICBWZWN0b3I8aW50MzJfdD4gdmlz
dWFsT3JkZXJMaXN0OwogICAgIGlmIChyZXN1bHQuY29udGVudE5lZWRzQmlkaVJlb3JkZXJpbmcp
CiAgICAgICAgIGNvbXB1dGVkVmlzdWFsT3JkZXIocmVzdWx0LnJ1bnMsIHZpc3VhbE9yZGVyTGlz
dCk7CkBAIC01MjUsOCArNTI1LDggQEAgTGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5s
aW5lQW5kRmxvYXRDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHMKIAogTGluZUJ1
aWxkZXI6OlVzZWRDb25zdHJhaW50cyBMaW5lQnVpbGRlcjo6aW5pdGlhbENvbnN0cmFpbnRzRm9y
TGluZShjb25zdCBJbmxpbmVSZWN0JiBpbml0aWFsTGluZUxvZ2ljYWxSZWN0LCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrKSBjb25zdAogewotICAgIGF1
dG8gaXNJbnRyaW5zaWNXaWR0aE1vZGUgPSBpc0luSW50cmluc2ljV2lkdGhNb2RlKCkgPyBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpZZXMgOiBJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnk6OklzSW50cmluc2ljV2lkdGhNb2RlOjpObzsKLSAgICBhdXRvIHRl
eHRJbmRlbnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1
dGVkVGV4dEluZGVudChpc0ludHJpbnNpY1dpZHRoTW9kZSwgcHJldmlvdXNMaW5lRW5kc1dpdGhM
aW5lQnJlYWssIGluaXRpYWxMaW5lTG9naWNhbFJlY3Qud2lkdGgoKSk7CisgICAgYXV0byBpc0lu
dHJpbnNpY1dpZHRoTW9kZSA9IGlzSW5JbnRyaW5zaWNXaWR0aE1vZGUoKSA/IElubGluZUZvcm1h
dHRpbmdVdGlsczo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6OlllcyA6IElubGluZUZvcm1hdHRpbmdV
dGlsczo6SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vOworICAgIGF1dG8gdGV4dEluZGVudCA9IGZv
cm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ1V0aWxzKCkuY29tcHV0ZWRUZXh0SW5kZW50KGlz
SW50cmluc2ljV2lkdGhNb2RlLCBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhaywgaW5pdGlh
bExpbmVMb2dpY2FsUmVjdC53aWR0aCgpKTsKIAogICAgIHJldHVybiBmbG9hdENvbnN0cmFpbmVk
UmVjdChpbml0aWFsTGluZUxvZ2ljYWxSZWN0LCB0ZXh0SW5kZW50KTsKIH0KQEAgLTYwNiw3ICs2
MDYsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2Fu
ZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzaXplX3QgYwogICAgIC8vIDEuIFNpbXBseSBhZGQgYW55
IG92ZXJmbG93IGNvbnRlbnQgZnJvbSB0aGUgcHJldmlvdXMgbGluZSB0byB0aGUgY2FuZGlkYXRl
IGNvbnRlbnQuIEl0J3MgYWx3YXlzIGEgdGV4dCBjb250ZW50LgogICAgIC8vIDIuIEZpbmQgdGhl
IG5leHQgc29mdCB3cmFwIHBvc2l0aW9uIG9yIGV4cGxpY2l0IGxpbmUgYnJlYWsuCiAgICAgLy8g
My4gQ29sbGVjdCBmbG9hdHMgYmV0d2VlbiB0aGUgaW5saW5lIGNvbnRlbnQuCi0gICAgYXV0byBz
b2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdH
ZW9tZXRyeSgpLm5leHRXcmFwT3Bwb3J0dW5pdHkoY3VycmVudElubGluZUl0ZW1JbmRleCwgbGF5
b3V0UmFuZ2UsIG1faW5saW5lSXRlbUxpc3QpOworICAgIGF1dG8gc29mdFdyYXBPcHBvcnR1bml0
eUluZGV4ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRpbHMoKS5uZXh0V3JhcE9w
cG9ydHVuaXR5KGN1cnJlbnRJbmxpbmVJdGVtSW5kZXgsIGxheW91dFJhbmdlLCBtX2lubGluZUl0
ZW1MaXN0KTsKICAgICAvLyBzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggPT0gbGF5b3V0UmFuZ2Uu
ZW5kIG1lYW5zIHdlIGRvbid0IGhhdmUgYW55IHdyYXAgb3Bwb3J0dW5pdHkgaW4gdGhpcyBjb250
ZW50LgogICAgIEFTU0VSVChzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggPD0gbGF5b3V0UmFuZ2Uu
ZW5kSW5kZXgoKSk7CiAKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpjYW5k
aWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzaXplX3Qg
YwogICAgIGlmIChpc0xlYWRpbmdQYXJ0aWFDb250ZW50KSB7CiAgICAgICAgIEFTU0VSVCghbV9v
dmVyZmxvd2luZ0xvZ2ljYWxXaWR0aCk7CiAgICAgICAgIC8vIEhhbmRsZSBsZWFkaW5nIHBhcnRp
YWwgY29udGVudCBmaXJzdCAob3ZlcmZsb3dpbmcgdGV4dCBmcm9tIHRoZSBwcmV2aW91cyBsaW5l
KS4KLSAgICAgICAgYXV0byBpdGVtV2lkdGggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRp
bmdHZW9tZXRyeSgpLmlubGluZUl0ZW1XaWR0aCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBj
dXJyZW50TG9naWNhbFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKKyAgICAgICAgYXV0
byBpdGVtV2lkdGggPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpLmlubGlu
ZUl0ZW1XaWR0aCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0
LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKICAgICAgICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVD
b250ZW50LmFwcGVuZElubGluZUl0ZW0oKm1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSwgbV9wYXJ0
aWFsTGVhZGluZ1RleHRJdGVtLT5zdHlsZSgpLCBpdGVtV2lkdGgpOwogICAgICAgICBjdXJyZW50
TG9naWNhbFJpZ2h0ICs9IGl0ZW1XaWR0aDsKICAgICAgICAgKytjdXJyZW50SW5saW5lSXRlbUlu
ZGV4OwpAQCAtNjUyLDcgKzY1Miw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRl
bnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHNpemVfdCBjCiAgICAgICAg
IH0KICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNUZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8m
IGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pOwot
ICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBtX292ZXJmbG93aW5nTG9naWNhbFdpZHRo
ID8gKnN0ZDo6ZXhjaGFuZ2UobV9vdmVyZmxvd2luZ0xvZ2ljYWxXaWR0aCwgc3RkOjpudWxsb3B0
KSA6IGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCkuaW5saW5lSXRlbVdp
ZHRoKGlubGluZVRleHRJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVk
TGluZSgpKTsKKyAgICAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gbV9vdmVyZmxvd2luZ0xv
Z2ljYWxXaWR0aCA/ICpzdGQ6OmV4Y2hhbmdlKG1fb3ZlcmZsb3dpbmdMb2dpY2FsV2lkdGgsIHN0
ZDo6bnVsbG9wdCkgOiBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpLmlubGlu
ZUl0ZW1XaWR0aChpbmxpbmVUZXh0SXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCwgaXNGaXJzdEZv
cm1hdHRlZExpbmUoKSk7CiAgICAgICAgICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQu
YXBwZW5kSW5saW5lSXRlbShpbmxpbmVUZXh0SXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7CiAg
ICAgICAgICAgICAvLyBXb3JkIHNwYWNpbmcgZG9lcyBub3QgbWFrZSB0aGUgcnVuIGxvbmdlciwg
YnV0IGl0IHByb2R1Y2VzIGFuIG9mZnNldCBpbnN0ZWFkLiBTZWUgTGluZTo6YXBwZW5kVGV4dENv
bnRlbnQgYXMgd2VsbC4KICAgICAgICAgICAgIGN1cnJlbnRMb2dpY2FsUmlnaHQgKz0gbG9naWNh
bFdpZHRoICsgKGlubGluZVRleHRJdGVtLmlzV29yZFNlcGFyYXRvcigpID8gc3R5bGUuZm9udENh
c2NhZGUoKS53b3JkU3BhY2luZygpIDogMC5mKTsKQEAgLTY2MSw3ICs2NjEsNyBAQCB2b2lkIExp
bmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2Fu
ZGlkYXRlLCBzaXplX3QgYwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNJbmxp
bmVCb3hFbmQoKSkgewotICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBmb3JtYXR0aW5n
Q29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVt
LCBjdXJyZW50TG9naWNhbFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsKKyAgICAgICAg
ICAgIGF1dG8gbG9naWNhbFdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRp
bHMoKS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCwgaXNG
aXJzdEZvcm1hdHRlZExpbmUoKSk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVB
SykKICAgICAgICAgICAgIGlmIChzdHlsZS5ib3hEZWNvcmF0aW9uQnJlYWsoKSA9PSBCb3hEZWNv
cmF0aW9uQnJlYWs6OkNsb25lKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0g
aW5saW5lSXRlbS5sYXlvdXRCb3goKTsKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIExpbmVCdWls
ZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRl
LCBzaXplX3QgYwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGlubGluZUl0ZW0uaXNCb3goKSkgewotICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBm
b3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmlubGluZUl0ZW1XaWR0aChp
bmxpbmVJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKTsK
KyAgICAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3Jt
YXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxS
aWdodCwgaXNGaXJzdEZvcm1hdHRlZExpbmUoKSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2hp
bGUgdGhlIGxpbmUgYnJlYWtpbmcgcmVsYXRlZCBwcm9wZXJ0aWVzIGZvciBhdG9taWMgbGV2ZWwg
Ym94ZXMgZG8gbm90IGRlcGVuZCBvbiB0aGUgbGluZSBpbmRleCAoZmlyc3QgbGluZSBzdHlsZSkg
aXQnZCBiZSBncmVhdCB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IHN0eWxlIHRvIHBhc3MgaW4u
CiAgICAgICAgICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5lSXRl
bShpbmxpbmVJdGVtLCBpbmxpbmVJdGVtLmxheW91dEJveCgpLnBhcmVudCgpLnN0eWxlKCksIGxv
Z2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBjdXJyZW50TG9naWNhbFJpZ2h0ICs9IGxvZ2ljYWxX
aWR0aDsKQEAgLTc0NSw3ICs3NDUsNyBAQCBMaW5lQnVpbGRlcjo6VXNlZENvbnN0cmFpbnRzIExp
bmVCdWlsZGVyOjpmbG9hdENvbnN0cmFpbmVkUmVjdChjb25zdCBJbmxpbmVSZWN0JgogICAgICAg
ICBpZiAoaXNJbkludHJpbnNpY1dpZHRoTW9kZSgpIHx8IHBsYWNlZEZsb2F0cygpLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybiB7IGxvZ2ljYWxSZWN0LCBtYXJnaW5TdGFydCwgeyB9IH07
CiAKLSAgICAgICAgYXV0byBjb25zdHJhaW50cyA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0
dGluZ0dlb21ldHJ5KCkuZmxvYXRDb25zdHJhaW50c0ZvckxpbmUobG9naWNhbFJlY3QudG9wKCks
IGxvZ2ljYWxSZWN0LmhlaWdodCgpLCBGbG9hdGluZ0NvbnRleHQgeyBmb3JtYXR0aW5nQ29udGV4
dCgpLCBwbGFjZWRGbG9hdHMoKSB9KTsKKyAgICAgICAgYXV0byBjb25zdHJhaW50cyA9IGZvcm1h
dHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ1V0aWxzKCkuZmxvYXRDb25zdHJhaW50c0ZvckxpbmUo
bG9naWNhbFJlY3QudG9wKCksIGxvZ2ljYWxSZWN0LmhlaWdodCgpLCBGbG9hdGluZ0NvbnRleHQg
eyBmb3JtYXR0aW5nQ29udGV4dCgpLCBwbGFjZWRGbG9hdHMoKSB9KTsKICAgICAgICAgaWYgKCFj
b25zdHJhaW50cy5sZWZ0ICYmICFjb25zdHJhaW50cy5yaWdodCkKICAgICAgICAgICAgIHJldHVy
biB7IGxvZ2ljYWxSZWN0LCBtYXJnaW5TdGFydCwgeyB9IH07CiAKQEAgLTc3OCw3ICs3NzgsNyBA
QCBMaW5lQnVpbGRlcjo6VXNlZENvbnN0cmFpbnRzIExpbmVCdWlsZGVyOjphZGp1c3RlZExpbmVS
ZWN0V2l0aENhbmRpZGF0ZUlubGluZUNvbgogICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBsaW5l
Q2FuZGlkYXRlLmlubGluZUNvbnRlbnQ7CiAgICAgaWYgKGlzSW5JbnRyaW5zaWNXaWR0aE1vZGUo
KSkKICAgICAgICAgcmV0dXJuIHsgbV9saW5lTG9naWNhbFJlY3QgfTsKLSAgICAvLyBGSVhNRTog
VXNlIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJv
eCBpbnN0ZWFkLgorICAgIC8vIEZJWE1FOiBVc2UgSW5saW5lRm9ybWF0dGluZ1V0aWxzOjppbmxp
bmVMZXZlbEJveEFmZmVjdHNMaW5lQm94IGluc3RlYWQuCiAgICAgYXV0byBjYW5kaWRhdGVDb250
ZW50SGVpZ2h0ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgYXV0byBsaW5lQm94Q29udGFp
biA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkubGluZUJveENvbnRhaW4oKTsK
ICAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUNvbnRlbnQuY29udGludW91c0NvbnRlbnQoKS5y
dW5zKCkpIHsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHNpemVfdCBMaW5lQnVpbGRlcjo6cmVidWls
ZExpbmVXaXRoSW5saW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhCiAg
ICAgLy8gTGV0J3MganVzdCByZXVzZSB3aGF0IHRoZSBsaW5lIGhhcyBhdCB0aGlzIHBvaW50Lgog
ICAgIG1fbGluZS5pbml0aWFsaXplKG1fbGluZVNwYW5uaW5nSW5saW5lQm94ZXMsIGlzRmlyc3RG
b3JtYXR0ZWRMaW5lKCkpOwogICAgIGlmIChtX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0pIHsKLSAg
ICAgICAgbV9saW5lLmFwcGVuZCgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBtX3BhcnRpYWxM
ZWFkaW5nVGV4dEl0ZW0tPnN0eWxlKCksIGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dl
b21ldHJ5KCkuaW5saW5lSXRlbVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIHsgfSwg
aXNGaXJzdEZvcm1hdHRlZExpbmUoKSkpOworICAgICAgICBtX2xpbmUuYXBwZW5kKCptX3BhcnRp
YWxMZWFkaW5nVGV4dEl0ZW0sIG1fcGFydGlhbExlYWRpbmdUZXh0SXRlbS0+c3R5bGUoKSwgZm9y
bWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRpbHMoKS5pbmxpbmVJdGVtV2lkdGgoKm1fcGFy
dGlhbExlYWRpbmdUZXh0SXRlbSwgeyB9LCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpKSk7CiAgICAg
ICAgICsrbnVtYmVyT2ZJbmxpbmVJdGVtc09uTGluZTsKICAgICAgICAgaWYgKCZtX3BhcnRpYWxM
ZWFkaW5nVGV4dEl0ZW0udmFsdWUoKSA9PSAmbGFzdElubGluZUl0ZW1Ub0FkZCkKICAgICAgICAg
ICAgIHJldHVybiAxOwpAQCAtMTE2NSw3ICsxMTY1LDcgQEAgc2l6ZV90IExpbmVCdWlsZGVyOjpy
ZWJ1aWxkTGluZVdpdGhJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0
UmEKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGF1dG8mIHN0eWxl
ID0gaXNGaXJzdEZvcm1hdHRlZExpbmUoKSA/IGlubGluZUl0ZW0uZmlyc3RMaW5lU3R5bGUoKSA6
IGlubGluZUl0ZW0uc3R5bGUoKTsKLSAgICAgICAgbV9saW5lLmFwcGVuZChpbmxpbmVJdGVtLCBz
dHlsZSwgZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5pbmxpbmVJdGVt
V2lkdGgoaW5saW5lSXRlbSwgbV9saW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSwgaXNGaXJzdEZv
cm1hdHRlZExpbmUoKSkpOworICAgICAgICBtX2xpbmUuYXBwZW5kKGlubGluZUl0ZW0sIHN0eWxl
LCBmb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpLmlubGluZUl0ZW1XaWR0aChp
bmxpbmVJdGVtLCBtX2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpLCBpc0ZpcnN0Rm9ybWF0dGVk
TGluZSgpKSk7CiAgICAgICAgICsrbnVtYmVyT2ZJbmxpbmVJdGVtc09uTGluZTsKICAgICAgICAg
aWYgKCZpbmxpbmVJdGVtID09ICZsYXN0SW5saW5lSXRlbVRvQWRkKQogICAgICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNwcAppbmRl
eCAxZjM4NzBmNzFmMDIuLjFlZmYxZDFjODE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW50cmluc2ljV2lkdGhIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bnRyaW5zaWNXaWR0aEhhbmRsZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgSW5saW5lTGF5b3V0
VW5pdCBJbnRyaW5zaWNXaWR0aEhhbmRsZXI6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25z
dHJhaW50KEludHIKICAgICAgICAgfTsKICAgICAgICAgbWF4aW11bUNvbnRlbnRXaWR0aCA9IHN0
ZDo6bWF4KG1heGltdW1Db250ZW50V2lkdGgsIGxpbmVMYXlvdXRSZXN1bHQubGluZUdlb21ldHJ5
LmxvZ2ljYWxUb3BMZWZ0LngoKSArIGxpbmVMYXlvdXRSZXN1bHQuY29udGVudEdlb21ldHJ5Lmxv
Z2ljYWxXaWR0aCArIGZsb2F0Q29udGVudFdpZHRoKCkpOwogCi0gICAgICAgIGxheW91dFJhbmdl
LnN0YXJ0ID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0
aW9uRm9yTmV4dExpbmUobGluZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kLCBwcmV2
aW91c0xpbmVFbmQsIGxheW91dFJhbmdlLmVuZCk7CisgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0
ID0gSW5saW5lRm9ybWF0dGluZ1V0aWxzOjpsZWFkaW5nSW5saW5lSXRlbVBvc2l0aW9uRm9yTmV4
dExpbmUobGluZUxheW91dFJlc3VsdC5pbmxpbmVJdGVtUmFuZ2UuZW5kLCBwcmV2aW91c0xpbmVF
bmQsIGxheW91dFJhbmdlLmVuZCk7CiAgICAgICAgIGlmIChsYXlvdXRSYW5nZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGF1dG8gY2FjaGVMaW5lQnJlYWtpbmdSZXN1bHRGb3JTdWJzZXF1ZW50
TGF5b3V0SWZBcHBsaWNhYmxlID0gWyZdIHsKICAgICAgICAgICAgICAgICBtX21heGltdW1JbnRy
aW5zaWNXaWR0aFJlc3VsdEZvclNpbmdsZUxpbmUgPSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxp
bmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL1RleHRPbmx5U2ltcGxlTGluZUJ1aWxkZXIuY3BwCmluZGV4IDhhMzczMGJiNGIxYy4u
MTdkZDE3OWVmMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBsZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9UZXh0T25seVNpbXBs
ZUxpbmVCdWlsZGVyLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIExpbmVMYXlvdXRSZXN1bHQgVGV4
dE9ubHlTaW1wbGVMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5w
dXQmCiAKICAgICBhdXRvIGlzTGFzdExpbmUgPSBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQo
cGxhY2VkQ29udGVudEVuZCwgbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2UuZW5kSW5kZXgoKSk7
CiAgICAgYXV0byYgcm9vdFN0eWxlID0gaXNGaXJzdEZvcm1hdHRlZExpbmUoKSA/IHJvb3QoKS5m
aXJzdExpbmVTdHlsZSgpIDogcm9vdCgpLnN0eWxlKCk7Ci0gICAgYXV0byBjb250ZW50TG9naWNh
bExlZnQgPSBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Omhvcml6b250YWxBbGlnbm1lbnRPZmZz
ZXQocm9vdFN0eWxlLCByZXN1bHQuY29udGVudExvZ2ljYWxSaWdodCwgbV9saW5lTG9naWNhbFJl
Y3Qud2lkdGgoKSwgcmVzdWx0LmhhbmdpbmdUcmFpbGluZ0NvbnRlbnRXaWR0aCwgcmVzdWx0LnJ1
bnMsIGlzTGFzdExpbmUpOworICAgIGF1dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gSW5saW5lRm9y
bWF0dGluZ1V0aWxzOjpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJvb3RTdHlsZSwgcmVzdWx0
LmNvbnRlbnRMb2dpY2FsUmlnaHQsIG1fbGluZUxvZ2ljYWxSZWN0LndpZHRoKCksIHJlc3VsdC5o
YW5naW5nVHJhaWxpbmdDb250ZW50V2lkdGgsIHJlc3VsdC5ydW5zLCBpc0xhc3RMaW5lKTsKIAog
ICAgIHJldHVybiB7IHsgbGluZUlucHV0Lm5lZWRzTGF5b3V0UmFuZ2Uuc3RhcnQsIHBsYWNlZENv
bnRlbnRFbmQgfQogICAgICAgICAsIFdURk1vdmUocmVzdWx0LnJ1bnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5jcHAKaW5kZXggMDAxODAzMjQ3MzE5Li5jMDg2ZWZkMGVhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuaCIKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5LmgiCisjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1V0aWxzLmgiCiAj
aW5jbHVkZSAiSW5saW5lVGV4dEJveFN0eWxlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0
cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFsQ29udGFpbmluZ0Jsb2NrLmgiCkBAIC0xMTM5
LDcgKzExMzksNyBAQCBJbmxpbmVSZWN0IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Zmxp
cExvZ2ljYWxSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZVdpdAogICAgICAgICByZXR1cm4geyBs
b2dpY2FsUmVjdC5sZWZ0KCksIGJvdHRvbU9mZnNldCwgbG9naWNhbFJlY3QuaGVpZ2h0KCksIGxv
Z2ljYWxSZWN0LndpZHRoKCkgfTsKICAgICB9CiAgICAgY2FzZSBCbG9ja0Zsb3dEaXJlY3Rpb246
OlJpZ2h0VG9MZWZ0OgotICAgICAgICAvLyBTZWUgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5IGZv
ciBtb3JlIGluZm8uCisgICAgICAgIC8vIFNlZSBJbmxpbmVGb3JtYXR0aW5nVXRpbHMgZm9yIG1v
cmUgaW5mby4KICAgICAgICAgcmV0dXJuIHsgbG9naWNhbFJlY3QubGVmdCgpLCBsb2dpY2FsUmVj
dC50b3AoKSwgbG9naWNhbFJlY3QuaGVpZ2h0KCksIGxvZ2ljYWxSZWN0LndpZHRoKCkgfTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTExNTksNyArMTE1
OSw3IEBAIElubGluZVJlY3QgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpmbGlwUm9vdElu
bGluZUJveFJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNCiAgICAgfQogICAgIGNhc2UgQmxvY2tGbG93
RGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKICAgICBjYXNlIEJsb2NrRmxvd0RpcmVjdGlvbjo6Umln
aHRUb0xlZnQ6IHsKLSAgICAgICAgLy8gU2VlIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSBmb3Ig
bW9yZSBpbmZvLgorICAgICAgICAvLyBTZWUgSW5saW5lRm9ybWF0dGluZ1V0aWxzIGZvciBtb3Jl
IGluZm8uCiAgICAgICAgIGF1dG8gdmlzdWFsUmVjdCA9IElubGluZVJlY3QgeyByb290SW5saW5l
Qm94TG9naWNhbFJlY3QubGVmdCgpLCByb290SW5saW5lQm94TG9naWNhbFJlY3QudG9wKCksIHJv
b3RJbmxpbmVCb3hMb2dpY2FsUmVjdC5oZWlnaHQoKSwgcm9vdElubGluZUJveExvZ2ljYWxSZWN0
LndpZHRoKCkgfTsKICAgICAgICAgdmlzdWFsUmVjdC5tb3ZlQnkoeyBtX2Rpc3BsYXlMaW5lLmxl
ZnQoKSwgbV9kaXNwbGF5TGluZS50b3AoKSB9KTsKICAgICAgICAgcmV0dXJuIHZpc3VhbFJlY3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlM
aW5lQnVpbGRlci5jcHAKaW5kZXggZDVkZjRjM2I4ZWI0Li5lNTJjZDc5MGY3NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3Bs
YXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVp
bGRlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIElubGluZVJlY3QgZmxpcExvZ2ljYWxM
aW5lUmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUoY29uc3QgSW5saW5lUmVjdCYgbGkKICAgICAg
ICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdDsKICAgICBjYXNlIEJsb2NrRmxvd0RpcmVjdGlvbjo6
TGVmdFRvUmlnaHQ6CiAgICAgY2FzZSBCbG9ja0Zsb3dEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0Ogot
ICAgICAgICAvLyBTZWUgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5IGZvciBtb3JlIGluZm8uCisg
ICAgICAgIC8vIFNlZSBJbmxpbmVGb3JtYXR0aW5nVXRpbHMgZm9yIG1vcmUgaW5mby4KICAgICAg
ICAgcmV0dXJuIHsgbGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwgbGluZUxvZ2ljYWxSZWN0LnRvcCgp
LCBsaW5lTG9naWNhbFJlY3QuaGVpZ2h0KCksIGxpbmVMb2dpY2FsUmVjdC53aWR0aCgpIH07CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5L1J1YnlG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9ydWJ5L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTY4NjEw
MGFjN2M5Li5kYzlkODI2NTBjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3J1YnkvUnVieUZvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9ydWJ5
L1J1YnlGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCB2b2lkIFJ1YnlG
b3JtYXR0aW5nQ29udGV4dDo6cGxhY2VSdWJ5Q29udGVudChXVEY6OlJhbmdlPHNpemVfdD4gY2Fu
ZGlkYXRlUmFuZ2UsCiB7CiAgICAgQVNTRVJUKGNhbmRpZGF0ZVJhbmdlLmVuZCgpIDw9IGlubGlu
ZUl0ZW1MaXN0LnNpemUoKSk7CiAgICAgQVNTRVJUKGlubGluZUl0ZW1MaXN0W2NhbmRpZGF0ZVJh
bmdlLmJlZ2luKCldLmxheW91dEJveCgpLmlzUnVieSgpIHx8IGlubGluZUl0ZW1MaXN0W2NhbmRp
ZGF0ZVJhbmdlLmJlZ2luKCldLmxheW91dEJveCgpLmlzUnVieUJhc2UoKSk7Ci0gICAgYXV0byYg
Zm9ybWF0dGluZ0dlb21ldHJ5ID0gcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5n
R2VvbWV0cnkoKTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nVXRpbHMgPSBwYXJlbnRGb3JtYXR0aW5n
Q29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpOwogCiAgICAgYXV0byBpbmRleCA9IGNhbmRpZGF0
ZVJhbmdlLmJlZ2luKCk7CiAgICAgd2hpbGUgKGluZGV4IDwgY2FuZGlkYXRlUmFuZ2UuZW5kKCkp
IHsKICAgICAgICAgYXV0byBhcHBlbmRJbmxpbmVMZXZlbEl0ZW0gPSBbJl0oYXV0byYgaW5saW5l
Qm94SXRlbSkgewogICAgICAgICAgICAgQVNTRVJUKGlubGluZUJveEl0ZW0ubGF5b3V0Qm94KCku
aXNSdWJ5KCkgfHwgaW5saW5lQm94SXRlbS5sYXlvdXRCb3goKS5pc1J1YnlCYXNlKCkgfHwgaW5s
aW5lQm94SXRlbS5sYXlvdXRCb3goKS5pc1J1YnlBbm5vdGF0aW9uQm94KCkpOwogCi0gICAgICAg
ICAgICBhdXRvIGxvZ2ljYWxXaWR0aCA9IGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVJdGVtV2lk
dGgoaW5saW5lQm94SXRlbSwgbGluZS5jb250ZW50TG9naWNhbFJpZ2h0KCksIHsgfSk7CisgICAg
ICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0aCA9IGZvcm1hdHRpbmdVdGlscy5pbmxpbmVJdGVtV2lk
dGgoaW5saW5lQm94SXRlbSwgbGluZS5jb250ZW50TG9naWNhbFJpZ2h0KCksIHsgfSk7CiAgICAg
ICAgICAgICBsaW5lLmFwcGVuZChpbmxpbmVCb3hJdGVtLCBpbmxpbmVCb3hJdGVtLnN0eWxlKCks
IGxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICB9OwpAQCAtMTI3
LDcgKzEyNyw3IEBAIHZvaWQgUnVieUZvcm1hdHRpbmdDb250ZXh0OjpwbGFjZVJ1YnlDb250ZW50
KFdURjo6UmFuZ2U8c2l6ZV90PiBjYW5kaWRhdGVSYW5nZSwKIHNpemVfdCBSdWJ5Rm9ybWF0dGlu
Z0NvbnRleHQ6OmxheW91dFJ1YnlCYXNlSW5saW5lQXhpcyhMaW5lJiBsaW5lLCBjb25zdCBCb3gm
IHJ1YnlCYXNlTGF5b3V0Qm94LCBzaXplX3QgcnVieUJhc2VDb250ZW50U3RhcnRJbmRleCwgY29u
c3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0KQogewogICAgIC8vIEFwcGVuZCBydWJ5
IGJhc2UgY29udGVudCAoaW5jbHVkaW5nIHN0YXJ0L2VuZCBpbmxpbmUgYm94KSB0byB0aGUgbGlu
ZSBhbmQgYXBwbHkgInJ1YnktYWxpZ246IHNwYWNlLWFyb3VuZCIgb24gdGhlIHJ1Ynkgc3VicmFu
Z2UuCi0gICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gcGFyZW50Rm9ybWF0dGluZ0NvbnRl
eHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nVXRpbHMgPSBw
YXJlbnRGb3JtYXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdVdGlscygpOwogICAgIGF1dG8gbGlu
ZUxvZ2ljYWxSaWdodCA9IGxpbmUuY29udGVudExvZ2ljYWxSaWdodCgpOwogICAgIGF1dG8gYmFz
ZUNvbnRlbnRMb2dpY2FsV2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICBhdXRvIGJh
c2VSdW5TdGFydCA9IGxpbmUucnVucygpLnNpemUoKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBzaXpl
X3QgUnVieUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRSdWJ5QmFzZUlubGluZUF4aXMoTGluZSYg
bGluZSwgY29uc3QgQm94JiBydQogICAgICAgICAgICAgICAgIGFwcGx5UnVieUFsaWduKGxpbmUs
IHsgYmFzZVJ1blN0YXJ0LCBiYXNlUnVuU3RhcnQgKyBiYXNlUnVuQ291bnQgfSwgcnVieUJhc2VM
YXlvdXRCb3gsIGJhc2VDb250ZW50TG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIHJldHVybiBp
bmRleCAtIHJ1YnlCYXNlQ29udGVudFN0YXJ0SW5kZXg7CiAgICAgICAgIH0KLSAgICAgICAgYXV0
byBsb2dpY2FsV2lkdGggPSBmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lSXRlbVdpZHRoKHJ1YnlC
YXNlSW5saW5lSXRlbSwgbGluZUxvZ2ljYWxSaWdodCArIGJhc2VDb250ZW50TG9naWNhbFdpZHRo
LCB7IH0pOworICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0aCA9IGZvcm1hdHRpbmdVdGlscy5pbmxp
bmVJdGVtV2lkdGgocnVieUJhc2VJbmxpbmVJdGVtLCBsaW5lTG9naWNhbFJpZ2h0ICsgYmFzZUNv
bnRlbnRMb2dpY2FsV2lkdGgsIHsgfSk7CiAgICAgICAgIGxpbmUuYXBwZW5kKHJ1YnlCYXNlSW5s
aW5lSXRlbSwgcnVieUJhc2VJbmxpbmVJdGVtLnN0eWxlKCksIGxvZ2ljYWxXaWR0aCk7CiAgICAg
ICAgIGJhc2VDb250ZW50TG9naWNhbFdpZHRoICs9IGxvZ2ljYWxXaWR0aDsKICAgICB9CkBAIC0z
NTUsNyArMzU1LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6Omxv
Z2ljYVdpZHRoRm9yUnVieVJhbmdlKFdURjo6UmFuZ2U8c2l6ZV8KICAgICBBU1NFUlQoY2FuZGlk
YXRlUmFuZ2UuZW5kKCkgPD0gaW5saW5lSXRlbUxpc3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoaW5s
aW5lSXRlbUxpc3RbY2FuZGlkYXRlUmFuZ2UuYmVnaW4oKV0ubGF5b3V0Qm94KCkuaXNSdWJ5KCkg
fHwgaW5saW5lSXRlbUxpc3RbY2FuZGlkYXRlUmFuZ2UuYmVnaW4oKV0ubGF5b3V0Qm94KCkuaXNS
dWJ5QmFzZSgpKTsKIAotICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IHBhcmVudEZvcm1h
dHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCk7CisgICAgYXV0byYgZm9ybWF0dGlu
Z1V0aWxzID0gcGFyZW50Rm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nVXRpbHMoKTsKICAg
ICBhdXRvIGNhbmRpZGF0ZUNvbnRlbnRMb2dpY2FsV2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsg
fTsKICAgICBhdXRvIGluZGV4ID0gY2FuZGlkYXRlUmFuZ2UuYmVnaW4oKTsKIApAQCAtMzY1LDcg
KzM2NSw3IEBAIElubGluZUxheW91dFVuaXQgUnVieUZvcm1hdHRpbmdDb250ZXh0Ojpsb2dpY2FX
aWR0aEZvclJ1YnlSYW5nZShXVEY6OlJhbmdlPHNpemVfCiAKICAgICAgICAgaWYgKHJ1YnlMYXlv
dXRCb3guaXNSdWJ5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChydWJ5SXRlbS5pc0lubGluZUJv
eFN0YXJ0KCkgfHwgcnVieUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSk7Ci0gICAgICAgICAgICBjYW5k
aWRhdGVDb250ZW50TG9naWNhbFdpZHRoICs9IGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVJdGVt
V2lkdGgocnVieUl0ZW0sIGxpbmVDb250ZW50TG9naWNhbFJpZ2h0ICsgY2FuZGlkYXRlQ29udGVu
dExvZ2ljYWxXaWR0aCwgeyB9KTsKKyAgICAgICAgICAgIGNhbmRpZGF0ZUNvbnRlbnRMb2dpY2Fs
V2lkdGggKz0gZm9ybWF0dGluZ1V0aWxzLmlubGluZUl0ZW1XaWR0aChydWJ5SXRlbSwgbGluZUNv
bnRlbnRMb2dpY2FsUmlnaHQgKyBjYW5kaWRhdGVDb250ZW50TG9naWNhbFdpZHRoLCB7IH0pOwog
ICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBA
IC0zODQsNyArMzg0LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBSdWJ5Rm9ybWF0dGluZ0NvbnRleHQ6
OmxvZ2ljYVdpZHRoRm9yUnVieVJhbmdlKFdURjo6UmFuZ2U8c2l6ZV8KICAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxXaWR0aCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgICAgICAgICAg
ICAgIGZvciAoOyBpbmRleCA8IGNhbmRpZGF0ZVJhbmdlLmVuZCgpOyArK2luZGV4KSB7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIGJhc2VJbmxpbmVJdGVtID0gaW5saW5lSXRlbUxpc3RbaW5k
ZXhdOwotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsV2lkdGggKz0gZm9ybWF0dGluZ0dlb21l
dHJ5LmlubGluZUl0ZW1XaWR0aChiYXNlSW5saW5lSXRlbSwgbGluZUNvbnRlbnRMb2dpY2FsUmln
aHQgKyBsb2dpY2FsV2lkdGgsIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0
aCArPSBmb3JtYXR0aW5nVXRpbHMuaW5saW5lSXRlbVdpZHRoKGJhc2VJbmxpbmVJdGVtLCBsaW5l
Q29udGVudExvZ2ljYWxSaWdodCArIGxvZ2ljYWxXaWR0aCwgeyB9KTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCZiYXNlSW5saW5lSXRlbS5sYXlvdXRCb3goKSA9PSAmcnVieUxheW91dEJveCAm
JiBiYXNlSW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBFbmQgb2YgYmFzZS4KICAgICAgICAgICAgICAgICAgICAgICAgICsraW5kZXg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDYyYmY5N2Nl
MzExMy4uYWZhYjA0YWFmNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGlu
Z0NvbnRleHQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXlvdXRJbkZs
b3dDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYpIG92ZXJyaWRlOwog
ICAgIExheW91dFVuaXQgdXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IGNvbnN0IFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5JiBmb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5OyB9CisgICAgY29uc3Qg
VGFibGVGb3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFibGVGb3JtYXR0aW5nR2VvbWV0cnk7IH0KICAgICBjb25zdCBUYWJsZUZvcm1hdHRp
bmdRdWlya3MmIGZvcm1hdHRpbmdRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlRm9ybWF0
dGluZ1F1aXJrczsgfQogICAgIGNvbnN0IFRhYmxlRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5n
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3RhYmxlRm9ybWF0dGluZ1N0YXRlOyB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>