<?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>229924</bug_id>
          
          <creation_ts>2021-09-05 12:41:23 -0700</creation_ts>
          <short_desc>Refactor Video,Audio,TextTrack and TrackLists to not depend on HTMLMediaElement</short_desc>
          <delta_ts>2024-08-14 09:28:29 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230318</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=214166</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1790562</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-05 12:41:23 -0700</bug_when>
    <thetext>Refactor Video,Audio,TextTrack and TrackLists to not depend on HTMLMediaElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790585</commentid>
    <comment_count>1</comment_count>
      <attachid>437369</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-05 17:46:40 -0700</bug_when>
    <thetext>Created attachment 437369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791229</commentid>
    <comment_count>2</comment_count>
      <attachid>437557</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-07 14:47:15 -0700</bug_when>
    <thetext>Created attachment 437557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791232</commentid>
    <comment_count>3</comment_count>
      <attachid>437560</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-07 15:01:28 -0700</bug_when>
    <thetext>Created attachment 437560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791252</commentid>
    <comment_count>4</comment_count>
      <attachid>437567</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-07 15:57:52 -0700</bug_when>
    <thetext>Created attachment 437567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791341</commentid>
    <comment_count>5</comment_count>
      <attachid>437585</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-07 20:20:21 -0700</bug_when>
    <thetext>Created attachment 437585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791489</commentid>
    <comment_count>6</comment_count>
      <attachid>437635</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-08 09:26:27 -0700</bug_when>
    <thetext>Created attachment 437635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791550</commentid>
    <comment_count>7</comment_count>
      <attachid>437649</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-08 11:22:53 -0700</bug_when>
    <thetext>Created attachment 437649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791552</commentid>
    <comment_count>8</comment_count>
      <attachid>437650</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-09-08 11:30:55 -0700</bug_when>
    <thetext>Created attachment 437650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791944</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 09:49:59 -0700</bug_when>
    <thetext>Committed r282220 (241507@main): &lt;https://commits.webkit.org/241507@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437650.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791945</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-09 09:51:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/82929817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792567</commentid>
    <comment_count>11</comment_count>
      <attachid>437650</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-09-10 15:38:35 -0700</bug_when>
    <thetext>Comment on attachment 437650
Patch

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

&gt; Source/WebCore/Modules/mediasource/SourceBuffer.cpp:638
&gt; +        m_videoTracks = VideoTrackList::create(scriptExecutionContext());
&gt; +        m_videoTracks-&gt;setOpaqueRootObserver(m_opaqueRootProvider);

Maybe we should cal this setOpaqueRootProvider? Or better yet, maybe the create function should take it as an argument.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437369</attachid>
            <date>2021-09-05 17:46:40 -0700</date>
            <delta_ts>2021-09-07 14:47:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229924-20210905174639.patch</filename>
            <type>text/plain</type>
            <size>111821</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk0MTY2MWZkOGE4N2FmMDkxYTMzMDNm
YWFhNjNmMTMyMDRiMjQ4MjQuLmJiZWY3MGEwNDkwMTIyNmQ4ZDYzMTIwMGM5ZDgzNmIxMmNjZjRj
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDktMDUgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgVmlkZW8sQXVkaW8sVGV4dFRyYWNrIGFu
ZCBUcmFja0xpc3RzIHRvIG5vdCBkZXBlbmQgb24gSFRNTE1lZGlhRWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5OTI0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdl
YWtQdHI8dm9pZD4sIGZvciB1c2UgaW4gdHJhY2tpbmcgb2JqZWN0cycgb3BhcXVlUm9vdHMuCisK
KyAgICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRySW1wbDo6Z2V0
KToKKyAgICAgICAgKFdURjo6V2Vha1B0ckltcGw6OldlYWtQdHJJbXBsKToKKyAgICAgICAgKFdU
Rjo6V2Vha1B0cjo6b3BlcmF0b3ItPiBjb25zdCk6CisgICAgICAgIChXVEY6OldlYWtQdHI6Om9w
ZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChXVEY6OndlYWtfcHRyX2ltcGxfY2FzdCk6CisKIDIw
MjEtMDktMDIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBt
b3JlIHN1cHBvcnQgZm9yIEpJVCBvcGVyYXRpb24gdmFsaWRhdGlvbiB0ZXN0aW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGFmZmJmMTE4ZTIxNWQzNzNjN2U3OWM0N2JmNGYzODQ0YjYwNzIxZGIuLmJiYmJiODhj
MDUzZGM5ZDk0MDljMmIyMDQ0NjQ3MzA5MGU4MjRmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MzYgQEAKKzIwMjEtMDktMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVmYWN0b3IgVmlkZW8sQXVkaW8sVGV4dFRyYWNrIGFuZCBUcmFja0xpc3RzIHRvIG5v
dCBkZXBlbmQgb24gSFRNTE1lZGlhRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5OTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVHJhY2tCYXNlIGFuZCBpdCdzIGRlcml2ZWQgY2xhc3NlcyBj
dXJyZW50bHkgb25seSBhcmUgYWJsZSB0byBoYW5kbGUgYSBzaW5nbGUgImNsaWVudCIKKyAgICAg
ICAgYXQgYSB0aW1lLCB3aGljaCBtZWFucyBhIGNvbXBsaWNhdGVkIHJlLXNlbmRpbmcgb2Ygbm90
aWZpY2F0aW9ucyBmcm9tIG9uZSBjbGllbnQgdG8KKyAgICAgICAgdGhlIG5leHQgdG8gZW5zdXJl
IGV2ZXJ5dGhpbmcgZmxvd3MgdG8gdGhlIEhUTUxNZWRpYUVsZW1lbnQuIEluIGFkZGl0aW9uIHRv
IHRoaXMKKyAgICAgICAgY29tcGxpY2F0ZWQgY2xpZW50IGhlaXJhcmNoeSwgVHJhY2tzIGFuZCB0
aGVpciBUcmFja0xpc3RzIGJlaW5nIHRpZ2h0bHkgYm91bmQgdG8gdGhlaXIKKyAgICAgICAgSFRN
TE1lZGlhRWxlbWVudCB3aWxsIG1ha2UgTVNFLWluLWEtV29ya2VyIG11Y2ggbW9yZSBkaWZmaWN1
bHQgdG8gaW1wbGVtZW50LgorCisgICAgICAgIFJlZmFjdG9yIEF1ZGlvVHJhY2ssIFZpZGVvVHJh
Y2ssIGFuZCBUZXh0VHJhY2sgdG8gaGF2ZSBtdWx0aXBsZSBjbGllbnRzLCB0cmFja2VkIGJ5Cisg
ICAgICAgIGEgV2Vha0hhc2hTZXQuIFJlbW92ZSBIVE1MTWVkaWFFbGVtZW50IGZyb20gdGhhdCBj
bGFzcyBoZWlyYXJjaHksIGFuZCByZXBsYWNlIGl0IHdpdGgKKyAgICAgICAgYSBXZWFrUHRyIHRv
IHRoZWlyIFRyYWNrTGlzdCBmb3Igb3BhcXVlUm9vdCBwdXJwb3Nlcy4KKworICAgICAgICBTaW1p
bGFybHksIHJlZmFjdG9yIEF1ZGlvVHJhY2tMaXN0LCBWaWRlb1RyYWNrTGlzdCwgYW5kIFRleHRU
cmFja0xpc3QgdG8gbm90IHJlcXVpcmUKKyAgICAgICAgYSBiYWNrcG9pbnRlciB0byBIVE1MTWVk
aWFFbGVtZW50LCBhbmQgdXNlIGEgV2Vha1B0cjx2b2lkPiBpbnN0ZWFkLCBhbGxvd2luZyBlaXRo
ZXIKKyAgICAgICAgU291cmNlQnVmZmVyIG9yIEhUTUxNZWRpYUVsZW1lbnQgdG8gYmUgdGhlIGxp
c3QncyBvcGFxdWVSb290LgorCisgICAgICAgIEEgVHJhY2tCYXNlIG5lZWRlZCBhY2Nlc3MgdG8g
YSBIVE1MTWVkaWFFbGVtZW50IG9ubHkgZm9yIHRoZSBuZWNlc3NpdHkgb2Ygb3V0cHV0dGluZwor
ICAgICAgICBhIHdhcm5pbmcgdG8gdGhlIGNvbnNvbGUgd2hlbiBhIGxhbmd1YWdlIGVycm9yIG9j
Y3VycmVkOyBpbnN0ZWFkLCBtYWtlIFRyYWNrQmFzZSBhCisgICAgICAgIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLCBhbmQgcGFzcyBhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gdGhlIFRy
YWNrQmFzZSAoYW5kCisgICAgICAgIGFsbCBpdHMgZGVyaXZlZCBjbGFzc2VzKSBpbiB0aGUgY29u
c3RydWN0b3IuCisKKyAgICAgICAgQSBUcmFja0xpc3RCYXNlIG5vdyBoYXMgYSB0eXBlKCkgbWV0
aG9kLCB3aGljaCBhbGxvd3MgaXQgdG8gYmUgc2FmZWx5IGNhc3QgdG8gQXVkaW9UcmFjaywKKyAg
ICAgICAgVmlkZW9UcmFjaywgYW5kIFRleHRUcmFjaywgdGhyb3VnaCB0eXBlIHRyYWl0IHNwZWNp
YWxpemF0aW9uLgorCisgICAgICAgIFRleHRUcmFjayB1c2VkIEhUTUxNZWRpYUVsZW1lbnQgdG8g
cmV0cmlldmUgaXRzIFRleHRUcmFja0xpc3QgZm9yIGNlcnRhaW4gb3BlcmF0aW9ucywKKyAgICAg
ICAgYW5kIG5vdyB0aGF0IGVhY2ggVHJhY2tCYXNlIGhhcyBhIGJhY2twb2ludGVyIHRvIGl0cyBU
cmFja0xpc3QsIHRoaXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKworICAgICAgICBUZXh0VHJh
Y2tMaXN0IG5vdyBoYXMgc2V0RHVyYXRpb24oKS9kdXJhdGlvbigpIG1lbWJlciBmdW5jdGlvbnMs
IHNvIHRoYXQgd2hlbiBUZXh0VHJhY2sKKyAgICAgICAgcmVjZWl2ZXMgYSBjdWUgd2l0aCBhbiBp
bmRlZmluaXRlIGR1cmF0aW9uLCB0aGF0IGN1ZSdzIGVuZFRpbWUgY2FuIGJlIGNhbGN1bGF0ZWQu
CisKKyAgICAgICAgVGhlIEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2ssIGFuZCBUZXh0VHJhY2sgSURM
cyBwcmV2aW91c2x5IHNwZWNpZmllZCBHZW5lcmF0ZUlzUmVhY2hhYmxlLAorICAgICAgICB3aXRo
IGEgcGFyYW1ldGVyIG9mIEltcGxFbGVtZW50Um9vdCwgd2hpY2ggcmVxdWlyZWQgYW4gZWxlbWVu
dCgpIG1ldGhvZCBvbiBlYWNoOyBub3cKKyAgICAgICAgdGhhdCBUcmFja0Jhc2UgaGFzIGFuIG9w
YXF1ZVJvb3QoKSBtZXRob2QsIHRoaXMgcGFyYW1ldGVyIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnku
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjp0ZXh0VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dmlkZW9UcmFja0tpbmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphdWRpb1RyYWNrS2luZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFiZWxDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhbmd1YWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tMYW5ndWFn
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQ
cml2YXRlRHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlQXVkaW9UcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tMYWJlbENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTGFu
Z3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxS
ZW1vdmVUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlk
ZW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6dmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRl
b1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVBdWRpb1RyYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVUZXh0VHJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZVZpZGVvVHJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxU
cmFja0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6fkhU
TUxUcmFja0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNo
YW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpB
dWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldExhbmd1YWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9UcmFjazo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2s6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmVuYWJsZWRD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmlkQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpsYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFjazo6d2lsbFJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50OjphdWRpb1RyYWNrRW5h
YmxlZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9U
cmFja0lkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50OjphdWRp
b1RyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6
YXVkaW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xp
ZW50OjphdWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tDbGllbnQ6OndpbGxSZW1vdmVBdWRpb1RyYWNrKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L0F1ZGlvVHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5oOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlv
VHJhY2tMaXN0LmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6SW5iYW5kRGF0YVRl
eHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kR2VuZXJpY1RleHRUcmFjazo6SW5iYW5kR2VuZXJpY1RleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlQ3VlRnJvbUN1ZURhdGEpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRU
cmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6SW5iYW5k
VGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6d2lsbFJlbW92
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBo
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2s6OkluYmFuZFdlYlZUVFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC90
cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0xvYWRh
YmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpM
b2FkYWJsZVRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6
bmV3Q3Vlc0F2YWlsYWJsZSk6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6VGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6flRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnRleHRUcmFja0xpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjphZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
bGVhckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldEtpbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6cmVtb3ZlQWxsQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFk
ZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZUN1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2s6OmN1ZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpjdWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0
cmFja0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tJbmRleFJlbGF0
aXZlVG9SZW5kZXJlZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldExh
bmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0SWQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja0lkQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTW9kZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tMYWJlbENo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tMYW5n
dWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJh
Y2tBZGRDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNr
UmVtb3ZlQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFj
a0FkZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1Jl
bW92ZUN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OndpbGxSZW1vdmVU
ZXh0VHJhY2spOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmlkbDoKKyAgICAgICAg
KiBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrTGlzdDo6VGV4dFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0
Ojp+VGV4dFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjphcHBl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6cmVtb3ZlKToKKyAgICAgICAg
KiBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1Ry
YWNrQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OlRyYWNrQmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFja0Jhc2U6OmNsZWFyVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
QmFzZTo6dHJhY2tMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0
TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFUcmFja0Jhc2U6Ok1lZGlhVHJhY2tC
YXNlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrQmFzZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tCYXNlOjppZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6Omxh
YmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6bGFuZ3VhZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpvcGFxdWVSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYWNrQmFzZTo6c2V0SWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpz
ZXRMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpyb290KToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6VHJh
Y2tMaXN0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjp+VHJhY2tMaXN0
QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpvcGFxdWVSb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0xpc3RCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjp0
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OnNldE9wYXF1ZVJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6cm9vdCk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRl
b1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OlZpZGVvVHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNlbGVjdGVk
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjppZENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9UcmFjazo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2s6OndpbGxSZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
azo6c2V0S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUpOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja0NsaWVudDo6dmlkZW9UcmFja0lkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrQ2xpZW50Ojp2aWRlb1RyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja0NsaWVudDo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrQ2xpZW50Ojp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVudDo6d2lsbFJlbW92ZVZpZGVv
VHJhY2spOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5pZGw6CisgICAgICAgICog
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrTGlzdDo6VmlkZW9UcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0xp
c3Q6OmFwcGVuZCk6CisgICAgICAgICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oOgorICAg
ICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbDoK
IDIwMjEtMDgtMjMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
RGUtZmxha2UgbWVkaWEgcGFpbnRpbmcgdGVzdHMgYnkgZGVsYXlpbmcgcmVhZHlTdGF0ZSA+PSBI
QVZFX0NVUlJFTlRfREFUQSB1bnRpbCBlbGVtZW50IGlzIGFibGUgdG8gcGFpbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaApp
bmRleCA2YTZhMmY1YzU0NWRkMmQ3NDRkNTg0NWI2NDQ5NDc2NmE2MGE4ODhjLi43NDU3NzFiOWE5
YzUzNmE4ZGNkYWFhY2YyMjVlMDgyZjU5Y2IzMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9XZWFrUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvV2Vha1B0ci5oCkBAIC0zOSw2ICszOSwx
OCBAQCBzdHJ1Y3QgRW1wdHlDb3VudGVyIHsKICAgICBzdGF0aWMgdm9pZCBkZWNyZW1lbnQoKSB7
IH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBXZWFr
VHlwZVRyYWl0czsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBXZWFrVHlwZVRyYWl0
czxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NsYXNzPFQ+Ojp2YWx1ZT46OnR5
cGU+IHsKKyAgICB1c2luZyBQdHJUeXBlID0gdHlwZW5hbWUgVDo6V2Vha1ZhbHVlVHlwZSo7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFdlYWtUeXBlVHJhaXRzPFQsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfdm9pZDxUPjo6dmFsdWU+Ojp0eXBlPiB7CisgICAg
dXNpbmcgUHRyVHlwZSA9IFQqOworfTsKKwogZW51bSBjbGFzcyBFbmFibGVXZWFrUHRyVGhyZWFk
aW5nQXNzZXJ0aW9ucyA6IGJvb2wgeyBObywgWWVzIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENv
dW50ZXIgPSBFbXB0eUNvdW50ZXI+IGNsYXNzIFdlYWtQdHJJbXBsIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFdlYWtQdHJJbXBsPENvdW50ZXI+PiB7CkBAIC01NSw5ICs2Nyw5IEBAIHB1
YmxpYzoKICAgICAgICAgQ291bnRlcjo6ZGVjcmVtZW50KCk7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgVDo6V2Vha1ZhbHVlVHlwZSogZ2V0KCkKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBXZWFrVHlwZVRyYWl0czxUPjo6UHRyVHlwZSBnZXQo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIFQ6OldlYWtWYWx1
ZVR5cGUqPihtX3B0cik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBXZWFr
VHlwZVRyYWl0czxUPjo6UHRyVHlwZT4obV9wdHIpOwogICAgIH0KIAogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQpAQCAtNjksNyArODEsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZXhwbGljaXQgV2Vh
a1B0ckltcGwoVCogcHRyKQotICAgICAgICA6IG1fcHRyKHN0YXRpY19jYXN0PHR5cGVuYW1lIFQ6
OldlYWtWYWx1ZVR5cGUqPihwdHIpKQorICAgICAgICA6IG1fcHRyKHN0YXRpY19jYXN0PHR5cGVu
YW1lIFdlYWtUeXBlVHJhaXRzPFQ+OjpQdHJUeXBlPihwdHIpKQogI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgICwgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZChpc01haW5UaHJlYWQoKSkK
ICNlbmRpZgpAQCAtMTEzLDEzICsxMjUsMTUgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IFdlYWtQdHImIG9wZXJhdG9yPShjb25zdCBXZWFrUHRyPFUsIENvdW50ZXI+Jik7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gV2Vha1B0ciYgb3BlcmF0b3I9KFdlYWtQdHI8VSwgQ291
bnRlcj4mJik7CiAKLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gVD4KKyAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc192b2lkPFU+
Ojp2YWx1ZSwgVT46OnR5cGUqIG9wZXJhdG9yLT4oKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKCFtX2ltcGwgfHwgIW1fc2hvdWxkRW5hYmxlQXNzZXJ0aW9ucyB8fCBtX2ltcGwtPndhc0Nv
bnN0cnVjdGVkT25NYWluVGhyZWFkKCkgPT0gaXNNYWluVGhyZWFkKCkpOwogICAgICAgICByZXR1
cm4gZ2V0KCk7CiAgICAgfQogCi0gICAgVCYgb3BlcmF0b3IqKCkgY29uc3QKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVID0gVD4KKyAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc192
b2lkPFU+Ojp2YWx1ZSwgVT46OnR5cGUmIG9wZXJhdG9yKigpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQoIW1faW1wbCB8fCAhbV9zaG91bGRFbmFibGVBc3NlcnRpb25zIHx8IG1faW1wbC0+
d2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQoKSA9PSBpc01haW5UaHJlYWQoKSk7CiAgICAgICAg
IHJldHVybiAqZ2V0KCk7CkBAIC0yNDAsNyArMjU0LDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgQ291bnRlcj4gaW5saW5lIFdlYWtQdHJJ
bXBsPENvdW50ZXI+KiB3ZWFrX3B0cl9pbXBsX2Nhc3QoV2Vha1B0ckltcGw8Q291bnRlcj4qIGlt
cGwpCiB7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBUOjpXZWFr
VmFsdWVUeXBlLCB0eXBlbmFtZSBVOjpXZWFrVmFsdWVUeXBlPiwgIkludmFsaWQgd2VhayBwb2lu
dGVyIGNhc3QiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIFdl
YWtUeXBlVHJhaXRzPFQ+OjpQdHJUeXBlLCB2b2lkKj4gfHwgc3RkOjppc19zYW1lX3Y8dHlwZW5h
bWUgV2Vha1R5cGVUcmFpdHM8VD46OlB0clR5cGUsIHR5cGVuYW1lIFdlYWtUeXBlVHJhaXRzPFU+
OjpQdHJUeXBlPiwgIkludmFsaWQgd2VhayBwb2ludGVyIGNhc3QiKTsKICAgICByZXR1cm4gaW1w
bDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCmluZGV4IDY3YTYxYmM4NDFkZGJmOTQ5MTc3Y2ExZWRlNzFlZWMwNzg5MDdi
ZTUuLmRmZGEwOGY3MDc5NDMyNzAyNWU1MGU2MGZmYmEyZjhlYWNjNzVmZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAg
LTYzMiwyMiArNjMyLDI4IEBAIHVpbnQ2NF90IFNvdXJjZUJ1ZmZlcjo6bWF4aW11bUJ1ZmZlclNp
emUoKSBjb25zdAogCiBWaWRlb1RyYWNrTGlzdCYgU291cmNlQnVmZmVyOjp2aWRlb1RyYWNrcygp
CiB7Ci0gICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQotICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlk
ZW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVkKCkgPyBudWxscHRyIDog
bV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX3ZpZGVvVHJhY2tzKSB7CisgICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1Ry
YWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fdmlk
ZW9UcmFja3MtPnNldE9wYXF1ZVJvb3QobWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICB9CiAgICAg
cmV0dXJuICptX3ZpZGVvVHJhY2tzOwogfQogCiBBdWRpb1RyYWNrTGlzdCYgU291cmNlQnVmZmVy
OjphdWRpb1RyYWNrcygpCiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1
ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVk
KCkgPyBudWxscHRyIDogbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9U
cmFja3MgPSBBdWRpb1RyYWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNldE9wYXF1ZVJvb3QobWFrZVdlYWtQdHIoKnRoaXMp
KTsKKyAgICB9CiAgICAgcmV0dXJuICptX2F1ZGlvVHJhY2tzOwogfQogCiBUZXh0VHJhY2tMaXN0
JiBTb3VyY2VCdWZmZXI6OnRleHRUcmFja3MoKQogewotICAgIGlmICghbV90ZXh0VHJhY2tzKQot
ICAgICAgICBtX3RleHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUobWFrZVdlYWtQdHIo
KGlzUmVtb3ZlZCgpID8gbnVsbHB0ciA6IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKSkpLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghbV90ZXh0VHJhY2tzKSB7CisgICAgICAg
IG1fdGV4dFRyYWNrcyA9IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgICAgICBtX3RleHRUcmFja3MtPnNldE9wYXF1ZVJvb3QobWFrZVdlYWtQdHIo
KnRoaXMpKTsKKyAgICB9CiAgICAgcmV0dXJuICptX3RleHRUcmFja3M7CiB9CiAKQEAgLTc3OSw3
ICs3ODUsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQogICAgICAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBzdGVwcyA1LjIuMS01LjIuOC4xIGFzIHBlciBFZGl0b3IncyBEcmFmdCAwOSBK
YW51YXJ5IDIwMTUsIGFuZCByZW9yZGVyIHRoaXMKICAgICAgICAgICAgIC8vIDUuMi4xIExldCBu
ZXcgYXVkaW8gdHJhY2sgYmUgYSBuZXcgQXVkaW9UcmFjayBvYmplY3QuCiAgICAgICAgICAgICAv
LyA1LjIuMiBHZW5lcmF0ZSBhIHVuaXF1ZSBJRCBhbmQgYXNzaWduIGl0IHRvIHRoZSBpZCBwcm9w
ZXJ0eSBvbiBuZXcgdmlkZW8gdHJhY2suCi0gICAgICAgICAgICBhdXRvIG5ld0F1ZGlvVHJhY2sg
PSBBdWRpb1RyYWNrOjpjcmVhdGUoKnRoaXMsICphdWRpb1RyYWNrSW5mby50cmFjayk7CisgICAg
ICAgICAgICBhdXRvIG5ld0F1ZGlvVHJhY2sgPSBBdWRpb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAqYXVkaW9UcmFja0luZm8udHJhY2spOworICAgICAgICAgICAgbmV3
QXVkaW9UcmFjay0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICAgICAgICAgIG5ld0F1ZGlvVHJhY2st
PnNldFNvdXJjZUJ1ZmZlcih0aGlzKTsKIAogICAgICAgICAgICAgLy8gNS4yLjMgSWYgYXVkaW9U
cmFja3MubGVuZ3RoIGVxdWFscyAwLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAt
ODAxLDcgKzgwOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAgICAvLyA1
LjIuNyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHRydXN0ZWQgZXZlbnQgbmFtZWQgYWRkdHJhY2ss
IHRoYXQgZG9lcyBub3QgYnViYmxlIGFuZCBpcwogICAgICAgICAgICAgLy8gbm90IGNhbmNlbGFi
bGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQgaW50ZXJmYWNlLCBhdCB0aGUgQXVkaW9U
cmFja0xpc3Qgb2JqZWN0CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSBhdWRpb1Ry
YWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgICAgICAgICBtX3Nv
dXJjZS0+bWVkaWFFbGVtZW50KCktPmVuc3VyZUF1ZGlvVHJhY2tzKCkuYXBwZW5kKG5ld0F1ZGlv
VHJhY2suY29weVJlZigpKTsKKyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+
YWRkQXVkaW9UcmFjayhuZXdBdWRpb1RyYWNrLmNvcHlSZWYoKSk7CiAKICAgICAgICAgICAgIG1f
YXVkaW9Db2RlY3MuYXBwZW5kKGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsK
IApAQCAtODE0LDcgKzgyMSw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHN0ZXBzIDUuMy4xLTUuMy44LjEgYXMgcGVyIEVkaXRvcidz
IERyYWZ0IDA5IEphbnVhcnkgMjAxNSwgYW5kIHJlb3JkZXIgdGhpcwogICAgICAgICAgICAgLy8g
NS4zLjEgTGV0IG5ldyB2aWRlbyB0cmFjayBiZSBhIG5ldyBWaWRlb1RyYWNrIG9iamVjdC4KICAg
ICAgICAgICAgIC8vIDUuMy4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8g
dGhlIGlkIHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KLSAgICAgICAgICAgIGF1dG8gbmV3
VmlkZW9UcmFjayA9IFZpZGVvVHJhY2s6OmNyZWF0ZSgqdGhpcywgKnZpZGVvVHJhY2tJbmZvLnRy
YWNrKTsKKyAgICAgICAgICAgIGF1dG8gbmV3VmlkZW9UcmFjayA9IFZpZGVvVHJhY2s6OmNyZWF0
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp2aWRlb1RyYWNrSW5mby50cmFjayk7CisgICAg
ICAgICAgICBuZXdWaWRlb1RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbmV3
VmlkZW9UcmFjay0+c2V0U291cmNlQnVmZmVyKHRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjMu
MyBJZiB2aWRlb1RyYWNrcy5sZW5ndGggZXF1YWxzIDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CkBAIC04MzYsNyArODQ0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAg
ICAgICAgIC8vIDUuMy43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1l
ZCBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBu
b3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0
IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkg
dGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAg
ICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5hcHBl
bmQobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlh
RWxlbWVudCgpLT5hZGRWaWRlb1RyYWNrKG5ld1ZpZGVvVHJhY2suY29weVJlZigpKTsKIAogICAg
ICAgICAgICAgbV92aWRlb0NvZGVjcy5hcHBlbmQodmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24t
PmNvZGVjKCkpOwogCkBAIC04NTEsNyArODU5LDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RlcHMgNS40LjEtNS40LjguMSBhcyBw
ZXIgRWRpdG9yJ3MgRHJhZnQgMDkgSmFudWFyeSAyMDE1LCBhbmQgcmVvcmRlciB0aGlzCiAgICAg
ICAgICAgICAvLyA1LjQuMSBMZXQgbmV3IHRleHQgdHJhY2sgYmUgYSBuZXcgVGV4dFRyYWNrIG9i
amVjdCB3aXRoIGl0cyBwcm9wZXJ0aWVzIHBvcHVsYXRlZCB3aXRoIHRoZQogICAgICAgICAgICAg
Ly8gYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVu
dC4KLSAgICAgICAgICAgIGF1dG8gbmV3VGV4dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVh
dGUoZG9jdW1lbnQoKSwgKnRoaXMsIHRleHRUcmFja1ByaXZhdGUpOworICAgICAgICAgICAgYXV0
byBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0
VHJhY2tQcml2YXRlKTsKKyAgICAgICAgICAgIG5ld1RleHRUcmFjay0+YWRkQ2xpZW50KCp0aGlz
KTsKIAogICAgICAgICAgICAgLy8gNS40LjIgSWYgdGhlIG1vZGUgcHJvcGVydHkgb24gbmV3IHRl
eHQgdHJhY2sgZXF1YWxzICJzaG93aW5nIiBvciAiaGlkZGVuIiwgdGhlbiBzZXQgYWN0aXZlCiAg
ICAgICAgICAgICAvLyB0cmFjayBmbGFnIHRvIHRydWUuCkBAIC04NjgsNyArODc3LDcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KEluaXRpYWxpemEKICAgICAgICAgICAgIC8vIDUuNC42IFF1ZXVlIGEgdGFzayB0
byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCBidWJi
bGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0
aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBUZXh0VHJhY2tMaXN0IG9iamVjdAogICAg
ICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhl
IEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkt
PmVuc3VyZVRleHRUcmFja3MoKS5hcHBlbmQobmV3VGV4dFRyYWNrLmNvcHlSZWYoKSk7CisgICAg
ICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPmFkZFRleHRUcmFjayhuZXdUZXh0VHJh
Y2suY29weVJlZigpKTsKIAogICAgICAgICAgICAgbV90ZXh0Q29kZWNzLmFwcGVuZCh0ZXh0VHJh
Y2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKIApAQCAtMTAyMyw5ICsxMDMyLDI0IEBAIHZv
aWQgU291cmNlQnVmZmVyOjp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2smIHRy
YWNrKQogCiAgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnMo
dHJhY2spKQogICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9
CiAKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50
KCktPnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQodHJhY2spOwordm9pZCBTb3VyY2VCdWZmZXI6
OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV92
aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1f
dmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXI6OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYg
KG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAg
ICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgU291cmNl
QnVmZmVyOjp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQorewor
ICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkK
KyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lk
IFNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNr
KQpAQCAtMTA1MCw5ICsxMDc0LDI0IEBAIHZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5h
YmxlZENoYW5nZWQoQXVkaW9UcmFjayYgdHJhY2spCiAKICAgICBpZiAobV9hdWRpb1RyYWNrcyAm
JiBtX2F1ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCiAgICAgICAgIG1fYXVkaW9UcmFja3Mt
PnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KIAotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAg
ICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHRy
YWNrKTsKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFj
ayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1RyYWNrcy0+Y29u
dGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50
KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFiZWxDaGFuZ2VkKEF1ZGlv
VHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1fYXVkaW9UcmFja3Mt
PmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VF
dmVudCgpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhbmd1YWdlQ2hhbmdl
ZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlv
VHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxl
Q2hhbmdlRXZlbnQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFu
Z2VkKFRleHRUcmFjayYgdHJhY2spCkBAIC0xMDc3LDM5ICsxMTE2LDE4IEBAIHZvaWQgU291cmNl
QnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogCiAgICAgaWYg
KG1fdGV4dFRyYWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAg
bV90ZXh0VHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Ci0KLSAgICBpZiAoIWlzUmVtb3Zl
ZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja01vZGVDaGFu
Z2VkKHRyYWNrKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja0FkZEN1ZShUZXh0
VHJhY2smIHRyYWNrLCBUZXh0VHJhY2tDdWUmIGN1ZSkKLXsKLSAgICBpZiAoIWlzUmVtb3ZlZCgp
KQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja0FkZEN1ZSh0cmFj
aywgY3VlKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRy
YWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgY3VlTGlzdCkKLXsKLSAgICBpZiAo
IWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFj
a0FkZEN1ZXModHJhY2ssIGN1ZUxpc3QpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRy
YWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAg
IGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4
dFRyYWNrUmVtb3ZlQ3VlKHRyYWNrLCBjdWUpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4
dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0
JiBjdWVMaXN0KQordm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRU
cmFjayYgdHJhY2spCiB7Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2Ut
Pm1lZGlhRWxlbWVudCgpLT50ZXh0VHJhY2tSZW1vdmVDdWVzKHRyYWNrLCBjdWVMaXN0KTsKKyAg
ICBpZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAg
ICAgICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAotdm9pZCBTb3Vy
Y2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2b2lkIFNv
dXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiB7
Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT50ZXh0VHJhY2tLaW5kQ2hhbmdlZCh0cmFjayk7CisgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBt
X3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIGZyYW1lRHVyYXRpb24pCkBAIC0xMTE5LDggKzEx
MzcsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNh
bXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikKIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKIHsK
LSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+c2V0RHVyYXRpb25JbnRl
cm5hbChkdXJhdGlvbik7CisgICAgaWYgKGlzUmVtb3ZlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3NvdXJjZS0+c2V0RHVyYXRpb25JbnRlcm5hbChkdXJhdGlvbik7CisgICAgaWYgKG1f
dGV4dFRyYWNrcykKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXREdXJhdGlvbihkdXJhdGlvbik7
CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlSGlnaGVzdFByZXNl
bnRhdGlvblRpbWVzdGFtcENoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiB0aW1lc3RhbXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRl
eCBlZWNkMzFiZmM1ZjRiYTJmM2Y2NjA4MDdkZWE2MjUxNzc3NWJhNzZiLi45YjBhYThjNjc2YjAx
ZjI1YjU3MTRlMTk1OGQxOTAyNTVmYTliMTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTY5LDYgKzY5LDkgQEAgY2xhc3Mg
U291cmNlQnVmZmVyIGZpbmFsCiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTb3VyY2VC
dWZmZXIpOwogcHVibGljOgorICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBFdmVudFRhcmdldDo6
V2Vha1ZhbHVlVHlwZTsKKyAgICB1c2luZyBFdmVudFRhcmdldDo6d2Vha1B0ckZhY3Rvcnk7CisK
ICAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlcj4gY3JlYXRlKFJlZjxTb3VyY2VCdWZmZXJQcml2
YXRlPiYmLCBNZWRpYVNvdXJjZSopOwogICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlcigpOwogCkBA
IC0xNjEsMTUgKzE2NCwyMCBAQCBwcml2YXRlOgogCiAgICAgLy8gQXVkaW9UcmFja0NsaWVudAog
ICAgIHZvaWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKLSAg
ICAvLyBWaWRlb1RyYWNrQ2xpZW50Ci0gICAgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRp
b1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBhdWRpb1RyYWNrTGFiZWxDaGFuZ2VkKEF1ZGlvVHJh
Y2smKSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFj
ayYpIGZpbmFsOworCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdm9pZCB0ZXh0VHJhY2tL
aW5kQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKICAgICB2b2lkIHRleHRUcmFja01vZGVDaGFu
Z2VkKFRleHRUcmFjayYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJh
Y2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tS
ZW1vdmVDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSBmaW5hbDsKLSAg
ICB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSBm
aW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5h
bDsKKworICAgIC8vIFZpZGVvVHJhY2tDbGllbnQKKyAgICB2b2lkIHZpZGVvVHJhY2tLaW5kQ2hh
bmdlZChWaWRlb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB2aWRlb1RyYWNrTGFiZWxDaGFuZ2Vk
KFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQo
VmlkZW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChW
aWRlb1RyYWNrJikgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU291
cmNlQnVmZmVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmgKaW5kZXggZWY3MmQ5YjdhYWJkYzk5ZTczMGZmZGVlODBl
MTAxMzU5ZjBhZmQwZi4uZjA1OGM5OWQ5MzVjMWY3M2JhOWY1OTE4NWI1MTRhNzkwNGQ3NDU3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaApAQCAtMzYsMTMg
KzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFja0Jhc2UmKTsKIAotaW5saW5l
IHZvaWQqIHJvb3QoVHJhY2tCYXNlKiB0cmFjaykKLXsKLSAgICBpZiAodHJhY2stPmVsZW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuIHJvb3QodHJhY2stPmVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHRy
YWNrOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklE
RU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiZTAxMmY5
N2IwMDQ4OTQyYTEwMGUzMjAzNGFhMGI3ZmQwYmM5ODllLi4yN2Q4NmU2NDkzMTZhOGM4Njc2MjUz
NzcyMGQ0NGNkYWIzZDRiYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTU0NCwxMyArNTQ0LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVs
ZW1lbnQoKQogICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnJlbW92ZUNvbmZpZ3Vy
YXRpb25DaGFuZ2VPYnNlcnZlcigqdGhpcyk7CiAjZW5kaWYKIAotICAgIGlmIChtX2F1ZGlvVHJh
Y2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzLT5jbGVhckVsZW1lbnQoKTsKLSAgICBpZiAobV90
ZXh0VHJhY2tzKQotICAgICAgICBtX3RleHRUcmFja3MtPmNsZWFyRWxlbWVudCgpOwotICAgIGlm
IChtX3ZpZGVvVHJhY2tzKQotICAgICAgICBtX3ZpZGVvVHJhY2tzLT5jbGVhckVsZW1lbnQoKTsK
LQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKGhhc0V2ZW50
TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNo
YW5nZWRFdmVudCkgfHwgbV9yZW1vdGUtPmhhc0F2YWlsYWJpbGl0eUNhbGxiYWNrcygpKSB7CiAg
ICAgICAgIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgPSBmYWxzZTsK
QEAgLTE4NjksNiArMTg2MiwyOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tF
bmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKICAgICBjaGVja0ZvckF1ZGlvQW5kVmlk
ZW8oKTsKIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrS2luZENoYW5nZWQo
QXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1Ry
YWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja0xhYmVs
Q2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBt
X2F1ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNj
aGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1Ry
YWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlv
VHJhY2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRp
b1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndpbGxSZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIHJlbW92
ZUF1ZGlvVHJhY2sodHJhY2spOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiB7CiAgICAgYm9vbCB0cmFja0lzTG9hZGVk
ID0gdHJ1ZTsKQEAgLTE4ODQsOCArMTkwMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKICAgICB9CiAKICAgICAvLyBJZiB0
aGlzIGlzIHRoZSBmaXJzdCBhZGRlZCB0cmFjaywgY3JlYXRlIHRoZSBsaXN0IG9mIHRleHQgdHJh
Y2tzLgotICAgIGlmICghbV90ZXh0VHJhY2tzKQotICAgICAgICBtX3RleHRUcmFja3MgPSBUZXh0
VHJhY2tMaXN0OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBlbnN1cmVUZXh0VHJhY2tzKCk7CiAKICAgICAv
LyBNYXJrIHRoaXMgdHJhY2sgYXMgImNvbmZpZ3VyZWQiIHNvIGNvbmZpZ3VyZVRleHRUcmFja3Mg
d29uJ3QgY2hhbmdlIHRoZSBtb2RlIGFnYWluLgogICAgIHRyYWNrLnNldEhhc0JlZW5Db25maWd1
cmVkKHRydWUpOwpAQCAtMTkwNCw2ICsxOTE5LDMzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKICNlbmRpZgogfQogCit2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2sp
Cit7CisgICAgaWYgKHRyYWNrLmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYm
IHRyYWNrLmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcyAmJiB0cmFjay5tb2Rl
KCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKQorICAgICAgICB0cmFjay5zZXRNb2RlKFRl
eHRUcmFjazo6TW9kZTo6SGlkZGVuKTsKKworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90ZXh0
VHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xhYmVs
Q2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90
ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1
bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xh
bmd1YWdlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX3RleHRUcmFja3Mg
JiYgbV90ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdGV4dFRyYWNrcy0+
c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxS
ZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAodHJhY2sudHJhY2tU
eXBlKCkgPT0gVGV4dFRyYWNrOjpJbkJhbmQpCisgICAgICAgIHJlbW92ZVRleHRUcmFjayh0cmFj
ayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdl
ZChWaWRlb1RyYWNrJiB0cmFjaykKIHsKICAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVv
VHJhY2tzLT5jb250YWlucyh0cmFjaykpCkBAIC0xOTExLDEwICsxOTUzLDI3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFj
aykKICAgICBjaGVja0ZvckF1ZGlvQW5kVmlkZW8oKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCiB7Ci0g
ICAgaWYgKHRyYWNrLmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIHRyYWNr
LmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcyAmJiB0cmFjay5tb2RlKCkgPT0g
VGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKQotICAgICAgICB0cmFjay5zZXRNb2RlKFRleHRUcmFj
azo6TW9kZTo6SGlkZGVuKTsKKyAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrTGFiZWxDaGFu
Z2VkKFZpZGVvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlk
ZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1
bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tM
YW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdmlkZW9UcmFj
a3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJh
Y2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgcmVtb3ZlVmlk
ZW9UcmFjayh0cmFjayk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YmVnaW5JZ25vcmlu
Z1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkKQEAgLTQwODcsMTUgKzQxNDYsMTUgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soQXVkaW9UcmFj
a1ByaXZhdGUmIHRyYWNrKQogICAgICAgICBzZXRBdXRvcGxheUV2ZW50UGxheWJhY2tTdGF0ZShB
dXRvcGxheUV2ZW50UGxheWJhY2tTdGF0ZTo6UHJldmVudGVkQXV0b3BsYXkpOwogICAgIH0KIAot
ICAgIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjazo6Y3JlYXRlKCp0aGlzLCB0cmFjaykpOworICAg
IGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjazo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgdHJhY2spKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFk
ZFRleHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFjaykKIHsKICAgICAvLyA0Ljgu
MTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQgdHJhY2tzCiAgICAgLy8gMS4gQXNzb2NpYXRl
IHRoZSByZWxldmFudCBkYXRhIHdpdGggYSBuZXcgdGV4dCB0cmFjayBhbmQgaXRzIGNvcnJlc3Bv
bmRpbmcgbmV3IFRleHRUcmFjayBvYmplY3QuCi0gICAgYXV0byB0ZXh0VHJhY2sgPSBJbmJhbmRU
ZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCgpLCAqdGhpcywgdHJhY2spOwotICAgIHRleHRUcmFj
ay0+c2V0TWVkaWFFbGVtZW50KG1ha2VXZWFrUHRyKHRoaXMpKTsKKyAgICBhdXRvIHRleHRUcmFj
ayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCksIHRyYWNrKTsKKyAgICB0ZXh0
VHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAKICAgICAvLyAyLiBTZXQgdGhlIG5ldyB0ZXh0IHRy
YWNrJ3Mga2luZCwgbGFiZWwsIGFuZCBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgc2VtYW50aWNzIG9m
IHRoZSByZWxldmFudCBkYXRhLAogICAgIC8vIGFzIGRlZmluZWQgYnkgdGhlIHJlbGV2YW50IHNw
ZWNpZmljYXRpb24uIElmIHRoZXJlIGlzIG5vIGxhYmVsIGluIHRoYXQgZGF0YSwgdGhlbiB0aGUg
bGFiZWwgbXVzdApAQCAtNDEyNSw3ICs0MTg0LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFjaykK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soVmlk
ZW9UcmFja1ByaXZhdGUmIHRyYWNrKQogewotICAgIGFkZFZpZGVvVHJhY2soVmlkZW9UcmFjazo6
Y3JlYXRlKCp0aGlzLCB0cmFjaykpOworICAgIGF1dG8gdmlkZW9UcmFjayA9IFZpZGVvVHJhY2s6
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRyYWNrKTsKKyAgICB2aWRlb1RyYWNr
LT5hZGRDbGllbnQoKnRoaXMpOworICAgIGFkZFZpZGVvVHJhY2soV1RGTW92ZSh2aWRlb1RyYWNr
KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRp
b1RyYWNrKEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFjaykKQEAgLTQxNDgsNiArNDIwOSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayhSZWY8QXVkaW9UcmFjaz4mJiB0cmFj
aykKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICB0cmFjay0+c2V0TG9nZ2VyKGxvZ2dl
cigpLCBsb2dJZGVudGlmaWVyKCkpOwogI2VuZGlmCisgICAgdHJhY2stPmFkZENsaWVudCgqdGhp
cyk7CiAgICAgZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQoV1RGTW92ZSh0cmFjaykpOwogfQog
CkBAIC00MTY1LDYgKzQyMjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFj
ayhSZWY8VGV4dFRyYWNrPiYmIHRyYWNrKQogICAgICAgICAgICAgbV9jYXB0aW9uRGlzcGxheU1v
ZGUgPSBwYWdlLT5ncm91cCgpLmVuc3VyZUNhcHRpb25QcmVmZXJlbmNlcygpLmNhcHRpb25EaXNw
bGF5TW9kZSgpOwogICAgIH0KIAorICAgIHRyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIGVu
c3VyZVRleHRUcmFja3MoKS5hcHBlbmQoV1RGTW92ZSh0cmFjaykpOwogfQogCkBAIC00MTczLDEy
ICs0MjM2LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayhSZWY8Vmlk
ZW9UcmFjaz4mJiB0cmFjaykKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICB0cmFjay0+
c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwogI2VuZGlmCisgICAgdHJhY2st
PmFkZENsaWVudCgqdGhpcyk7CiAgICAgZW5zdXJlVmlkZW9UcmFja3MoKS5hcHBlbmQoV1RGTW92
ZSh0cmFjaykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2so
UmVmPEF1ZGlvVHJhY2s+JiYgdHJhY2spCiB7Ci0gICAgdHJhY2stPmNsZWFyQ2xpZW50KCk7Cisg
ICAgdHJhY2stPmNsZWFyQ2xpZW50KCp0aGlzKTsKICAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUo
dHJhY2suZ2V0KCkpOwogfQogCkBAIC00MTg3LDE0ICs0MjUxLDE0IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKFJlZjxUZXh0VHJhY2s+JiYgdHJhY2ssIGJvb2wgc2No
ZWR1bGVFdmVuCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUgeyAqdGhpcyB9Owog
ICAgIGlmIChhdXRvIGN1ZXMgPSBtYWtlUmVmUHRyKHRyYWNrLT5jdWVzKCkpKQogICAgICAgICB0
ZXh0VHJhY2tSZW1vdmVDdWVzKHRyYWNrLCAqY3Vlcyk7Ci0gICAgdHJhY2stPmNsZWFyQ2xpZW50
KCk7CisgICAgdHJhY2stPmNsZWFyQ2xpZW50KCp0aGlzKTsKICAgICBpZiAobV90ZXh0VHJhY2tz
KQogICAgICAgICBtX3RleHRUcmFja3MtPnJlbW92ZSh0cmFjaywgc2NoZWR1bGVFdmVudCk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVmlkZW9UcmFjayhSZWY8VmlkZW9UcmFj
az4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICB0cmFjay0+Y2xl
YXJDbGllbnQoKnRoaXMpOwogICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7CiB9CiAK
QEAgLTQyMzEsNyArNDI5NSw3IEBAIEV4Y2VwdGlvbk9yPFRleHRUcmFjayY+IEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0CiAKICAgICAvLyA1
LiBDcmVhdGUgYSBuZXcgdGV4dCB0cmFjayBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXcgb2JqZWN0
LCBhbmQgc2V0IGl0cyB0ZXh0IHRyYWNrIGtpbmQgdG8ga2luZCwgaXRzIHRleHQKICAgICAvLyB0
cmFjayBsYWJlbCB0byBsYWJlbCwgaXRzIHRleHQgdHJhY2sgbGFuZ3VhZ2UgdG8gbGFuZ3VhZ2Uu
Li4KLSAgICBhdXRvIHRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUoJmRvY3VtZW50KCksIHRoaXMs
IGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBsYW5ndWFnZSk7CisgICAgYXV0byB0cmFjayA9
IFRleHRUcmFjazo6Y3JlYXRlKCZkb2N1bWVudCgpLCBraW5kLCBlbXB0eVN0cmluZygpLCBsYWJl
bCwgbGFuZ3VhZ2UpOwogICAgIGF1dG8mIHRyYWNrUmVmZXJlbmNlID0gdHJhY2suZ2V0KCk7CiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdHJhY2tSZWZlcmVuY2Uuc2V0TG9nZ2VyKGxv
Z2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwpAQCAtNDI1NCwyNCArNDMxOCwzMSBAQCBFeGNlcHRp
b25PcjxUZXh0VHJhY2smPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdAogCiBBdWRpb1RyYWNrTGlzdCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5z
dXJlQXVkaW9UcmFja3MoKQogewotICAgIGlmICghbV9hdWRpb1RyYWNrcykKLSAgICAgICAgbV9h
dWRpb1RyYWNrcyA9IEF1ZGlvVHJhY2tMaXN0OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fYXVk
aW9UcmFja3MpIHsKKyAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlvVHJhY2tMaXN0OjpjcmVh
dGUoQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBt
X2F1ZGlvVHJhY2tzLT5zZXRPcGFxdWVSb290KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAgfQog
CiAgICAgcmV0dXJuICptX2F1ZGlvVHJhY2tzOwogfQogCiBUZXh0VHJhY2tMaXN0JiBIVE1MTWVk
aWFFbGVtZW50OjplbnN1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykK
LSAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRy
KHRoaXMpLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAg
aWYgKCFtX3RleHRUcmFja3MpIHsKKyAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlz
dDo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAg
ICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290KG1ha2VXZWFrUHRyKCp0aGlzKSk7Cisg
ICAgICAgIG1fdGV4dFRyYWNrcy0+c2V0RHVyYXRpb24oZHVyYXRpb25NZWRpYVRpbWUoKSk7Cisg
ICAgfQogCiAgICAgcmV0dXJuICptX3RleHRUcmFja3M7CiB9CiAKIFZpZGVvVHJhY2tMaXN0JiBI
VE1MTWVkaWFFbGVtZW50OjplbnN1cmVWaWRlb1RyYWNrcygpCiB7Ci0gICAgaWYgKCFtX3ZpZGVv
VHJhY2tzKQotICAgICAgICBtX3ZpZGVvVHJhY2tzID0gVmlkZW9UcmFja0xpc3Q6OmNyZWF0ZSht
YWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOworICAgIGlmICghbV92aWRlb1RyYWNrcykgeworICAgICAgICBtX3ZpZGVvVHJhY2tzID0g
VmlkZW9UcmFja0xpc3Q6OmNyZWF0ZShBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CisgICAgICAgIG1fdmlkZW9UcmFja3MtPnNldE9wYXF1ZVJvb3QobWFrZVdlYWtQ
dHIoKnRoaXMpKTsKKyAgICB9CiAKICAgICByZXR1cm4gKm1fdmlkZW9UcmFja3M7CiB9CkBAIC01
MDQ3LDYgKzUxMTgsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRp
b25DaGFuZ2VkKCkKICAgICBpZiAobm93ID4gZHVyKQogICAgICAgICBzZWVrSW50ZXJuYWwoZHVy
KTsKIAorICAgIGlmIChtX3RleHRUcmFja3MpCisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2V0RHVy
YXRpb24oZHVyKTsKKwogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNmUxYzlmOWQ1NmIx
MWQxNjE2YmQ2NzExZjk3N2ViNWRmZTMxMmJmOC4uMDljNzMzY2UyNTgzM2I0NGMwNWJhOGUzYTI1
NDNjNzRjNjM4YzhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTM4MywxNyArMzgzLDI4IEBAIHB1YmxpYzoKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKICAg
ICB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAg
dm9pZCBhdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQg
YXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBhdWRp
b1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxS
ZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2smKSBmaW5hbDsKIAogICAgIC8vIFRleHRUcmFja0Ns
aWVudAotICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlz
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRD
dWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXh0VHJh
Y2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRU
cmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYpIGZpbmFsOworICAgIHZvaWQgdGV4dFRyYWNrTGFi
ZWxDaGFuZ2VkKFRleHRUcmFjayYpIGZpbmFsOworICAgIHZvaWQgdGV4dFRyYWNrTGFuZ3VhZ2VD
aGFuZ2VkKFRleHRUcmFjayYpIGZpbmFsOworICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0
VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJh
Y2tSZW1vdmVDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSBmaW5hbDsK
KyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSBmaW5h
bDsKKyAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUm
KSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrJikgZmluYWw7
CiAKICAgICAvLyBWaWRlb1RyYWNrQ2xpZW50CisgICAgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5n
ZWQoVmlkZW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChW
aWRlb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZp
ZGVvVHJhY2smKSBmaW5hbDsKICAgICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlk
ZW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgd2lsbFJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFj
ayYpIGZpbmFsOwogCiAgICAgYm9vbCByZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0VHJhY2tSZXByZXNlbnRhdGlvbihUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5k
ZXggYjg2NWM3MmEyZDNkYzQ5YmZlN2E2ZTQxNDE3NTVkODliZmNlOWE3ZC4uMWJmMTlhZWNkNzFj
NWM1ZWFjNjhmZmFjNmQzMmI5ODdhMTE1MGUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
cmFja0VsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIEhUTUxUcmFja0VsZW1lbnQ6On5IVE1M
VHJhY2tFbGVtZW50KCkKIHsKICAgICBpZiAobV90cmFjaykgewogICAgICAgICBtX3RyYWNrLT5j
bGVhckVsZW1lbnQoKTsKLSAgICAgICAgbV90cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICAgICAg
bV90cmFjay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIH0KIH0KIApAQCAtMTUyLDYgKzE1Miw3
IEBAIExvYWRhYmxlVGV4dFRyYWNrJiBIVE1MVHJhY2tFbGVtZW50Ojp0cmFjaygpCiAgICAgICAg
IGlmICghVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoa2luZCkpCiAgICAgICAgICAgICBr
aW5kID0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCk7CiAgICAgICAgIG1fdHJhY2sgPSBM
b2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKCp0aGlzLCBraW5kLCBsYWJlbCgpLCBzcmNsYW5nKCkp
OworICAgICAgICBtX3RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIH0KICAgICBBU1NFUlQo
bV90cmFjay0+dHJhY2tFbGVtZW50KCkgPT0gdGhpcyk7CiAKQEAgLTI5OSw0NCArMzAwLDExIEBA
IGNvbnN0IEF0b21TdHJpbmcmIEhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudENyb3NzT3Jp
Z2luQXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAotdm9pZCBI
VE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQot
ewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQotICAgICAgICBwYXJlbnQt
PnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKLX0KLQotdm9pZCBIVE1MVHJhY2tFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQordm9pZCBIVE1MVHJhY2tF
bGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKQogewogICAgIC8vIFNpbmNl
IHdlJ3ZlIG1vdmVkIHRvIGEgbmV3IHBhcmVudCwgd2UgbWF5IG5vdyBiZSBhYmxlIHRvIGxvYWQu
CiAgICAgaWYgKHJlYWR5U3RhdGUoKSA9PSBIVE1MVHJhY2tFbGVtZW50OjpOT05FKQogICAgICAg
ICBzY2hlZHVsZUxvYWQoKTsKLQotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVudCgp
KQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja01vZGVDaGFuZ2VkKHRyYWNrKTsKLX0KLQotdm9p
ZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYgdHJhY2ssIGNv
bnN0IFRleHRUcmFja0N1ZUxpc3QmIGN1ZXMpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3Vl
cyk7Ci19Ci0gICAgCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMo
VGV4dFRyYWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgY3VlcykKLXsKLSAgICBp
ZiAoYXV0byBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcGFyZW50LT50ZXh0VHJh
Y2tSZW1vdmVDdWVzKHRyYWNrLCBjdWVzKTsKLX0KLSAgICAKLXZvaWQgSFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQot
ewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQotICAgICAgICBwYXJlbnQt
PnRleHRUcmFja0FkZEN1ZSh0cmFjaywgY3VlKTsKLX0KLSAgICAKLXZvaWQgSFRNTFRyYWNrRWxl
bWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYg
Y3VlKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQotICAgICAgICBw
YXJlbnQtPnRleHRUcmFja1JlbW92ZUN1ZSh0cmFjaywgY3VlKTsKIH0KIAogUmVmUHRyPEhUTUxN
ZWRpYUVsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCmluZGV4IGY3ODk4OThkMWY3ZGQ3MGUzNjU3
MTk4YTI5MWM4ZGI0MjcyYThhY2MuLmI4NjJkNDlhNGE5MmMzMzY3MzU1ODkxY2I2NDY4NWU2ODAx
NWU2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCkBAIC04NCwxMSAr
ODQsNiBAQCBwcml2YXRlOgogCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdm9pZCB0ZXh0
VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKLSAgICB2b2lkIHRleHRUcmFja0tp
bmRDaGFuZ2VkKFRleHRUcmFjayYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0
VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSBmaW5h
bDsKLSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSBm
aW5hbDsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tD
dWUmKSBmaW5hbDsKIAogICAgIGJvb2wgY2FuTG9hZFVSTChjb25zdCBVUkwmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKaW5kZXggY2FiNzc4MjFhOTQ3Y2Q4ZWM3
YTIyMDk1Zjc5YTIyNjk5ZmQwYzMzMy4uM2NiNzE4ZDNkYzI3ZTU4M2I1YTVkZjEwOTNhMDM2NTI3
YzAyZWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCkBAIC0z
MSwxMCArMzEsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1ZGlvVHJh
Y2suaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogCiAjaWYgRU5BQkxFKFZJREVPKQog
Ci0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NSw5ICs3NSw4IEBAIGNvbnN0IEF0
b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKICAgICByZXR1cm4gY29t
bWVudGFyeTsKIH0KIAotQXVkaW9UcmFjazo6QXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50JiBj
bGllbnQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCi0gICAgOiBNZWRpYVRyYWNr
QmFzZShNZWRpYVRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQcml2YXRlLmlkKCksIHRyYWNr
UHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2UoKSkKLSAgICAsIG1fY2xpZW50
KCZjbGllbnQpCitBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgOiBNZWRpYVRy
YWNrQmFzZShjb250ZXh0LCBNZWRpYVRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQcml2YXRl
LmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2UoKSkKICAg
ICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCiAgICAgLCBtX2VuYWJsZWQodHJhY2tQcml2YXRl
LmVuYWJsZWQoKSkKIHsKQEAgLTEwNyw2ICsxMDYsMTUgQEAgdm9pZCBBdWRpb1RyYWNrOjpzZXRQ
cml2YXRlKEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgc2V0SWQobV9wcml2
YXRlLT5pZCgpKTsKIH0KIAordm9pZCBBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9t
U3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAgICBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGxhbmd1YWdl
KTsKKworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAg
IGNsaWVudC5hdWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKK30KKwog
Ym9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkgY29u
c3QKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gYWx0ZXJuYXRpdmVLZXl3b3JkKCkKQEAgLTEyMyw2
ICsxMzEsMjEgQEAgdm9pZCBBdWRpb1RyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9wcml2YXRlLT5zZXRFbmFibGVkKGVuYWJsZWQpOworICAg
IG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVu
dC5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCit2b2lkIEF1
ZGlvVHJhY2s6OmFkZENsaWVudChBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNT
RVJUKCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZChjbGll
bnQpOworfQorCit2b2lkIEF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50KEF1ZGlvVHJhY2tDbGllbnQm
IGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAg
IG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKIH0KIAogc2l6ZV90IEF1ZGlvVHJhY2s6OmluYmFu
ZFRyYWNrSW5kZXgoKSBjb25zdApAQCAtMTM3LDE4ICsxNjAsMjUgQEAgdm9pZCBBdWRpb1RyYWNr
OjplbmFibGVkQ2hhbmdlZChib29sIGVuYWJsZWQpCiAKICAgICBtX2VuYWJsZWQgPSBlbmFibGVk
OwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+YXVkaW9UcmFja0VuYWJs
ZWRDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQuYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKCp0aGlzKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBBdWRpb1RyYWNrOjppZENoYW5nZWQoY29uc3QgQXRvbVN0cmlu
ZyYgaWQpCiB7CiAgICAgc2V0SWQoaWQpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAo
YXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRpb1RyYWNrSWRDaGFuZ2VkKCp0aGlz
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdWRpb1RyYWNrOjpsYWJlbENoYW5nZWQoY29uc3QgQXRv
bVN0cmluZyYgbGFiZWwpCiB7CiAgICAgc2V0TGFiZWwobGFiZWwpOworICAgIG1fY2xpZW50cy5m
b3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRpb1RyYWNr
TGFiZWxDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdWRpb1RyYWNrOjpsYW5n
dWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCkBAIC0xNTgsMTEgKzE4OCw5
IEBAIHZvaWQgQXVkaW9UcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxh
bmd1YWdlKQogCiB2b2lkIEF1ZGlvVHJhY2s6OndpbGxSZW1vdmUoKQogewotICAgIGF1dG8gZWxl
bWVudCA9IG1ha2VSZWZQdHIobWVkaWFFbGVtZW50KCkuZ2V0KCkpOwotICAgIGlmICghZWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZWxlbWVudC0+cmVtb3ZlQXVkaW9UcmFjaygqdGhp
cyk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAg
ICAgY2xpZW50LndpbGxSZW1vdmVBdWRpb1RyYWNrKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBBdWRpb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQpAQCAtMTk1LDExICsyMjMsNiBA
QCB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiAgICAgfQogfQogCi12
b2lkIEF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+
IGVsZW1lbnQpCi17Ci0gICAgVHJhY2tCYXNlOjpzZXRNZWRpYUVsZW1lbnQoZWxlbWVudCk7Ci19
Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgQXVkaW9UcmFjazo6c2V0TG9nZ2Vy
KGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAppbmRleCA5OWE0NTMyOGMyOWVhMGIyYzVl
Y2Y0MjdmMTdhNDVjMDQ0MTdmZGY3Li4zNzUxMGE4Y2QyZjhmNDAxNTM1ODkyNWRmOTlkYWVjOThm
MTk2MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApAQCAtMzAsMjIg
KzMwLDI5IEBACiAKICNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRy
YWNrQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEF1ZGlvVHJhY2s7CitjbGFzcyBBdWRpb1RyYWNrTGlzdDsKIAotY2xh
c3MgQXVkaW9UcmFja0NsaWVudCB7CitjbGFzcyBBdWRpb1RyYWNrQ2xpZW50IDogcHVibGljIENh
bk1ha2VXZWFrUHRyPEF1ZGlvVHJhY2tDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5B
dWRpb1RyYWNrQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNr
RW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9U
cmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVk
aW9UcmFja0lkQ2hhbmdlZChBdWRpb1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlv
VHJhY2tLaW5kQ2hhbmdlZChBdWRpb1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlv
VHJhY2tMYWJlbENoYW5nZWQoQXVkaW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRp
b1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYpIHsgfQogfTsKIAogY2xhc3MgQXVkaW9U
cmFjayBmaW5hbCA6IHB1YmxpYyBNZWRpYVRyYWNrQmFzZSwgcHJpdmF0ZSBBdWRpb1RyYWNrUHJp
dmF0ZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb1RyYWNrPiBjcmVhdGUo
QXVkaW9UcmFja0NsaWVudCYgY2xpZW50LCBBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRl
KQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRl
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2soY29udGV4dCwgdHJh
Y2tQcml2YXRlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2soKTsKIApAQCAtNTks
MjEgKzY2LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHNldEVuYWJsZWQoY29uc3QgYm9vbCk7CiAKLSAg
ICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICBB
dWRpb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAg
IHZvaWQgYWRkQ2xpZW50KEF1ZGlvVHJhY2tDbGllbnQmKTsKKyAgICB2b2lkIGNsZWFyQ2xpZW50
KEF1ZGlvVHJhY2tDbGllbnQmKTsKIAogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCkgY29u
c3Q7CiAKICAgICBjb25zdCBBdWRpb1RyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKCkgY29uc3Qg
eyByZXR1cm4gbV9wcml2YXRlOyB9CiAgICAgdm9pZCBzZXRQcml2YXRlKEF1ZGlvVHJhY2tQcml2
YXRlJik7CiAKLSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChXZWFrUHRyPEhUTUxNZWRpYUVsZW1l
bnQ+KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKSBm
aW5hbDsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nZ2VyKGNv
bnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKSBmaW5hbDsKICNlbmRpZgogCiBwcml2YXRlOgotICAg
IEF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCYsIEF1ZGlvVHJhY2tQcml2YXRlJik7CisgICAg
QXVkaW9UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXVkaW9UcmFja1ByaXZhdGUmKTsK
IAogICAgIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwog
CkBAIC05Miw3ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJBdWRpb1RyYWNrIjsgfQogI2VuZGlmCiAKLSAgICBB
dWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBXZWFrUHRyPEF1ZGlv
VHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tMaXN0OworICAgIFdlYWtIYXNoU2V0PEF1ZGlvVHJhY2tD
bGllbnQ+IG1fY2xpZW50czsKICAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsK
ICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5pZGwKaW5kZXggMzkzNDY2NmY1ZmMwNjIxN2QzZTNlZTljNWUwMWQ0Y2E3
MzFjMGVmYS4uNWM4ZWJhNDRlMTYxYTJhYzYxNGRjMGIwM2I0MWJjNjk1NGQ3N2Y5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBb
CiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQs
Ci0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCisgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZSwKICAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCiAgICAgRXhwb3NlZD1XaW5k
b3cKIF0gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0F1ZGlvVHJhY2tMaXN0LmNwcAppbmRleCA2NDA1ODE3MWQ0NWE4ODFlZjFlMGRjNmQ4ZWUzZDM0
MzNkNTYxZGNhLi4zM2EwN2Q0ZWM3MWQxODhiYjk1ODdkMGQ5YmE4ODI3YTM5NjE0ODRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcApAQCAtMzAsMTIg
KzMwLDExIEBACiAjaW5jbHVkZSAiQXVkaW9UcmFja0xpc3QuaCIKIAogI2luY2x1ZGUgIkF1ZGlv
VHJhY2suaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlh
RWxlbWVudD4gZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6
IFRyYWNrTGlzdEJhc2UoZWxlbWVudCwgY29udGV4dCkKK0F1ZGlvVHJhY2tMaXN0OjpBdWRpb1Ry
YWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0
QmFzZShjb250ZXh0LCBUcmFja0xpc3RCYXNlOjpWaWRlb1RyYWNrTGlzdCkKIHsKIH0KIApAQCAt
NTMsMTMgKzUyLDIxIEBAIHZvaWQgQXVkaW9UcmFja0xpc3Q6OmFwcGVuZChSZWY8QXVkaW9UcmFj
az4mJiB0cmFjaykKICAgICB9CiAgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluc2VydGlvbklu
ZGV4LCB0cmFjay5wdHIoKSk7CiAKLQotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgp
IHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtZWRpYUVsZW1lbnQoKSk7Ci0gICAgdHJhY2st
PnNldE1lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQoKSk7CisgICAgaWYgKCF0cmFjay0+dHJhY2tM
aXN0KCkpCisgICAgICAgIHRyYWNrLT5zZXRUcmFja0xpc3QoKnRoaXMpOwogCiAgICAgc2NoZWR1
bGVBZGRUcmFja0V2ZW50KFdURk1vdmUodHJhY2spKTsKIH0KIAordm9pZCBBdWRpb1RyYWNrTGlz
dDo6cmVtb3ZlKFRyYWNrQmFzZSYgdHJhY2ssIGJvb2wgc2NoZWR1bGVFdmVudCkKK3sKKyAgICBh
dXRvJiBhdWRpb1RyYWNrID0gZG93bmNhc3Q8QXVkaW9UcmFjaz4odHJhY2spOworICAgIGlmIChh
dWRpb1RyYWNrLnRyYWNrTGlzdCgpID09IHRoaXMpCisgICAgICAgIGF1ZGlvVHJhY2suY2xlYXJU
cmFja0xpc3QoKTsKKworICAgIFRyYWNrTGlzdEJhc2U6OnJlbW92ZSh0cmFjaywgc2NoZWR1bGVF
dmVudCk7Cit9CisKIEF1ZGlvVHJhY2sqIEF1ZGlvVHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA8IG1faW5iYW5kVHJhY2tzLnNpemUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaAppbmRleCA4YWUwMzQyMDE0
MmZlMWNmNjM4MGVmZDNkYmU4MTIyYzRiNDQ4ZDdlLi45NWZkOTBiNGNhYmJiZDgzODBjNWFjMGI1
Mzk5OGYxNGFjYWY0NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5oCkBAIC0zNSw5ICszNSw5IEBAIGNsYXNzIEF1ZGlvVHJhY2s7CiAKIGNsYXNzIEF1ZGlv
VHJhY2tMaXN0IGZpbmFsIDogcHVibGljIFRyYWNrTGlzdEJhc2UgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8QXVkaW9UcmFja0xpc3Q+IGNyZWF0ZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+
IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8
QXVkaW9UcmFja0xpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrTGlzdChv
d25lciwgY29udGV4dCkpOworICAgICAgICBhdXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IEF1ZGlv
VHJhY2tMaXN0KGNvbnRleHQpKTsKICAgICAgICAgbGlzdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAg
ICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KQEAgLTQ4LDEyICs0OCwxMyBAQCBwdWJsaWM6CiAg
ICAgQXVkaW9UcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgQXVkaW9UcmFj
ayogbGFzdEl0ZW0oKSBjb25zdCB7IHJldHVybiBpdGVtKGxlbmd0aCgpIC0gMSk7IH0KICAgICB2
b2lkIGFwcGVuZChSZWY8QXVkaW9UcmFjaz4mJik7CisgICAgdm9pZCByZW1vdmUoVHJhY2tCYXNl
JiwgYm9vbCBzY2hlZHVsZUV2ZW50ID0gdHJ1ZSkgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdl
dAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9UcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVk
aWFFbGVtZW50PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIEF1ZGlvVHJhY2tMaXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIH07CkBAIC02MSw0ICs2Miw4IEBAIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKEF1ZGlvVHJhY2tMaXN0KSA9PSBzaXplb2YoVHJhY2tMaXN0QmFzZSksICIiKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpUcmFja0xpc3RCYXNlJiB0cmFja0xpc3QpIHsgcmV0dXJuIHRyYWNrTGlzdC50eXBl
KCkgPT0gV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6QXVkaW9UcmFja0xpc3Q7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwKaW5kZXggYzQ1NTRjZjJkMjA3
ZjYzZmE3ZTM5OWRhZTQ3NDllNmM5MTI3NDdkYS4uNTZiNWQ4MDg4MGM0MDNhNGQ1MDA4ZDI4MjUz
OGQwMTdlMjFkMDJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
TGlzdC5pZGwKQEAgLTI2LDcgKzI2LDYgQEAKIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAg
Q29uZGl0aW9uYWw9VklERU8sCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJv
b3QsCiAgICAgR2VuZXJhdGVBZGRPcGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGlu
dGVyZmFjZSBBdWRpb1RyYWNrTGlzdCA6IEV2ZW50VGFyZ2V0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCmluZGV4IDgzODAyMzJiNzky
OGEyN2I5MzIzNjgwNmMwMjg1MjlmMDdiYmVhODAuLmZhNzhmM2JiZTI5MThkY2FhODM4NDk3N2M5
Mzc5YWE0ODVkNDRkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmNwcApAQCAtMzAsMjIgKzMwLDIyIEBACiAjaWYgRU5BQkxFKFZJREVP
KQogCiAjaW5jbHVkZSAiRGF0YUN1ZS5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNr
TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEluYmFuZERhdGFUZXh0VHJh
Y2spOwogCi1pbmxpbmUgSW5iYW5kRGF0YVRleHRUcmFjazo6SW5iYW5kRGF0YVRleHRUcmFjayhE
b2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCi0gICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQs
IGNsaWVudCwgdHJhY2tQcml2YXRlKQoraW5saW5lIEluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFu
ZERhdGFUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
JiB0cmFja1ByaXZhdGUpCisgICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJp
dmF0ZSkKIHsKIH0KIAotUmVmPEluYmFuZERhdGFUZXh0VHJhY2s+IEluYmFuZERhdGFUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCitSZWY8SW5iYW5kRGF0YVRleHRU
cmFjaz4gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIGF1dG8gdGV4dFRyYWNr
ID0gYWRvcHRSZWYoKm5ldyBJbmJhbmREYXRhVGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRy
YWNrUHJpdmF0ZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmRE
YXRhVGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpKTsKICAgICB0ZXh0VHJhY2stPnN1
c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CkBAIC03MCw4ICs3MCw5
IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIG1lZGlhRWxlbWVudCgpKSB7Ci0gICAg
ICAgIGN1ZS0+c2V0RW5kVGltZShtZWRpYUVsZW1lbnQoKS0+ZHVyYXRpb25NZWRpYVRpbWUoKSk7
CisgICAgYXV0byogdGV4dFRyYWNrTGlzdCA9IGRvd25jYXN0PFRleHRUcmFja0xpc3Q+KHRyYWNr
TGlzdCgpKTsKKyAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHRleHRUcmFja0xp
c3QgJiYgdGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY3Vl
LT5zZXRFbmRUaW1lKHRleHRUcmFja0xpc3QtPmR1cmF0aW9uKCkpOwogICAgICAgICBtX2luY29t
cGxldGVDdWVNYXAuYXBwZW5kKCZjdWUuZ2V0KCkpOwogICAgIH0KIApAQCAtMTAxLDggKzEwMiw5
IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRp
bWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmCiAgICAgY3VlLT53aWxsQ2hhbmdlKCk7CiAKICAg
ICBNZWRpYVRpbWUgZW5kID0gaW5FbmQ7Ci0gICAgaWYgKGVuZC5pc1Bvc2l0aXZlSW5maW5pdGUo
KSAmJiBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgZW5kID0gbWVkaWFFbGVtZW50KCktPmR1cmF0
aW9uTWVkaWFUaW1lKCk7CisgICAgYXV0byogdGV4dFRyYWNrTGlzdCA9IGRvd25jYXN0PFRleHRU
cmFja0xpc3Q+KHRyYWNrTGlzdCgpKTsKKyAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgp
ICYmIHRleHRUcmFja0xpc3QgJiYgdGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKS5pc1ZhbGlkKCkp
CisgICAgICAgIGVuZCA9IHRleHRUcmFja0xpc3QtPmR1cmF0aW9uKCk7CiAgICAgZWxzZQogICAg
ICAgICBtX2luY29tcGxldGVDdWVNYXAucmVtb3ZlRmlyc3QoY3VlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaAppbmRleCBmNmI1MGY0N2E5
YTQ1MjQ2NjNlNTZiZTFiNjFiNjAzNzgyMzZmMzE0Li4yNTAxODRhYTc1MGFjNjgzNDFkYzYxYTI4
OTdkZmMxMmIwODVhMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZERhdGFUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZERhdGFUZXh0VHJhY2suaApAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIERhdGFDdWU7CiBjbGFz
cyBJbmJhbmREYXRhVGV4dFRyYWNrIGZpbmFsIDogcHVibGljIEluYmFuZFRleHRUcmFjayB7CiAg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmREYXRhVGV4dFRyYWNrKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEluYmFuZERhdGFUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIFRl
eHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBzdGF0aWMgUmVm
PEluYmFuZERhdGFUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmREYXRhVGV4dFRyYWNrKCk7CiAKIHByaXZhdGU6
Ci0gICAgSW5iYW5kRGF0YVRleHRUcmFjayhEb2N1bWVudCYsIFRleHRUcmFja0NsaWVudCYsIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBJbmJhbmREYXRhVGV4dFRyYWNrKERvY3VtZW50
JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5z
aWduZWQpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCA1NTZlNDQ5ZTg3NjJhZjE1MDVjOTEwOTAzNjdl
ZTE1OGRkM2EwMjlmLi4yMzkxZDVlZGU1NzI2MDFhYjc5NGQzMjU1YTZmZTllMTVkNGI4M2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRU
cmFjay5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVlRUUmVnaW9uTGlzdC5o
IgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpA
QCAtNjMsMTQgKzY0LDE0IEBAIHZvaWQgR2VuZXJpY1RleHRUcmFja0N1ZU1hcDo6cmVtb3ZlKFRl
eHRUcmFja0N1ZSYgcHVibGljQ3VlKQogICAgICAgICBtX2RhdGFUb0N1ZU1hcC5yZW1vdmUoY3Vl
SWRlbnRpZmllcik7CiB9CiAKLWlubGluZSBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpJbmJhbmRH
ZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGll
bnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRl
eHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6SW5iYW5kR2VuZXJpY1RleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQs
IEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICA6IEluYmFuZFRleHRU
cmFjayhkb2N1bWVudCwgdHJhY2tQcml2YXRlKQogewogfQogCi1SZWY8SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjaz4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNr
UHJpdmF0ZSkKK1JlZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRy
YWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0
cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFu
ZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAg
YXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soZG9j
dW1lbnQsIHRyYWNrUHJpdmF0ZSkpOwogICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7
CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KQEAgLTgzLDggKzg0LDggQEAgdm9pZCBJbmJhbmRH
ZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJhY2tDdWVHZW5lcmlj
JiBjdWUsIEluYmEKIAogICAgIGN1ZS5zZXRTdGFydFRpbWUoaW5iYW5kQ3VlLnN0YXJ0VGltZSgp
KTsKICAgICBNZWRpYVRpbWUgZW5kVGltZSA9IGluYmFuZEN1ZS5lbmRUaW1lKCk7Ci0gICAgaWYg
KGVuZFRpbWUuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgbWVkaWFFbGVtZW50KCkpCi0gICAgICAg
IGVuZFRpbWUgPSBtZWRpYUVsZW1lbnQoKS0+ZHVyYXRpb25NZWRpYVRpbWUoKTsKKyAgICBpZiAo
ZW5kVGltZS5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiB0ZXh0VHJhY2tMaXN0KCkgJiYgdGV4dFRy
YWNrTGlzdCgpLT5kdXJhdGlvbigpLmlzVmFsaWQoKSkKKyAgICAgICAgZW5kVGltZSA9IHRleHRU
cmFja0xpc3QoKS0+ZHVyYXRpb24oKTsKICAgICBjdWUuc2V0RW5kVGltZShlbmRUaW1lKTsKICAg
ICBjdWUuc2V0VGV4dChpbmJhbmRDdWUuY29udGVudCgpKTsKICAgICBjdWUuc2V0SWQoaW5iYW5k
Q3VlLmlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRH
ZW5lcmljVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVy
aWNUZXh0VHJhY2suaAppbmRleCBmZTk1MzQ4ZDNmYmIxYjgzNjQwODU3NGIyNzAxMGE3NmQzYTMx
YjBkLi40NTk3YjJhMWM2ZjczYjU2OTFiNDc1ODcxMzU0MjMyNzI5MmU1OGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaApAQCAt
NTMsMTEgKzUzLDExIEBAIHByaXZhdGU6CiBjbGFzcyBJbmJhbmRHZW5lcmljVGV4dFRyYWNrIGZp
bmFsIDogcHVibGljIEluYmFuZFRleHRUcmFjaywgcHJpdmF0ZSBXZWJWVFRQYXJzZXJDbGllbnQg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5iYW5kR2VuZXJpY1RleHRUcmFjayk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNrPiBjcmVhdGUoRG9j
dW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAg
c3RhdGljIFJlZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJik7CiAgICAgdmlydHVhbCB+SW5iYW5kR2VuZXJpY1RleHRUcmFj
aygpOwogCiBwcml2YXRlOgotICAgIEluYmFuZEdlbmVyaWNUZXh0VHJhY2soRG9jdW1lbnQmLCBU
ZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjayhEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAogICAg
IHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAppbmRleCA5Y2ZhMTRkZjJhZTk1ODY2
YzUzYjhiMTAzYjZkODU5ZDRiZmQ1ZDljLi5jNmZlYTM1ZWQzOGIwNDg2MDNkMmNlODFkZmFiYjAy
NjE4ODQyMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRl
eHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kRGF0YVRleHRUcmFjay5oIgog
I2luY2x1ZGUgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2suaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmgiCkBAIC0zOSwyNCArMzgsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kVGV4dFRyYWNrKTsKIAotUmVmPElu
YmFuZFRleHRUcmFjaz4gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQorUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7
CiAgICAgc3dpdGNoICh0cmFja1ByaXZhdGUuY3VlRm9ybWF0KCkpIHsKICAgICBjYXNlIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6RGF0YToKLSAgICAgICAgcmV0dXJuIEluYmFu
ZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOwor
ICAgICAgICByZXR1cm4gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCB0cmFj
a1ByaXZhdGUpOwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0OjpH
ZW5lcmljOgotICAgICAgICByZXR1cm4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6Y3JlYXRlKGRv
Y3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgICAgIHJldHVybiBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSk7CiAgICAgY2FzZSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6OldlYlZUVDoKLSAgICAgICAgcmV0dXJu
IEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJp
dmF0ZSk7CisgICAgICAgIHJldHVybiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0ZShkb2N1
bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgYXV0byB0ZXh0VHJhY2sgPSBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQs
IGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IEluYmFuZERhdGFU
ZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICB0ZXh0VHJhY2st
PnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKLUluYmFuZFRl
eHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xp
ZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6
IFRleHRUcmFjaygmZG9jdW1lbnQsICZjbGllbnQsIGVtcHR5QXRvbSgpLCB0cmFja1ByaXZhdGUu
aWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpLCBJbkJh
bmQpCitJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQs
IEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRleHRUcmFjaygm
ZG9jdW1lbnQsIGVtcHR5QXRvbSgpLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxh
YmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpLCBJbkJhbmQpCiAgICAgLCBtX3ByaXZhdGUo
dHJhY2tQcml2YXRlKQogewogICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwpAQCAtMTU5
LDEwICsxNTgsOSBAQCB2b2lkIEluYmFuZFRleHRUcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiB2b2lkIEluYmFuZFRleHRUcmFjazo6d2lsbFJlbW92
ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtZWRpYUVsZW1lbnQoKS5nZXQo
KSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0gICAgZWxlbWVudC0+cmVt
b3ZlVGV4dFRyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbJl0gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92ZVRleHRUcmFjaygqdGhpcyk7CisgICAg
fSk7CiB9CiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQpA
QCAtMTk3LDE0ICsxOTUsNiBAQCBNZWRpYVRpbWUgSW5iYW5kVGV4dFRyYWNrOjpzdGFydFRpbWVW
YXJpYW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3RhcnRUaW1lVmFyaWFuY2Uo
KTsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldE1lZGlhRWxlbWVudChXZWFrUHRyPEhU
TUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQpCi17Ci0gICAgVHJhY2tCYXNlOjpzZXRNZWRpYUVsZW1l
bnQoZWxlbWVudCk7Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgbV9wcml2YXRlLT5z
ZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7Ci0jZW5kaWYKLX0KLQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldExvZ2dlcihjb25z
dCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCmluZGV4IGJiMTJjMTU5ZGU3NGY5
Mjk0NTM2OTU0MWQ3ODcyZTZjNWMxYWNiNDcuLmYyOGExZDQ4NWE1OTliNjg5YzBmNjEwNGQ2ZjNm
ODQxMGM1ZTA4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRU
ZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNrLCBwcml2YXRlIEluYmFuZFRleHRUcmFja1ByaXZh
dGVDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5iYW5kVGV4dFRyYWNrKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50
JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRp
YyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlJik7CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrKCk7CiAKICAgICBib29sIGlz
Q2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKQEAgLTQ5LDEzICs0OSwxMiBAQCBwdWJs
aWM6CiAgICAgQXRvbVN0cmluZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFByaXZhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZSYpOwotICAgIHZvaWQgc2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4p
IG92ZXJyaWRlOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nZ2Vy
KGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKSBmaW5hbDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6
Ci0gICAgSW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIEluYmFuZFRleHRUcmFjayhEb2N1bWVudCYsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmKTsKIAogICAgIHZvaWQgc2V0TW9kZUludGVybmFsKE1vZGUpOwog
ICAgIHZvaWQgdXBkYXRlS2luZEZyb21Qcml2YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggMmFhOWYzYjAzYWIz
YTE0NGU5MjcxM2E2NWZhZjNmZmNkZjVhYTdhYy4uMjIyM2E1NzJhYTBmNmNhOTRjMmQyNzRmMWVj
Mzc1NGJjNTI1Zjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtMzksMTQgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEluYmFuZFdlYlZUVFRleHRUcmFj
ayk7CiAKLWlubGluZSBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OkluYmFuZFdlYlZUVFRleHRUcmFj
ayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCi0gICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1l
bnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKQoraW5saW5lIEluYmFuZFdlYlZUVFRleHRUcmFjazo6
SW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogSW5iYW5kVGV4dFRyYWNrKGRvY3VtZW50LCB0
cmFja1ByaXZhdGUpCiB7CiB9CiAKLVJlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFdlYlZUVFRl
eHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGll
bnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmRUZXh0
VHJhY2s+IEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIGF1dG8gdGV4dFRy
YWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmRXZWJWVFRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVu
dCwgdHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IElu
YmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQcml2YXRlKSk7CiAgICAgdGV4dFRy
YWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdGV4dFRyYWNrOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKaW5kZXgg
MzE1MjM1NzI5YjVmYmQ5OWY2MzRmYTdkNmM3NzZjMjdiYzZjMWM1Mi4uOTFmYTAzOThhNGY5YzBl
N2E1NDk3NjYyNDhmYTMwNTZmODE3NTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCkBAIC0zNiwxMSArMzYsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSW5iYW5kV2ViVlRUVGV4dFRyYWNrIGZpbmFsIDogcHVibGlj
IEluYmFuZFRleHRUcmFjaywgcHJpdmF0ZSBXZWJWVFRQYXJzZXJDbGllbnQgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoSW5iYW5kV2ViVlRUVGV4dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEluYmFuZFRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xp
ZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4
dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAgICAg
dmlydHVhbCB+SW5iYW5kV2ViVlRUVGV4dFRyYWNrKCk7CiAKIHByaXZhdGU6Ci0gICAgSW5iYW5k
V2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSYpOworICAgIEluYmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVudCYsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmKTsKIAogICAgIFdlYlZUVFBhcnNlciYgcGFyc2VyKCk7CiAgICAg
dm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRU
cmFjay5jcHAKaW5kZXggMzFjYmYwYTY1OGQ4NTNkYzk5MTA1OGUxZjJhOWZjYjk5ZmU3NzlkNC4u
MzgzNTc2NDExNmQwOTI1OTg4NzhiNjVhOGZkOGE4MjU5MDNlZDVlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExvYWRh
YmxlVGV4dFRyYWNrKTsKIAogTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhU
TUxUcmFja0VsZW1lbnQmIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCi0gICAgOiBUZXh0VHJhY2soJnRyYWNrLmRv
Y3VtZW50KCksICZ0cmFjaywga2luZCwgZW1wdHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlLCBU
cmFja0VsZW1lbnQpCisgICAgOiBUZXh0VHJhY2soJnRyYWNrLmRvY3VtZW50KCksIGtpbmQsIGVt
cHR5U3RyaW5nKCksIGxhYmVsLCBsYW5ndWFnZSwgVHJhY2tFbGVtZW50KQogICAgICwgbV90cmFj
a0VsZW1lbnQoJnRyYWNrKQogewogfQpAQCAtOTYsMTEgKzk2LDYgQEAgdm9pZCBMb2FkYWJsZVRl
eHRUcmFjazo6c2NoZWR1bGVMb2FkKGNvbnN0IFVSTCYgdXJsKQogICAgIH0pOwogfQogCi1FbGVt
ZW50KiBMb2FkYWJsZVRleHRUcmFjazo6ZWxlbWVudCgpCi17Ci0gICAgcmV0dXJuIG1fdHJhY2tF
bGVtZW50OwotfQotCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKFRl
eHRUcmFja0xvYWRlciYgbG9hZGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBtX2xv
YWRlci5nZXQoKSA9PSAmbG9hZGVyKTsKQEAgLTExNCw4ICsxMDksNyBAQCB2b2lkIExvYWRhYmxl
VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFja0xvYWRlciYgbG9hZGVyKQogICAg
ICAgICBtX2N1ZXMtPmFkZChXVEZNb3ZlKG5ld0N1ZSkpOwogICAgIH0KIAotICAgIGlmIChjbGll
bnQoKSkKLSAgICAgICAgY2xpZW50KCktPnRleHRUcmFja0FkZEN1ZXMoKnRoaXMsICptX2N1ZXMp
OworICAgIFRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJsZSgqbV9jdWVzKTsKIH0KIAogdm9pZCBM
b2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXImIGxv
YWRlciwgYm9vbCBsb2FkaW5nRmFpbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5oCmluZGV4IDA4ZGZhYWQyOGRjZGQxZDhhYjVjYjBmYjZhZTJmODYx
YmU3OTA4YjMuLmI3ZmI0M2Y5N2UwOGU3N2I2OTZkYzNhZGFjODRkZDZmNDlmMTc0YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgKQEAgLTU2LDcg
KzU2LDYgQEAgcHJpdmF0ZToKIAogICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGlzRGVmYXVsdCgpIGNvbnN0IGZpbmFsOwotICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBm
aW5hbDsKIAogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IGU1ZTUwYjQxOTU2ZWIxNDE2MWIzYWY1MjgzODFhNTc1
ZGQwZjE4YzUuLjcwMzJlNjI4Njk5YTAyN2EyNDY1MWIyYzRjYmU4ZDNiN2M2NzcwYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNp
bmNsdWRlICJEYXRhQ3VlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNr
TGlzdC5oIgpAQCAtODgsMjAgKzg3LDE5IEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBmb3Jj
ZWRLZXl3b3JkKCkKIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgp
CiB7Ci0gICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0
ciwgbnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVt
cHR5QXRvbSgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRy
YWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlB
dG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIG9mZjsKIH0KIAogVGV4
dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgpCiB7Ci0gICAgc3Rh
dGljIFRleHRUcmFjayYgYXV0b21hdGljID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgbnVs
bHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVt
cHR5QXRvbSgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGljID0g
VGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGF1
dG9tYXRpYzsKIH0KIAotVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IEF0b21TdHJpbmcmIGtp
bmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUgdHlwZSkKLSAgICA6IFRyYWNrQmFz
ZShUcmFja0Jhc2U6OlRleHRUcmFjaywgaWQsIGxhYmVsLCBsYW5ndWFnZSkKK1RleHRUcmFjazo6
VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEF0b21TdHJp
bmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUgdHlwZSkKKyAgICA6IFRy
YWNrQmFzZShjb250ZXh0LCBUcmFja0Jhc2U6OlRleHRUcmFjaywgaWQsIGxhYmVsLCBsYW5ndWFn
ZSkKICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV9jbGllbnQoY2xpZW50
KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKIHsKICAgICBpZiAoa2luZCA9PSBjYXB0aW9uc0tl
eXdvcmQoKSkKQEAgLTExNiw5ICsxMTQsOSBAQCBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgYwogICAg
ICAgICBtX2tpbmQgPSBLaW5kOjpNZXRhZGF0YTsKIH0KIAotUmVmPFRleHRUcmFjaz4gVGV4dFRy
YWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwg
Y29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21T
dHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKK1JlZjxUZXh0VHJhY2s+
IFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYg
a2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25z
dCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVm
KCpuZXcgVGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIGtpbmQsIGlkLCBsYWJlbCwgbGFuZ3Vh
Z2UsIEFkZFRyYWNrKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IFRleHRU
cmFjayhkb2N1bWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJhY2spKTsKICAg
ICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9
CkBAIC0xMjYsOCArMTI0LDkgQEAgUmVmPFRleHRUcmFjaz4gVGV4dFRyYWNrOjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY28KIFRleHRUcmFjazo6
flRleHRUcmFjaygpCiB7CiAgICAgaWYgKG1fY3VlcykgewotICAgICAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vl
cyk7CisgICAgICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7Cisg
ICAgICAgICAgICBjbGllbnQudGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7Cisg
ICAgICAgIH0pOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY3Vlcy0+bGVuZ3Ro
KCk7ICsraSkKICAgICAgICAgICAgIG1fY3Vlcy0+aXRlbShpKS0+c2V0VHJhY2sobnVsbHB0cik7
CiAgICAgfQpAQCAtMTM3LDYgKzEzNiwyMyBAQCBUZXh0VHJhY2s6On5UZXh0VHJhY2soKQogICAg
IH0KIH0KIAorVGV4dFRyYWNrTGlzdCogVGV4dFRyYWNrOjp0ZXh0VHJhY2tMaXN0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZG93bmNhc3Q8VGV4dFRyYWNrTGlzdD4odHJhY2tMaXN0KCkpOworfQor
Cit2b2lkIFRleHRUcmFjazo6YWRkQ2xpZW50KFRleHRUcmFja0NsaWVudCYgY2xpZW50KQorewor
ICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1fY2xpZW50cy5h
ZGQoY2xpZW50KTsKK30KKwordm9pZCBUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KFRleHRUcmFja0Ns
aWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7
CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOworfQorCiBEb2N1bWVudCYgVGV4dFRyYWNr
Ojpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CkBAIC0yMDAsMTkgKzIxNiwxNSBAQCB2b2lkIFRleHRUcmFjazo6c2V0S2luZChLaW5kIG5l
d0tpbmQpCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICAvLyAzLiBJZiB0aGUgc291cmNl
QnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGlzIHRyYWNrIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEg
dGFzayB0byBmaXJlIGEgc2ltcGxlCiAgICAgLy8gZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJj
ZUJ1ZmZlci50ZXh0VHJhY2tzLgotICAgIGlmIChtX3NvdXJjZUJ1ZmZlcikKLSAgICAgICAgbV9z
b3VyY2VCdWZmZXItPnRleHRUcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Ci0KICAgICAv
LyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQg
dGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJlZmVyZW5jZWQgYnkKICAgICAvLyB0aGUgdGV4dFRy
YWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgaWYgKG1lZGlhRWxl
bWVudCgpKQotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKICNlbmRpZgogCiAgICAgaWYgKG9sZEtpbmQgIT0gbV9raW5kKSB7
CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbV9raW5kKTsKLSAgICAgICAgaWYg
KG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja0tpbmRDaGFuZ2VkKCp0
aGlzKTsKKyAgICAgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsK
KyAgICAgICAgICAgIGNsaWVudC50ZXh0VHJhY2tLaW5kQ2hhbmdlZCgqdGhpcyk7CisgICAgICAg
IH0pOwogICAgIH0KIH0KIApAQCAtMjUyLDggKzI2NCwxMSBAQCB2b2lkIFRleHRUcmFjazo6c2V0
TW9kZShNb2RlIG1vZGUpCiAKICAgICAvLyBJZiBtb2RlIGNoYW5nZXMgdG8gZGlzYWJsZWQsIHJl
bW92ZSB0aGlzIHRyYWNrJ3MgY3VlcyBmcm9tIHRoZSBjbGllbnQKICAgICAvLyBiZWNhdXNlIHRo
ZXkgd2lsbCBubyBsb25nZXIgYmUgYWNjZXNzaWJsZSBmcm9tIHRoZSBjdWVzKCkgZnVuY3Rpb24u
Ci0gICAgaWYgKG1vZGUgPT0gTW9kZTo6RGlzYWJsZWQgJiYgbV9jbGllbnQgJiYgbV9jdWVzKQot
ICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7Cisg
ICAgaWYgKG1vZGUgPT0gTW9kZTo6RGlzYWJsZWQgJiYgbV9jdWVzKSB7CisgICAgICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgICAgICBjbGllbnQu
dGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7CisgICAgICAgIH0pOworICAgIH0K
IAogICAgIGlmIChtb2RlICE9IE1vZGU6OlNob3dpbmcgJiYgbV9jdWVzKSB7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgoKTsgKytpKQpAQCAtMjYyLDggKzI3
Nyw5IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKE1vZGUgbW9kZSkKIAogICAgIG1fbW9kZSA9
IG1vZGU7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tN
b2RlQ2hhbmdlZCgqdGhpcyk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBj
bGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFja01vZGVDaGFuZ2VkKCp0aGlzKTsKKyAg
ICB9KTsKIH0KIAogVGV4dFRyYWNrQ3VlTGlzdCogVGV4dFRyYWNrOjpjdWVzKCkKQEAgLTI4NSw5
ICszMDEsMTAgQEAgdm9pZCBUZXh0VHJhY2s6OnJlbW92ZUFsbEN1ZXMoKQogCiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPnRleHRUcmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOwotICAgIAorICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0
VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAgICB9KTsKKwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICBtX2N1ZXMtPml0
ZW0oaSktPnNldFRyYWNrKG51bGxwdHIpOwogICAgIApAQCAtMzQxLDggKzM1OCw5IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFRleHRUcmFjazo6YWRkQ3VlKFJlZjxUZXh0VHJhY2tDdWU+JiYgY3VlKQog
ICAgIGN1ZS0+c2V0VHJhY2sodGhpcyk7CiAgICAgZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpLmFk
ZChjdWUuY29weVJlZigpKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PnRleHRUcmFja0FkZEN1ZSgqdGhpcywgY3VlKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhp
cywgY3VlXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tBZGRDdWUo
KnRoaXMsIGN1ZSk7CisgICAgfSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMzY2LDggKzM4
NCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFRleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1
ZSYgY3VlKQogICAgIG1fY3Vlcy0+cmVtb3ZlKGN1ZSk7CiAgICAgY3VlLnNldElzQWN0aXZlKGZh
bHNlKTsKICAgICBjdWUuc2V0VHJhY2sobnVsbHB0cik7Ci0gICAgaWYgKG1fY2xpZW50KQotICAg
ICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKCp0aGlzLCBjdWUpOworICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJh
Y2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgfSk7CiAKICAgICByZXR1cm4geyB9OwogfQpA
QCAtNDYwLDMyICs0NzksMzAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjpyZW1vdmVS
ZWdpb24oVlRUUmVnaW9uJiByZWdpb24pCiAKIHZvaWQgVGV4dFRyYWNrOjpjdWVXaWxsQ2hhbmdl
KFRleHRUcmFja0N1ZSYgY3VlKQogewotICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIFRoZSBjdWUgbWF5IG5lZWQgdG8gYmUgcmVwb3NpdGlvbmVkIGluIHRoZSBt
ZWRpYSBlbGVtZW50J3MgaW50ZXJ2YWwgdHJlZSwgbWF5IG5lZWQgdG8KLSAgICAvLyBiZSByZS1y
ZW5kZXJlZCwgZXRjLCBzbyByZW1vdmUgaXQgYmVmb3JlIHRoZSBtb2RpZmljYXRpb24uLi4KLSAg
ICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKCp0aGlzLCBjdWUpOworICAgIG1fY2xpZW50
cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIC8vIFRoZSBjdWUgbWF5IG5l
ZWQgdG8gYmUgcmVwb3NpdGlvbmVkIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgaW50ZXJ2YWwgdHJl
ZSwgbWF5IG5lZWQgdG8KKyAgICAgICAgLy8gYmUgcmUtcmVuZGVyZWQsIGV0Yywgc28gcmVtb3Zl
IGl0IGJlZm9yZSB0aGUgbW9kaWZpY2F0aW9uLi4uCisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tS
ZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgfSk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrOjpjdWVE
aWRDaGFuZ2UoVGV4dFRyYWNrQ3VlJiBjdWUpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAg
ICAgcmV0dXJuOwotCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBUZXh0VHJhY2tDdWVMaXN0IG9yZGVy
IGlzIHVwLXRvLWRhdGUuCiAgICAgZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpLnVwZGF0ZUN1ZUlu
ZGV4KGN1ZSk7CiAKICAgICAvLyAuLi4gYW5kIGFkZCBpdCBiYWNrIGFnYWluLgotICAgIG1fY2xp
ZW50LT50ZXh0VHJhY2tBZGRDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGllbnRzLmZvckVhY2go
WyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFja0FkZEN1ZSgqdGhp
cywgY3VlKTsKKyAgICB9KTsKIH0KIAogaW50IFRleHRUcmFjazo6dHJhY2tJbmRleCgpCiB7CiAg
ICAgaWYgKCFtX3RyYWNrSW5kZXgpIHsKLSAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAg
ICAgICAgaWYgKCFtX3RleHRUcmFja0xpc3QpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgbV90cmFja0luZGV4ID0gbV9tZWRpYUVsZW1lbnQtPmVuc3VyZVRleHRUcmFja3MoKS5nZXRU
cmFja0luZGV4KCp0aGlzKTsKKyAgICAgICAgbV90cmFja0luZGV4ID0gbV90ZXh0VHJhY2tMaXN0
LT5nZXRUcmFja0luZGV4KCp0aGlzKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdHJhY2tJbmRleC52
YWx1ZSgpOwogfQpAQCAtNTEyLDkgKzUyOSw5IEBAIFRleHRUcmFja0N1ZUxpc3QmIFRleHRUcmFj
azo6ZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpCiBpbnQgVGV4dFRyYWNrOjp0cmFja0luZGV4UmVs
YXRpdmVUb1JlbmRlcmVkVHJhY2tzKCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZWRUcmFja0luZGV4
KSB7Ci0gICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnQpCisgICAgICAgIGlmICghbV90ZXh0VHJh
Y2tMaXN0KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG1fcmVuZGVyZWRUcmFja0lu
ZGV4ID0gbV9tZWRpYUVsZW1lbnQtPmVuc3VyZVRleHRUcmFja3MoKS5nZXRUcmFja0luZGV4UmVs
YXRpdmVUb1JlbmRlcmVkVHJhY2tzKCp0aGlzKTsKKyAgICAgICAgbV9yZW5kZXJlZFRyYWNrSW5k
ZXggPSBtX3RleHRUcmFja0xpc3QtPmdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFj
a3MoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5kZXJlZFRyYWNrSW5kZXgudmFsdWUo
KTsKIH0KQEAgLTYxMSwxNiArNjI4LDM3IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShj
b25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VCdWZm
ZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGwsIHRoZW4gcXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBldmVudCBuYW1lZCBjaGFuZ2UgYXQgc291cmNlQnVm
ZmVyLnRleHRUcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVyKQotICAgICAgICBtX3NvdXJj
ZUJ1ZmZlci0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8vIDQu
IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUg
VGV4dFRyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQogICAgIC8vIHRoZSB0ZXh0VHJhY2tz
IGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVtZW50
KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuc2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7
CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoKnRoaXMpOworICAgIH0p
OwogfQogI2VuZGlmCiAKK3ZvaWQgVGV4dFRyYWNrOjpzZXRJZChjb25zdCBBdG9tU3RyaW5nJiBp
ZCkKK3sKKyAgICBUcmFja0Jhc2U6OnNldElkKGlkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrSWRDaGFuZ2Vk
KCp0aGlzKTsKKyAgICB9KTsKK30KKwordm9pZCBUZXh0VHJhY2s6OnNldExhYmVsKGNvbnN0IEF0
b21TdHJpbmcmIGxhYmVsKQoreworICAgIFRyYWNrQmFzZTo6c2V0TGFiZWwobGFiZWwpOworICAg
IG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVu
dC50ZXh0VHJhY2tMYWJlbENoYW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFRleHRU
cmFjazo6bmV3Q3Vlc0F2YWlsYWJsZShjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBsaXN0KQorewor
ICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVu
dC50ZXh0VHJhY2tBZGRDdWVzKCp0aGlzLCBsaXN0KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5o
CmluZGV4IDc0NjMyZWE0YzBkOWEwMzdhN2I2NjAxMTc3ZDM0YzlhOWMxNTNlNjIuLjk1MmE2YzQ3
NTQ0N2MwMDI4MGZmMjZjYjZiOTA4MWViODU2MzRmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2suaApAQCAtMzIsMzAgKzMyLDM2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1UaW1l
UmFuZ2VzLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNl
LmgiCisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRUcmFjazsKK2NsYXNz
IFRleHRUcmFja0xpc3Q7CiBjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OwogY2xhc3MgVlRUUmVnaW9u
OwogY2xhc3MgVlRUUmVnaW9uTGlzdDsKIAotY2xhc3MgVGV4dFRyYWNrQ2xpZW50IHsKK2NsYXNz
IFRleHRUcmFja0NsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0VHJhY2tDbGllbnQ+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7Ci0g
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFj
a0N1ZUxpc3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4
dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrSWRDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2smKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja0xhYmVsQ2hhbmdlZChUZXh0VHJhY2smKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFj
a0N1ZUxpc3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0
VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja0FkZEN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIHsgfQogfTsK
IAogY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoVGV4dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHRUcmFj
az4gY3JlYXRlKERvY3VtZW50KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbVN0cmluZyYg
a2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25z
dCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CisgICAgc3RhdGljIFJlZjxUZXh0VHJhY2s+IGNyZWF0
ZShEb2N1bWVudCosIGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlk
LCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOwog
ICAgIHZpcnR1YWwgflRleHRUcmFjaygpOwogCiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlv
bk1lbnVPZmZJdGVtKCk7CkBAIC02NCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgc3VidGl0bGVzS2V5d29yZCgpOwogICAgIHN0YXRpYyBib29sIGlzVmFs
aWRLaW5kS2V5d29yZChjb25zdCBBdG9tU3RyaW5nJik7CiAKKyAgICBUZXh0VHJhY2tMaXN0KiB0
ZXh0VHJhY2tMaXN0KCkgY29uc3Q7CisKICAgICBlbnVtIGNsYXNzIEtpbmQgeyBTdWJ0aXRsZXMs
IENhcHRpb25zLCBEZXNjcmlwdGlvbnMsIENoYXB0ZXJzLCBNZXRhZGF0YSwgRm9yY2VkIH07CiAg
ICAgS2luZCBraW5kKCkgY29uc3Q7CiAKQEAgLTg4LDcgKzk2LDggQEAgcHVibGljOgogCiAgICAg
VGV4dFRyYWNrQ3VlTGlzdCogY3Vlc0ludGVybmFsKCkgY29uc3QgeyByZXR1cm4gbV9jdWVzLmdl
dCgpOyB9CiAKLSAgICB2b2lkIGNsZWFyQ2xpZW50KCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IG51
bGxwdHI7IH0KKyAgICB2b2lkIGFkZENsaWVudChUZXh0VHJhY2tDbGllbnQmKTsKKyAgICB2b2lk
IGNsZWFyQ2xpZW50KFRleHRUcmFja0NsaWVudCYpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
YWRkQ3VlKFJlZjxUZXh0VHJhY2tDdWU+JiYpOwogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9p
ZD4gcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYpOwpAQCAtMTIzLDkgKzEzMiwxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW1vdmVBbGxDdWVzKCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQot
ICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogI2VuZGlmCiAKKyAgICB2
b2lkIHNldElkKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExhYmVs
KGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgYm9vbCBpc0luYmFu
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBzdGFy
dFRpbWVWYXJpYW5jZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsgfQpA
QCAtMTM5LDIwICsxNTEsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDdWVz
Tm90SW5UaW1lUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcyYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25z
dCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmlu
ZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsKKyAg
ICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEF0b21TdHJpbmcmIGtp
bmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwogCiAgICAgRG9jdW1lbnQmIGRv
Y3VtZW50KCkgY29uc3Q7Ci0gICAgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBt
X2NsaWVudDsgfQogCiAgICAgYm9vbCBoYXNDdWUoVGV4dFRyYWNrQ3VlJiwgVGV4dFRyYWNrQ3Vl
OjpDdWVNYXRjaFJ1bGVzID0gVGV4dFRyYWNrQ3VlOjpNYXRjaEFsbEZpZWxkcyk7CiAgICAgdm9p
ZCBzZXRLaW5kKEtpbmQpOwogCisgICAgdm9pZCBuZXdDdWVzQXZhaWxhYmxlKGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QmKTsKKwogICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBtX2N1ZXM7CiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbV9zdHlsZVNoZWV0czsKKyAgICBXZWFr
SGFzaFNldDxUZXh0VHJhY2tDbGllbnQ+IG1fY2xpZW50czsKIAogcHJpdmF0ZToKICAgICBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFRleHRUcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTY2LDYg
KzE4MCw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlRleHRUcmFjayI7IH0KICNlbmRpZgogCisgICAgV2Vha1B0cjxU
ZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja0xpc3Q7CisKICAgICBWVFRSZWdpb25MaXN0JiBlbnN1
cmVWVFRSZWdpb25MaXN0KCk7CiAgICAgUmVmUHRyPFZUVFJlZ2lvbkxpc3Q+IG1fcmVnaW9uczsK
IApAQCAtMTczLDcgKzE4OSw2IEBAIHByaXZhdGU6CiAKICAgICBNb2RlIG1fbW9kZSB7IE1vZGU6
OkRpc2FibGVkIH07CiAgICAgS2luZCBtX2tpbmQgeyBLaW5kOjpTdWJ0aXRsZXMgfTsKLSAgICBU
ZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OwogICAgIFRleHRUcmFja1R5cGUgbV90cmFja1R5cGU7
CiAgICAgUmVhZGluZXNzU3RhdGUgbV9yZWFkaW5lc3NTdGF0ZSB7IE5vdExvYWRlZCB9OwogICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiBtX3RyYWNrSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5pZGwKaW5kZXggYWExYjA0YTI3MmM5OTJmMTJlY2I3MTA4M2U2NzA5NTg4ZWMy
Yjg4OC4uMmU1ZjU3MmY0MTAyNWVmNjgxZWQ3MTNmMDFmZjZiYjU4ZjY2NDA5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbApAQCAtMzAsNyArMzAsNyBAQCBlbnVtIFRl
eHRUcmFja0tpbmQgeyAic3VidGl0bGVzIiwgImNhcHRpb25zIiwgImRlc2NyaXB0aW9ucyIsICJj
aGFwdGVycyIsICJtZXRhZAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1W
SURFTywKICAgICBFeHBvcnRUb1dyYXBwZWRGdW5jdGlvbiwKLSAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGxFbGVtZW50Um9vdCwKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgIEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKICAgICBFeHBvc2Vk
PVdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKaW5k
ZXggZmY5YTE0OTljZDUxNjg4Y2E4ZGJjMzBmMDFkYjRiNmM2MmI5NmRjYy4uMjI5MjY1NzM3YWNj
YzBhMzBjMmQxNzk4ZWEwODFjZWJhNGRjN2RkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0xpc3QuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJUZXh0
VHJhY2tMaXN0LmgiCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5iYW5kVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRyYWNrLmgiCkBAIC0zOSwyNyArMzgsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dFRyYWNrTGlz
dCk7CiAKLVRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFFbGVt
ZW50PiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogVHJh
Y2tMaXN0QmFzZShlbGVtZW50LCBjb250ZXh0KQorVGV4dFRyYWNrTGlzdDo6VGV4dFRyYWNrTGlz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShj
b250ZXh0LCBUcmFja0xpc3RCYXNlOjpUZXh0VHJhY2tMaXN0KQogewogfQogCiBUZXh0VHJhY2tM
aXN0Ojp+VGV4dFRyYWNrTGlzdCgpCiB7Ci0gICAgY2xlYXJFbGVtZW50KCk7Ci19Ci0KLXZvaWQg
VGV4dFRyYWNrTGlzdDo6Y2xlYXJFbGVtZW50KCkKLXsKLSAgICBUcmFja0xpc3RCYXNlOjpjbGVh
ckVsZW1lbnQoKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9lbGVtZW50VHJhY2tzKSB7Ci0g
ICAgICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAgICAgIHRyYWNrLT5j
bGVhckNsaWVudCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9hZGRUcmFja1Ry
YWNrcykgewotICAgICAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgICAg
ICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKLSAgICB9CiB9CiAKIHVuc2lnbmVkIFRleHRUcmFja0xp
c3Q6Omxlbmd0aCgpIGNvbnN0CkBAIC0yMDMsOCArMTg4LDggQEAgdm9pZCBUZXh0VHJhY2tMaXN0
OjphcHBlbmQoUmVmPFRleHRUcmFjaz4mJiB0cmFjaykKIAogICAgIGludmFsaWRhdGVUcmFja0lu
ZGV4ZXNBZnRlclRyYWNrKHRyYWNrKTsKIAotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVu
dCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtZWRpYUVsZW1lbnQoKSk7Ci0gICAgdHJh
Y2stPnNldE1lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQoKSk7CisgICAgaWYgKCF0cmFjay0+dHJh
Y2tMaXN0KCkpCisgICAgICAgIHRyYWNrLT5zZXRUcmFja0xpc3QoKnRoaXMpOwogCiAgICAgc2No
ZWR1bGVBZGRUcmFja0V2ZW50KFdURk1vdmUodHJhY2spKTsKIH0KQEAgLTIzMyw4ICsyMTgsOCBA
QCB2b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVk
dWxlRXZlbnQpCiAKICAgICBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayh0ZXh0VHJh
Y2spOwogCi0gICAgQVNTRVJUKCF0cmFjay5tZWRpYUVsZW1lbnQoKSB8fCAhZWxlbWVudCgpIHx8
IHRyYWNrLm1lZGlhRWxlbWVudCgpID09IGVsZW1lbnQoKSk7Ci0gICAgdHJhY2suc2V0TWVkaWFF
bGVtZW50KG51bGxwdHIpOworICAgIGlmICh0cmFjay50cmFja0xpc3QoKSA9PSB0aGlzKQorICAg
ICAgICB0cmFjay5jbGVhclRyYWNrTGlzdCgpOwogCiAgICAgUmVmPFRyYWNrQmFzZT4gdHJhY2tS
ZWYgPSAqKCp0cmFja3MpW2luZGV4XTsKICAgICB0cmFja3MtPnJlbW92ZShpbmRleCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCmluZGV4IGNkMmZmN2JkMGU2ZjVk
MzJlZDlhMGNjYTI1NWFkNDhhZDZiYzU4OTkuLjcwMjFlZDM2OGE1NThhODBkZjQwMDBlM2NhZWJi
YmZiZDM1YTNiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAiVHJhY2tM
aXN0QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zNiwxNiArMzcsMTQgQEAgY2xhc3MgVGV4dFRyYWNrOwogY2xhc3MgVGV4dFRy
YWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFRleHRUcmFja0xpc3QpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dFRy
YWNrTGlzdD4gY3JlYXRlKFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFRleHRUcmFja0xpc3Q+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAg
YXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tMaXN0KGVsZW1lbnQsIGNvbnRleHQp
KTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tMaXN0KGNvbnRl
eHQpKTsKICAgICAgICAgbGlzdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiBs
aXN0OwogICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tMaXN0KCk7CiAKLSAgICB2b2lkIGNs
ZWFyRWxlbWVudCgpIG92ZXJyaWRlOwotCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgaW50IGdldFRyYWNrSW5kZXgoVGV4dFRyYWNrJik7CiAgICAgaW50IGdldFRy
YWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRyYWNrJik7CkBAIC01OCwxOSAr
NTcsMjcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKFJlZjxUZXh0VHJhY2s+JiYpOwogICAg
IHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSYsIGJvb2wgc2NoZWR1bGVFdmVudCA9IHRydWUpIG92ZXJy
aWRlOwogCisgICAgdm9pZCBzZXREdXJhdGlvbihNZWRpYVRpbWUgZHVyYXRpb24pIHsgbV9kdXJh
dGlvbiA9IGR1cmF0aW9uOyB9CisgICAgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICBUZXh0VHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBUZXh0VHJhY2tMaXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
ZmluYWw7CiAKICAgICB2b2lkIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKFRleHRU
cmFjayYpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+PiBtX2FkZFRyYWNrVHJhY2tz
OwogICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNlPj4gbV9lbGVtZW50VHJhY2tzOworICAgIE1l
ZGlhVGltZSBtX2R1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRleHRUcmFja0xpc3QpCisgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2UmIHRyYWNrTGlzdCkg
eyByZXR1cm4gdHJhY2tMaXN0LnR5cGUoKSA9PSBXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpUZXh0
VHJhY2tMaXN0OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBF
TkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmlk
bAppbmRleCBkZjljYmUxMzBiY2E3M2JhNjQwZjk3OGM5MWVmMTQ0NGMyMTExZTdhLi5mYTdhY2Mx
N2FkZWFlYzNkYWI2NmM0ZTZkZDBkNGI5NGI5OTgxMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKQEAgLTI2LDcgKzI2LDYgQEAKIFsKICAgICBBY3Rp
dmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgR2VuZXJhdGVJc1JlYWNo
YWJsZT1JbXBsRWxlbWVudFJvb3QsCiAgICAgR2VuZXJhdGVBZGRPcGFxdWVSb290LAogICAgIEV4
cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBUZXh0VHJhY2tMaXN0IDogRXZlbnRUYXJnZXQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCmluZGV4IGU4Zjk1ZjkzMzEwM2Fk
ODQyYWQ4MjcxMzM2MmYzNTFmNmRkODc3M2QuLjBiMTVmN2IzZWViNzg5NDZkMjQzN2IyM2Q5YjZm
YjZmNjZmZGQ1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAg
LTMyLDggKzMyLDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IHNfdW5pcXVl
SWQgPSAwOwpAQCAtNDgsOCArNDYsOSBAQCBzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dn
ZXIoKQogfQogI2VuZGlmCiAKLVRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5n
JiBsYW5ndWFnZSkKLSAgICA6IG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlkKQorVHJhY2tCYXNlOjpU
cmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSB0eXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJp
bmcmIGxhbmd1YWdlKQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkK
KyAgICAsIG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlkKQogICAgICwgbV9pZChpZCkKICAgICAsIG1f
bGFiZWwobGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpAQCAtNzAsMjEgKzY5LDE5
IEBAIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQs
IGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjCiAjZW5kaWYKIH0KIAotRWxlbWVudCogVHJhY2tC
YXNlOjplbGVtZW50KCkKK3ZvaWQgVHJhY2tCYXNlOjpzZXRUcmFja0xpc3QoVHJhY2tMaXN0QmFz
ZSYgdHJhY2tMaXN0KQogewotICAgIHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsKKyAgICBt
X3RyYWNrTGlzdCA9IG1ha2VXZWFrUHRyKHRyYWNrTGlzdCk7CiB9CiAKLXZvaWQqIFRyYWNrQmFz
ZTo6b3BhcXVlUm9vdCgpCit2b2lkIFRyYWNrQmFzZTo6Y2xlYXJUcmFja0xpc3QoKQogewotICAg
IGlmIChhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IGFzc29jaWF0ZWRFbGVtZW50LT5vcGFxdWVSb290KCk7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAg
bV90cmFja0xpc3QgPSBudWxscHRyOwogfQogCi12b2lkIFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVt
ZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKK1RyYWNrTGlzdEJhc2UqIFRy
YWNrQmFzZTo6dHJhY2tMaXN0KCkgY29uc3QKIHsKLSAgICBtX21lZGlhRWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgcmV0dXJuIG1fdHJhY2tMaXN0LmdldCgpOwogfQogCiAvLyBTZWU6IGh0dHBzOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9iY3A0NyNzZWN0aW9uLTIuMQpAQCAtMTQ4LDggKzE0NSw4IEBA
IHZvaWQgVHJhY2tCYXNlOjpzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkK
IAogICAgIG1fdmFsaWRCQ1A0N0xhbmd1YWdlID0gZW1wdHlBdG9tKCk7CiAKLSAgICBhdXRvIGVs
ZW1lbnQgPSB0aGlzLT5lbGVtZW50KCk7Ci0gICAgaWYgKCFlbGVtZW50KQorICAgIGF1dG8gY29u
dGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFN0cmluZyBtZXNzYWdlOwpAQCAtMTU4LDcgKzE1NSw3IEBAIHZv
aWQgVHJhY2tCYXNlOjpzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKICAg
ICBlbHNlCiAgICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgbGFuZ3VhZ2UgJyIsIGxh
bmd1YWdlLCAiJyBpcyBub3QgYSB2YWxpZCBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLiIpOwogCi0gICAg
ZWxlbWVudC0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5k
ZXJpbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CisgICAgY29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIG1lc3NhZ2UpOwogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xNzQs
OCArMTcxLDggQEAgV1RGTG9nQ2hhbm5lbCYgVHJhY2tCYXNlOjpsb2dDaGFubmVsKCkgY29uc3QK
IH0KICNlbmRpZgogCi1NZWRpYVRyYWNrQmFzZTo6TWVkaWFUcmFja0Jhc2UoVHlwZSB0eXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21T
dHJpbmcmIGxhbmd1YWdlKQotICAgIDogVHJhY2tCYXNlKHR5cGUsIGlkLCBsYWJlbCwgbGFuZ3Vh
Z2UpCitNZWRpYVRyYWNrQmFzZTo6TWVkaWFUcmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0
cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQorICAgIDogVHJhY2tCYXNl
KGNvbnRleHQsIHR5cGUsIGlkLCBsYWJlbCwgbGFuZ3VhZ2UpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5oCmluZGV4IGFmNDU0NDFkOTM3OTQwOTU0YzU2YjY5YzVhMWFj
ZmI0MWI1YTJlMjIuLmE4ZTQwNGQwYjY3MGFiNzZhOTAwMmExNjU0OWRhMWYyNzJmYzM4MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaApAQCAtMjcsMTggKzI3LDE5IEBACiAK
ICNpZiBFTkFCTEUoVklERU8pCiAKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBFbGVtZW50OwotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFNv
dXJjZUJ1ZmZlcjsKK2NsYXNzIFRyYWNrTGlzdEJhc2U7CiAKIGNsYXNzIFRyYWNrQmFzZQogICAg
IDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPgorICAgICwgcHVibGljIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBwcml2YXRl
IExvZ2dlckhlbHBlcgogI2VuZGlmCkBAIC00OSwyMiArNTAsMTAgQEAgcHVibGljOgogICAgIGVu
dW0gVHlwZSB7IEJhc2VUcmFjaywgVGV4dFRyYWNrLCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrIH07
CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICB2aXJ0dWFs
IEVsZW1lbnQqIGVsZW1lbnQoKTsKLSAgICB2b2lkKiBvcGFxdWVSb290KCk7Ci0gICAgdmlydHVh
bCB2b2lkIHNldE1lZGlhRWxlbWVudChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+KTsKLSAgICBX
ZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFF
bGVtZW50OyB9Ci0KICAgICB2aXJ0dWFsIEF0b21TdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldElkKGNvbnN0IEF0b21TdHJpbmcmIGlkKSB7IG1f
aWQgPSBpZDsgfQotCiAgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFi
ZWw7IH0KLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKSB7IG1fbGFi
ZWwgPSBsYWJlbDsgfQotCiAgICAgQXRvbVN0cmluZyB2YWxpZEJDUDQ3TGFuZ3VhZ2UoKSBjb25z
dCB7IHJldHVybiBtX3ZhbGlkQkNQNDdMYW5ndWFnZTsgfQogICAgIEF0b21TdHJpbmcgbGFuZ3Vh
Z2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldExh
bmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVu
dCgpID0gMDsKIAogICAgIHZpcnR1YWwgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gbV91
bmlxdWVJZDsgfQogCkBAIC03Myw2ICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTb3Vy
Y2VCdWZmZXIoU291cmNlQnVmZmVyKiBidWZmZXIpIHsgbV9zb3VyY2VCdWZmZXIgPSBidWZmZXI7
IH0KICNlbmRpZgogCisgICAgdm9pZCBzZXRUcmFja0xpc3QoVHJhY2tMaXN0QmFzZSYpOworICAg
IHZvaWQgY2xlYXJUcmFja0xpc3QoKTsKKyAgICBUcmFja0xpc3RCYXNlKiB0cmFja0xpc3QoKSBj
b25zdDsKKyAgICB2b2lkKiBvcGFxdWVSb290KCkgeyByZXR1cm4gdHJhY2tMaXN0KCk7IH0KKwog
ICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOwogCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECkBAIC04Myw5ICs3NywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVk
OgotICAgIFRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0
cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBUcmFja0Jhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25z
dCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOwogCi0gICAg
V2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudCB7IG51bGxwdHIgfTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKSB7IG1f
bGFiZWwgPSBsYWJlbDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9t
U3RyaW5nJik7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFNvdXJjZUJ1ZmZlciog
bV9zb3VyY2VCdWZmZXIgeyBudWxscHRyIH07CkBAIC0xMDIsNiArOTgsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9n
SWRlbnRpZmllciB7IG51bGxwdHIgfTsKICNlbmRpZgorICAgIFdlYWtQdHI8VHJhY2tMaXN0QmFz
ZT4gbV90cmFja0xpc3Q7CiB9OwogCiBjbGFzcyBNZWRpYVRyYWNrQmFzZSA6IHB1YmxpYyBUcmFj
a0Jhc2UgewpAQCAtMTEwLDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
S2luZChjb25zdCBBdG9tU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVRyYWNrQmFz
ZShUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNv
bnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBNZWRpYVRyYWNrQmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJp
bmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICB2b2lkIHNldEtp
bmRJbnRlcm5hbChjb25zdCBBdG9tU3RyaW5nJik7CiAKQEAgLTEyMCw2ICsxMTcsMTEgQEAgcHJp
dmF0ZToKICAgICBBdG9tU3RyaW5nIG1fa2luZDsKIH07CiAKK2lubGluZSB2b2lkKiByb290KFRy
YWNrQmFzZSogdHJhY2spCit7CisgICAgcmV0dXJuIHRyYWNrLT5vcGFxdWVSb290KCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0xpc3RCYXNlLmNwcAppbmRleCAwMTNhMjNjOTgxYmFlOWEwOTRlMDM3ZmNhMDI2
NDkxNDQ4MTUzNDliLi5lYzNjNWJlMGNkNjNlMzAzZjJmNzMwMGQyNGRhZDMwZThmMjgwMGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTMwLDcg
KzMwLDYgQEAKICNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCiAKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUcmFja0V2ZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTM5LDM3ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUcmFja0xpc3RCYXNlKTsKIAotVHJh
Y2tMaXN0QmFzZTo6VHJhY2tMaXN0QmFzZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1l
bnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitUcmFja0xpc3RCYXNlOjpUcmFj
a0xpc3RCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgdHlwZSkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisg
ICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBBU1NFUlQoIWNvbnRleHQgfHwgaXM8RG9jdW1lbnQ+
KGNvbnRleHQpKTsKIH0KIAogVHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UoKQogewotICAg
IGNsZWFyRWxlbWVudCgpOwogfQogCi12b2lkIFRyYWNrTGlzdEJhc2U6OmNsZWFyRWxlbWVudCgp
Cit2b2lkKiBUcmFja0xpc3RCYXNlOjpvcGFxdWVSb290KCkKIHsKLSAgICBtX2VsZW1lbnQgPSBu
dWxscHRyOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2luYmFuZFRyYWNrcykgewotICAgICAg
ICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgICAgICB0cmFjay0+Y2xlYXJD
bGllbnQoKTsKLSAgICB9Ci19Ci0KLUVsZW1lbnQqIFRyYWNrTGlzdEJhc2U6OmVsZW1lbnQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7Ci19Ci0KLXZvaWQqIFRyYWNrTGlz
dEJhc2U6Om9wYXF1ZVJvb3QoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBhc3NvY2lhdGVkRWxl
bWVudCA9IGVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzc29jaWF0ZWRFbGVtZW50LT5vcGFx
dWVSb290KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHJvb3QgPSBtX29w
YXF1ZVJvb3QuZ2V0KCkpCisgICAgICAgIHJldHVybiByb290OworICAgIHJldHVybiB0aGlzOwog
fQogCiB1bnNpZ25lZCBUcmFja0xpc3RCYXNlOjpsZW5ndGgoKSBjb25zdApAQCAtODMsMTAgKzY2
LDggQEAgdm9pZCBUcmFja0xpc3RCYXNlOjpyZW1vdmUoVHJhY2tCYXNlJiB0cmFjaywgYm9vbCBz
Y2hlZHVsZUV2ZW50KQogICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKHRyYWNrLm1lZGlhRWxlbWVudCgpKSB7Ci0gICAgICAgIEFTU0VSVCh0cmFj
ay5tZWRpYUVsZW1lbnQoKSA9PSBtX2VsZW1lbnQpOwotICAgICAgICB0cmFjay5zZXRNZWRpYUVs
ZW1lbnQobnVsbHB0cik7Ci0gICAgfQorICAgIGlmICh0cmFjay50cmFja0xpc3QoKSA9PSB0aGlz
KQorICAgICAgICB0cmFjay5jbGVhclRyYWNrTGlzdCgpOwogCiAgICAgUmVmPFRyYWNrQmFzZT4g
dHJhY2tSZWYgPSAqbV9pbmJhbmRUcmFja3NbaW5kZXhdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tMaXN0QmFzZS5oCmluZGV4IGZhMDBmODYwZmJmOTA4ZDNkMjA3N2UxZDJkYjg2
MjliMjBhNDJkOTkuLjllYzEwYTliNzU2YzAzZmQ2YTY3OTliYjcyMzhmNTg2OThhNjk2MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCkBAIC0zNSw4ICszNSw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKLWNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBUcmFja0Jhc2U7CiAKIGNsYXNzIFRyYWNrTGlzdEJhc2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewpAQCAtNDQsNiArNDIsOSBAQCBjbGFz
cyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbgogcHVibGljOgogICAgIHZpcnR1YWwgflRyYWNrTGlzdEJhc2Uo
KTsKIAorICAgIGVudW0gVHlwZSB7IEJhc2VUcmFja0xpc3QsIFRleHRUcmFja0xpc3QsIEF1ZGlv
VHJhY2tMaXN0LCBWaWRlb1RyYWNrTGlzdCB9OworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoVHJhY2tCYXNlJikgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZShUcmFja0Jhc2UmLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKTsKQEAgLTU0
LDEwICs1NSw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+
OjpkZXJlZjsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyRWxlbWVu
dCgpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkKiBvcGFxdWVSb290
KCkgY29uc3Q7Ci0gICAgV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KKyAgICB2b2lkKiBvcGFxdWVSb290KCk7CisgICAg
dm9pZCBzZXRPcGFxdWVSb290KFdlYWtQdHI8dm9pZD4mJiBvcGFxdWVSb290KSB7IG1fb3BhcXVl
Um9vdCA9IFdURk1vdmUob3BhcXVlUm9vdCk7IH07CiAKICAgICAvLyBOZWVkcyB0byBiZSBwdWJs
aWMgc28gdHJhY2tzIGNhbiBjYWxsIGl0CiAgICAgdm9pZCBzY2hlZHVsZUNoYW5nZUV2ZW50KCk7
CkBAIC02Niw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW55VHJhY2tFbmFibGVkKCkg
Y29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBUcmFja0xpc3RCYXNlKFdlYWtQdHI8SFRNTE1lZGlh
RWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBUcmFja0xpc3RCYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBlKTsKIAogICAgIHZvaWQgc2NoZWR1bGVBZGRUcmFj
a0V2ZW50KFJlZjxUcmFja0Jhc2U+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVSZW1vdmVUcmFja0V2
ZW50KFJlZjxUcmFja0Jhc2U+JiYpOwpAQCAtODAsMTAgKzc5LDE2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIFdlYWtQdHI8SFRNTE1lZGlhRWxl
bWVudD4gbV9lbGVtZW50OworICAgIFR5cGUgbV90eXBlOworICAgIFdlYWtQdHI8dm9pZD4gbV9v
cGFxdWVSb290OwogICAgIGJvb2wgbV9pc0NoYW5nZUV2ZW50U2NoZWR1bGVkIHsgZmFsc2UgfTsK
IH07CiAKK2lubGluZSB2b2lkKiByb290KFRyYWNrTGlzdEJhc2UqIHRyYWNrTGlzdCkKK3sKKyAg
ICByZXR1cm4gdHJhY2tMaXN0LT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suY3BwCmluZGV4IGVkNzU1YTI4MGVmM2Y4M2FhOTE2ZTIxOWMxMjFiMGQ3YWI0
OWIzYzYuLmQzMDRmYjY4MjE4MmI0MjExYzczZTExYjA5MTYxZTVjZWRiMGRiMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1
ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
QEAgLTgwLDkgKzc5LDggQEAgY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFy
eUtleXdvcmQoKQogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1WaWRlb1RyYWNrOjpWaWRl
b1RyYWNrKFZpZGVvVHJhY2tDbGllbnQmIGNsaWVudCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNr
UHJpdmF0ZSkKLSAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNr
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpKQotICAgICwgbV9jbGllbnQoJmNsaWVudCkKK1ZpZGVvVHJhY2s6OlZpZGVvVHJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmlkZW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKKyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNl
OjpWaWRlb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRy
YWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKICAg
ICAsIG1fc2VsZWN0ZWQodHJhY2tQcml2YXRlLnNlbGVjdGVkKCkpCiB7CkBAIC0xMzAsOCArMTI4
LDIxIEBAIHZvaWQgVmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQoY29uc3QgYm9vbCBzZWxlY3RlZCkK
ICAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CiAgICAgbV9wcml2YXRlLT5zZXRTZWxlY3RlZChz
ZWxlY3RlZCk7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT52aWRlb1Ry
YWNrU2VsZWN0ZWRDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10g
KGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdl
ZCgqdGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6YWRkQ2xpZW50KFZpZGVv
VHJhY2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhj
bGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgVmlkZW9UcmFj
azo6Y2xlYXJDbGllbnQoVmlkZW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCht
X2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQp
OwogfQogCiBzaXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCkBAIC0xNDIsMTYg
KzE1MywyNSBAQCBzaXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCiB2b2lkIFZp
ZGVvVHJhY2s6OnNlbGVjdGVkQ2hhbmdlZChib29sIHNlbGVjdGVkKQogewogICAgIHNldFNlbGVj
dGVkKHNlbGVjdGVkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVu
dCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCgqdGhpcyk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6aWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcm
IGlkKQogewogICAgIHNldElkKGlkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1
dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja0lkQ2hhbmdlZCgqdGhpcyk7
CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6bGFiZWxDaGFuZ2VkKGNvbnN0IEF0b21T
dHJpbmcmIGxhYmVsKQogewogICAgIHNldExhYmVsKGxhYmVsKTsKKyAgICBtX2NsaWVudHMuZm9y
RWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja0xh
YmVsQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6bGFuZ3Vh
Z2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQpAQCAtMTYxLDEwICsxODEsOSBA
QCB2b2lkIFZpZGVvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYW5n
dWFnZSkKIAogdm9pZCBWaWRlb1RyYWNrOjp3aWxsUmVtb3ZlKCkKIHsKLSAgICBhdXRvIGVsZW1l
bnQgPSBtYWtlUmVmUHRyKG1lZGlhRWxlbWVudCgpLmdldCgpKTsKLSAgICBpZiAoIWVsZW1lbnQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50LT5yZW1vdmVWaWRlb1RyYWNrKCp0aGlzKTsK
KyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBj
bGllbnQud2lsbFJlbW92ZVZpZGVvVHJhY2soKnRoaXMpOworICAgIH0pOwogfQogCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKQEAgLTE4MiwxMiArMjAxLDExIEBAIHZvaWQgVmlkZW9UcmFjazo6
c2V0S2luZChjb25zdCBBdG9tU3RyaW5nJiBraW5kKQogCiAgICAgLy8gMy4gSWYgdGhlIHNvdXJj
ZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBh
IHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3Vy
Y2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVyKQotICAgICAgICBt
X3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Ci0KICAg
ICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2Ug
YXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAgICAgLy8gdGhlIHZp
ZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICBtZWRpYUVs
ZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisgICAg
bV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50
LnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9U
cmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCkBAIC0xOTksMTcg
KzIxNywxNSBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcm
IGxhbmd1YWdlKQogICAgIC8vIHNoYXJlZCBiZXR3ZWVuIGFsbCB0cmFja3MgdGhhdCBzdXBwb3J0
IHNldHRpbmcgbGFuZ3VhZ2UuCiAKICAgICAvLyAyLiBVcGRhdGUgdGhpcyBhdHRyaWJ1dGUgdG8g
dGhlIG5ldyB2YWx1ZS4KLSAgICBNZWRpYVRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2Up
OworICAgIFRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOwogCiAgICAgLy8gMy4gSWYg
dGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhl
biBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5n
ZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVyKQot
ICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2ZW50
KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1l
ZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAgICAg
Ly8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAg
ICBpZiAobWVkaWFFbGVtZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRl
b1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
Jl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja0xhbmd1YWdlQ2hh
bmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKICNlbmRpZgpAQCAtMjE4LDM1ICsyMzQsMzAgQEAg
dm9pZCBWaWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogewogICAgIHN3aXRjaCAo
bV9wcml2YXRlLT5raW5kKCkpIHsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpBbHRlcm5h
dGl2ZToKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5
d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9u
czoKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgp
KTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgotICAgICAgICBz
ZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIHNldEtp
bmQoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9U
cmFjazo6c2lnbktleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktl
eXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpT
dWJ0aXRsZXM6Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNL
ZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDb21tZW50
YXJ5OgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdv
cmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgotICAg
ICAgICBzZXRLaW5kSW50ZXJuYWwoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHNldEtpbmQoZW1w
dHlTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXZvaWQgVmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNldE1lZGlhRWxlbWVu
dChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBWaWRlb1Ry
YWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCmluZGV4IDE3OWU3
MTNiYzM2NjllNWQ0NDg0MTdlNDJiZTI5YmIxMGMzOTE4ODguLjYyYzkwYjI0YjQ1MGFiNDBlNjIy
Yzg5MWFkMGFkODQ0YzRkMTg0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5oCkBAIC0zMCwyMyArMzAsMzAgQEAKIAogI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgogI2luY2x1
ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbjsKIGNsYXNzIFZp
ZGVvVHJhY2s7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsKIAotY2xhc3MgVmlkZW9UcmFja0NsaWVu
dCB7CitjbGFzcyBWaWRlb1RyYWNrQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFZpZGVv
VHJhY2tDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrQ2xpZW50KCkg
PSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZp
ZGVvVHJhY2smKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tJZENoYW5nZWQoVmlk
ZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlk
ZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrTGFiZWxDaGFuZ2VkKFZp
ZGVvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdl
ZChWaWRlb1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENo
YW5nZWQoVmlkZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlVmlkZW9U
cmFjayhWaWRlb1RyYWNrJikgeyB9CiB9OwogCiBjbGFzcyBWaWRlb1RyYWNrIGZpbmFsIDogcHVi
bGljIE1lZGlhVHJhY2tCYXNlLCBwcml2YXRlIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50
JiBjbGllbnQsIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJl
ZjxWaWRlb1RyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmlk
ZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFZpZGVvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFjayhjb250ZXh0LCB0cmFja1ByaXZhdGUpKTsKICAg
ICB9CiAgICAgdmlydHVhbCB+VmlkZW9UcmFjaygpOwogCkBAIC02MCw4ICs2Nyw4IEBAIHB1Ymxp
YzoKICAgICBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChjb25zdCBib29sKTsKIAotICAgIHZvaWQgY2xlYXJD
bGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIFZpZGVvVHJhY2tDbGll
bnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBhZGRDbGll
bnQoVmlkZW9UcmFja0NsaWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQoVmlkZW9UcmFja0Ns
aWVudCYpOwogCiAgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKIApAQCAtNzMsMTMgKzgw
LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbigp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRQcml2YXRlKFZpZGVvVHJhY2tQcml2YXRlJik7Ci0gICAg
dm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Pikgb3ZlcnJpZGU7
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9n
Z2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgVmlkZW9U
cmFjayhWaWRlb1RyYWNrQ2xpZW50JiwgVmlkZW9UcmFja1ByaXZhdGUmKTsKKyAgICBWaWRlb1Ry
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBWaWRlb1RyYWNrUHJpdmF0ZSYpOwogCiAgICAg
Ym9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAKQEAgLTEw
MCw3ICsxMDYsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJWaWRlb1RyYWNrIjsgfQogI2VuZGlmCiAKLSAgICBWaWRlb1Ry
YWNrQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBXZWFrUHRyPFZpZGVvVHJhY2tM
aXN0PiBtX3ZpZGVvVHJhY2tMaXN0OworICAgIFdlYWtIYXNoU2V0PFZpZGVvVHJhY2tDbGllbnQ+
IG1fY2xpZW50czsKICAgICBSZWY8VmlkZW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBi
b29sIG1fc2VsZWN0ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaWRsCmluZGV4IDc0NzIzZGJhZGQ1ZTllMzcxYzNmMmQxNjdiYmQ3NTE3MjE1NThj
MGQuLjFjOWEzMTk5OThhNTRhMjY5Y2NiNjRlMDBkNzY1ZWVkOTE5OTI0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVu
dFJvb3QsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZSwKICAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFZpZGVvVHJhY2sgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcAppbmRleCA4NDg2NTY2ZDE4
Yzg0ZTZmNGE2OGFhZmJlOGEzYzA1ODI0NzRkM2IwLi43YTkxYTU5MWVhYWE4ZjIxNDZjNGViMzk5
NzJiNWE3YjM5NjlkMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmNwcApAQCAtMjksMTMgKzI5LDEyIEBACiAKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlz
dC5oIgogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlZpZGVvVHJh
Y2suaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WaWRlb1RyYWNrTGlzdDo6VmlkZW9UcmFj
a0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQotICAgIDogVHJhY2tMaXN0QmFzZShlbGVtZW50LCBjb250ZXh0KQor
VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKGNvbnRleHQsIFRyYWNrTGlzdEJhc2U6OlZpZGVv
VHJhY2tMaXN0KQogewogfQogCkBAIC01Myw4ICs1Miw4IEBAIHZvaWQgVmlkZW9UcmFja0xpc3Q6
OmFwcGVuZChSZWY8VmlkZW9UcmFjaz4mJiB0cmFjaykKICAgICB9CiAgICAgbV9pbmJhbmRUcmFj
a3MuaW5zZXJ0KGluc2VydGlvbkluZGV4LCB0cmFjay5wdHIoKSk7CiAKLSAgICBBU1NFUlQoIXRy
YWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVt
ZW50KCkpOwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAg
IGlmICghdHJhY2stPnRyYWNrTGlzdCgpKQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0
aGlzKTsKIAogICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKaW5kZXggOTY2MGRmNmZl
Mjk3NzRkZGRmM2JjOTM2ZjM0NDEyOTRkOGMwZGFiMy4uMjVjZWNiZmViYmU0YzJhYWJmYzI3N2Yy
ZDYwODQxNjgyY2VmNjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBWaWRlb1RyYWNrOwogCiBjbGFzcyBWaWRl
b1RyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50
PiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBzdGF0aWMgUmVm
PFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja0xpc3Qo
b3duZXIsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBWaWRl
b1RyYWNrTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIFZpZGVvVHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlhRWxl
bWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBWaWRlb1RyYWNrTGlzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CiB9OwpAQCAtNjIsNCArNjIsOCBAQCBzdGF0aWNfYXNzZXJ0KHNp
emVvZihWaWRlb1RyYWNrTGlzdCkgPT0gc2l6ZW9mKFRyYWNrTGlzdEJhc2UpLCAiIik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpWaWRlb1RyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVybiB0cmFja0xpc3QudHlwZSgpID09
IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlZpZGVvVHJhY2tMaXN0OyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCmluZGV4IGFiMmI3ZTZjMjNlYmUwZTNi
ODBiNjczYWI5NTk4YTQxNzg4ZGU3ZGIuLmQxOWNlZDMyZjE5Y2E1YzI4ZDk1MTdjMDE2YWZiZmVk
MzYzNTE5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3Qu
aWRsCkBAIC0yNiw3ICsyNiw2IEBACiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRp
dGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAog
ICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZh
Y2UgVmlkZW9UcmFja0xpc3QgOiBFdmVudFRhcmdldCB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Q5OGJjYmM5NTVmZjhhNGUyM2U1MTlkNTk1
Y2M5NTc5MWI5MDA2YS4uMDU5ZDcyMzg1YmE1NzJmMGU3ZmU5NmE3ZDA5YWM1NGM1ZmQ5ZDBmZCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDIxLTA5LTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZmFjdG9yIFZpZGVvLEF1ZGlvLFRleHRUcmFjayBhbmQgVHJhY2tMaXN0cyB0
byBub3QgZGVwZW5kIG9uIEhUTUxNZWRpYUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTkyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgV2Vha1B0cjx2b2lkPi4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDktMDIgIENhcmxvcyBBbGJlcnRvIExvcGV6
IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBQb3J0IEFQ
SSB0ZXN0IHJ1bm5lciB0byBweXRob24zICh2MikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvV2Vha1B0ci5jcHAKaW5kZXggN2I1NjQzNmQxZDI0Mjk2ZWM4NjU3YjZjMTA1YjkyZWUzYWNj
M2VmYi4uZjQ5NGJiODlhNTI4OTIwMzU0YWNiZTgyYzY3MGYyZjA3ZGRjM2MzYyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTI3Nyw2ICsyNzcsMzIgQEAg
VEVTVChXVEZfV2Vha1B0ciwgRG93bmNhc3RpbmcpCiAgICAgRVhQRUNUX05VTEwoZGVyaXZlZFdl
YWtQdHIuZ2V0KCkpOwogfQogCitURVNUKFdURl9XZWFrUHRyLCBWb2lkKQoreworICAgIFdlYWtQ
dHI8QmFzZT4gYmFzZVdlYWtQdHI7CisgICAgV2Vha1B0cjxEZXJpdmVkPiBkZXJpdmVkV2Vha1B0
cjsKKyAgICBXZWFrUHRyPHZvaWQ+IHZvaWRXZWFrUHRyOworCisgICAgeworICAgICAgICBEZXJp
dmVkIG9iamVjdDsKKyAgICAgICAgRGVyaXZlZCogZGVyaXZlZFB0ciA9ICZvYmplY3Q7CisgICAg
ICAgIEJhc2UqIGJhc2VQdHIgPSBzdGF0aWNfY2FzdDxCYXNlKj4oJm9iamVjdCk7CisKKyAgICAg
ICAgYmFzZVdlYWtQdHIgPSBvYmplY3Qud2Vha1B0ckZhY3RvcnkoKS5jcmVhdGVXZWFrUHRyKG9i
amVjdCk7CisgICAgICAgIGRlcml2ZWRXZWFrUHRyID0gbWFrZVdlYWtQdHIob2JqZWN0KTsKKwor
ICAgICAgICB2b2lkV2Vha1B0ciA9IG1ha2VXZWFrUHRyKG9iamVjdCk7CisgICAgICAgIEVYUEVD
VF9FUSh2b2lkV2Vha1B0ci5nZXQoKSwgZGVyaXZlZFdlYWtQdHIuZ2V0KCkpOworICAgICAgICBF
WFBFQ1RfRVEodm9pZFdlYWtQdHIuZ2V0KCksIGJhc2VXZWFrUHRyLmdldCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKHZvaWRXZWFrUHRyLmdldCgpLCBzdGF0aWNfY2FzdDx2b2lkKj4oZGVyaXZlZFB0
cikpOworICAgICAgICBFWFBFQ1RfRVEodm9pZFdlYWtQdHIuZ2V0KCksIHN0YXRpY19jYXN0PHZv
aWQqPihiYXNlUHRyKSk7CisgICAgfQorCisgICAgRVhQRUNUX05VTEwoYmFzZVdlYWtQdHIuZ2V0
KCkpOworICAgIEVYUEVDVF9OVUxMKGRlcml2ZWRXZWFrUHRyLmdldCgpKTsKKyAgICBFWFBFQ1Rf
TlVMTCh2b2lkV2Vha1B0ci5nZXQoKSk7Cit9CisKIFRFU1QoV1RGX1dlYWtQdHIsIERlcml2ZWRD
b25zdHJ1Y3RBbmRBc3NpZ24pCiB7CiAgICAgRGVyaXZlZCBkZXJpdmVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437557</attachid>
            <date>2021-09-07 14:47:15 -0700</date>
            <delta_ts>2021-09-07 15:02:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229924-20210907144714.patch</filename>
            <type>text/plain</type>
            <size>109342</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmYmYxMThlMjE1ZDM3
M2M3ZTc5YzQ3YmY0ZjM4NDRiNjA3MjFkYi4uOTIxZTY2ZGZlMWU2ZjEyZmEzNDQyYTJiMzVkZGIx
ZDY1YTBkOGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAyMS0wOS0wNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBWaWRlbyxB
dWRpbyxUZXh0VHJhY2sgYW5kIFRyYWNrTGlzdHMgdG8gbm90IGRlcGVuZCBvbiBIVE1MTWVkaWFF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
cmFja0Jhc2UgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMgY3VycmVudGx5IGFyZSBvbmx5IGFibGUg
dG8gaGFuZGxlIGEgc2luZ2xlICJjbGllbnQiCisgICAgICAgIGF0IGEgdGltZSwgd2hpY2ggbWVh
bnMgYSBjb21wbGljYXRlZCByZS1zZW5kaW5nIG9mIG5vdGlmaWNhdGlvbnMgZnJvbSBvbmUgY2xp
ZW50IHRvCisgICAgICAgIHRoZSBuZXh0IHRvIGVuc3VyZSBldmVyeXRoaW5nIGZsb3dzIHRvIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGlzCisgICAgICAgIGNvbXBsaWNh
dGVkIGNsaWVudCBoZWlyYXJjaHksIFRyYWNrcyBhbmQgdGhlaXIgVHJhY2tMaXN0cyBiZWluZyB0
aWdodGx5IGJvdW5kIHRvIHRoZWlyCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBtYWtl
IE1TRS1pbi1hLVdvcmtlciBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIGltcGxlbWVudC4KKworICAg
ICAgICBSZWZhY3RvciBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIHRvIGhh
dmUgbXVsdGlwbGUgY2xpZW50cywgdHJhY2tlZCBieQorICAgICAgICBhIFdlYWtIYXNoU2V0LiBS
ZW1vdmUgSFRNTE1lZGlhRWxlbWVudCBmcm9tIHRoYXQgY2xhc3MgaGVpcmFyY2h5LCBhbmQgcmVw
bGFjZSBpdCB3aXRoCisgICAgICAgIGEgV2Vha1B0ciB0byB0aGVpciBUcmFja0xpc3QgZm9yIG9w
YXF1ZVJvb3QgcHVycG9zZXMuCisKKyAgICAgICAgU2ltaWxhcmx5LCByZWZhY3RvciBBdWRpb1Ry
YWNrTGlzdCwgVmlkZW9UcmFja0xpc3QsIGFuZCBUZXh0VHJhY2tMaXN0IHRvIG5vdCByZXF1aXJl
CisgICAgICAgIGEgYmFja3BvaW50ZXIgdG8gSFRNTE1lZGlhRWxlbWVudCwgYW5kIHVzZSBhIFdl
YWtQdHI8dm9pZD4gaW5zdGVhZCwgYWxsb3dpbmcgZWl0aGVyCisgICAgICAgIFNvdXJjZUJ1ZmZl
ciBvciBIVE1MTWVkaWFFbGVtZW50IHRvIGJlIHRoZSBsaXN0J3Mgb3BhcXVlUm9vdC4KKworICAg
ICAgICBBIFRyYWNrQmFzZSBuZWVkZWQgYWNjZXNzIHRvIGEgSFRNTE1lZGlhRWxlbWVudCBvbmx5
IGZvciB0aGUgbmVjZXNzaXR5IG9mIG91dHB1dHRpbmcKKyAgICAgICAgYSB3YXJuaW5nIHRvIHRo
ZSBjb25zb2xlIHdoZW4gYSBsYW5ndWFnZSBlcnJvciBvY2N1cnJlZDsgaW5zdGVhZCwgbWFrZSBU
cmFja0Jhc2UgYQorICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgYW5kIHBhc3Mg
YSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBUcmFja0Jhc2UgKGFuZAorICAgICAgICBh
bGwgaXRzIGRlcml2ZWQgY2xhc3NlcykgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIEEg
VHJhY2tMaXN0QmFzZSBub3cgaGFzIGEgdHlwZSgpIG1ldGhvZCwgd2hpY2ggYWxsb3dzIGl0IHRv
IGJlIHNhZmVseSBjYXN0IHRvIEF1ZGlvVHJhY2ssCisgICAgICAgIFZpZGVvVHJhY2ssIGFuZCBU
ZXh0VHJhY2ssIHRocm91Z2ggdHlwZSB0cmFpdCBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICBU
ZXh0VHJhY2sgdXNlZCBIVE1MTWVkaWFFbGVtZW50IHRvIHJldHJpZXZlIGl0cyBUZXh0VHJhY2tM
aXN0IGZvciBjZXJ0YWluIG9wZXJhdGlvbnMsCisgICAgICAgIGFuZCBub3cgdGhhdCBlYWNoIFRy
YWNrQmFzZSBoYXMgYSBiYWNrcG9pbnRlciB0byBpdHMgVHJhY2tMaXN0LCB0aGlzIGlzIG5vIGxv
bmdlciBuZWNlc3NhcnkuCisKKyAgICAgICAgVGV4dFRyYWNrTGlzdCBub3cgaGFzIHNldER1cmF0
aW9uKCkvZHVyYXRpb24oKSBtZW1iZXIgZnVuY3Rpb25zLCBzbyB0aGF0IHdoZW4gVGV4dFRyYWNr
CisgICAgICAgIHJlY2VpdmVzIGEgY3VlIHdpdGggYW4gaW5kZWZpbml0ZSBkdXJhdGlvbiwgdGhh
dCBjdWUncyBlbmRUaW1lIGNhbiBiZSBjYWxjdWxhdGVkLgorCisgICAgICAgIFRoZSBBdWRpb1Ry
YWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIElETHMgcHJldmlvdXNseSBzcGVjaWZpZWQg
R2VuZXJhdGVJc1JlYWNoYWJsZSwKKyAgICAgICAgd2l0aCBhIHBhcmFtZXRlciBvZiBJbXBsRWxl
bWVudFJvb3QsIHdoaWNoIHJlcXVpcmVkIGFuIGVsZW1lbnQoKSBtZXRob2Qgb24gZWFjaDsgbm93
CisgICAgICAgIHRoYXQgVHJhY2tCYXNlIGhhcyBhbiBvcGFxdWVSb290KCkgbWV0aG9kLCB0aGlz
IHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRp
b1RyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrTGFiZWxDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYW5ndWFn
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92
ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxUcmFja0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjppZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OndpbGxSZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tJZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0xhbmd1YWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50Ojp3aWxsUmVtb3Zl
QXVkaW9UcmFjayk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0OjpyZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGw6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
RGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Oklu
YmFuZEdlbmVyaWNUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0
b21hdGljSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2s6On5UZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0ZXh0
VHJhY2tMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZUFsbEN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3VlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tBZGRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpjbGVhclRy
YWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnRyYWNrTGlzdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZSk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6aWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0Jhc2U6Omxhbmd1YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrQmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldElk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFiZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzZXRPcGFxdWVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OnJvb3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZWxlY3RlZENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6aWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjp3aWxsUmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZpZGVvVHJh
Y2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVudDo6dmlkZW9U
cmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZp
ZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVu
dDo6dmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrQ2xpZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tDbGllbnQ6OndpbGxSZW1vdmVWaWRlb1RyYWNrKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6CiAyMDIxLTA4LTIzICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIERlLWZsYWtlIG1lZGlhIHBhaW50aW5n
IHRlc3RzIGJ5IGRlbGF5aW5nIHJlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgdW50aWwg
ZWxlbWVudCBpcyBhYmxlIHRvIHBhaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNjdhNjFiYzg0MWRkYmY5NDkxNzdj
YTFlZGU3MWVlYzA3ODkwN2JlNS4uZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRlMDY0
NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNzQsNiArNzQsNyBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZl
cihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KHNvdXJjZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICwgbV9wcml2YXRlKFdURk1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihbdGhpc10geyByZXR1cm4g
b3BhcXVlUm9vdCgpOyB9KQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3Rh
cnQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNjMyLDIyICs2MzMsMjggQEAgdWludDY0
X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiAKIFZpZGVvVHJhY2tM
aXN0JiBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdmlkZW9UcmFj
a3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKChpc1JlbW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkp
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsK
KyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2V0T3BhcXVlUm9vdE9i
c2VydmVyKG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsKKyAgICB9CiAgICAgcmV0dXJuICptX3ZpZGVv
VHJhY2tzOwogfQogCiBBdWRpb1RyYWNrTGlzdCYgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrcygp
CiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVk
aW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVkKCkgPyBudWxscHRyIDog
bV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRpb1Ry
YWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVk
aW9UcmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7Cisg
ICAgfQogICAgIHJldHVybiAqbV9hdWRpb1RyYWNrczsKIH0KIAogVGV4dFRyYWNrTGlzdCYgU291
cmNlQnVmZmVyOjp0ZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAg
ICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRyKChpc1Jl
bW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpKSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykgeworICAgICAgICBtX3Rl
eHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVS
b290UHJvdmlkZXIpOworICAgIH0KICAgICByZXR1cm4gKm1fdGV4dFRyYWNrczsKIH0KIApAQCAt
Nzc5LDcgKzc4Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHN0ZXBzIDUuMi4xLTUuMi44LjEgYXMgcGVyIEVkaXRvcidzIERyYWZ0
IDA5IEphbnVhcnkgMjAxNSwgYW5kIHJlb3JkZXIgdGhpcwogICAgICAgICAgICAgLy8gNS4yLjEg
TGV0IG5ldyBhdWRpbyB0cmFjayBiZSBhIG5ldyBBdWRpb1RyYWNrIG9iamVjdC4KICAgICAgICAg
ICAgIC8vIDUuMi4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGlk
IHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KLSAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9U
cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSgqdGhpcywgKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICphdWRpb1RyYWNrSW5mby50cmFjayk7CisgICAgICAgICAg
ICBuZXdBdWRpb1RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbmV3QXVkaW9U
cmFjay0+c2V0U291cmNlQnVmZmVyKHRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjIuMyBJZiBh
dWRpb1RyYWNrcy5sZW5ndGggZXF1YWxzIDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CkBAIC04MDEsNyArODA5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAgICAgICAg
IC8vIDUuMi43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBub3QgY2Fu
Y2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBB
dWRpb1RyYWNrTGlzdCBvYmplY3QKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1
ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3
QXVkaW9UcmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVu
dCgpLT5hZGRBdWRpb1RyYWNrKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAogICAgICAgICAg
ICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVj
KCkpOwogCkBAIC04MTQsNyArODIyLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RlcHMgNS4zLjEtNS4zLjguMSBhcyBwZXIgRWRp
dG9yJ3MgRHJhZnQgMDkgSmFudWFyeSAyMDE1LCBhbmQgcmVvcmRlciB0aGlzCiAgICAgICAgICAg
ICAvLyA1LjMuMSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0
LgogICAgICAgICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBp
dCB0byB0aGUgaWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgotICAgICAgICAgICAgYXV0
byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKCp0aGlzLCAqdmlkZW9UcmFja0lu
Zm8udHJhY2spOworICAgICAgICAgICAgYXV0byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnZpZGVvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIG5ld1ZpZGVvVHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAg
ICBuZXdWaWRlb1RyYWNrLT5zZXRTb3VyY2VCdWZmZXIodGhpcyk7CiAKICAgICAgICAgICAgIC8v
IDUuMy4zIElmIHZpZGVvVHJhY2tzLmxlbmd0aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKQEAgLTgzNiw3ICs4NDUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQog
ICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50
IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAg
IC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFj
ZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNl
ZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50Lgot
ICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygp
LmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+
bWVkaWFFbGVtZW50KCktPmFkZFZpZGVvVHJhY2sobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwog
CiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlw
dGlvbi0+Y29kZWMoKSk7CiAKQEAgLTg1MSw3ICs4NjAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlh
bGl6YQogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdGVwcyA1LjQuMS01LjQuOC4x
IGFzIHBlciBFZGl0b3IncyBEcmFmdCAwOSBKYW51YXJ5IDIwMTUsIGFuZCByZW9yZGVyIHRoaXMK
ICAgICAgICAgICAgIC8vIDUuNC4xIExldCBuZXcgdGV4dCB0cmFjayBiZSBhIG5ldyBUZXh0VHJh
Y2sgb2JqZWN0IHdpdGggaXRzIHByb3BlcnRpZXMgcG9wdWxhdGVkIHdpdGggdGhlCiAgICAgICAg
ICAgICAvLyBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBz
ZWdtZW50LgotICAgICAgICAgICAgYXV0byBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6
OmNyZWF0ZShkb2N1bWVudCgpLCAqdGhpcywgdGV4dFRyYWNrUHJpdmF0ZSk7CisgICAgICAgICAg
ICBhdXRvIG5ld1RleHRUcmFjayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHRUcmFja1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VGV4dFRyYWNrLT5hZGRDbGllbnQo
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBu
ZXcgdGV4dCB0cmFjayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3Rp
dmUKICAgICAgICAgICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KQEAgLTg2OCw3ICs4NzgsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQogICAgICAgICAgICAgLy8gNS40LjYgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90
IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1
c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBv
biB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1l
bnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YWRkVGV4dFRyYWNrKG5ld1Rl
eHRUcmFjay5jb3B5UmVmKCkpOwogCiAgICAgICAgICAgICBtX3RleHRDb2RlY3MuYXBwZW5kKHRl
eHRUcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOwogCkBAIC0xMDIzLDkgKzEwMzMsMjQg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYgdHJhY2spCiAKICAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250
YWlucyh0cmFjaykpCiAgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKK30KIAotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVs
ZW1lbnQoKS0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCh0cmFjayk7Cit2b2lkIFNvdXJjZUJ1
ZmZlcjo6dmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQoreworICAgIGlm
IChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAg
ICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlcjo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAg
ICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisg
ICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2sp
Cit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJh
Y2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYg
dHJhY2spCkBAIC0xMDUwLDkgKzEwNzUsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKIAogICAgIGlmIChtX2F1ZGlvVHJh
Y2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAgbV9hdWRpb1Ry
YWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQogCi0gICAgaWYgKCFpc1JlbW92ZWQoKSkK
LSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQodHJhY2spOwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRp
b1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQo
QXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1Ry
YWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFuZ3VhZ2VD
aGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1f
YXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2No
ZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKQEAgLTEwNzcsMzkgKzExMTcsMTggQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiAKICAg
ICBpZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAg
ICAgICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQotICAgIGlmICghaXNS
ZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrTW9k
ZUNoYW5nZWQodHJhY2spOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmICghaXNSZW1v
dmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrQWRkQ3Vl
KHRyYWNrLCBjdWUpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBjdWVMaXN0KQotewotICAg
IGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4
dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3VlTGlzdCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyOjp0
ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17
Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYgdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmIGN1ZUxpc3QpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrJiB0cmFjaykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3Nv
dXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZUxpc3Qp
OworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykp
CisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFj
aykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKKyAgICBpZiAobV90ZXh0VHJhY2tz
ICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3RleHRUcmFja3Mt
PnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikKQEAgLTExMTks
OCArMTEzOCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KQogewotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlv
bkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc291cmNlLT5zZXREdXJhdGlvbkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBp
ZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0
aW9uKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIaWdoZXN0
UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CmluZGV4IGVlY2QzMWJmYzVmNGJhMmYzZjY2MDgwN2RlYTYyNTE3Nzc1YmE3NmIuLjg4OGQyZDZl
OThkYWJmOTdkYWJlMWM5MWYyNDhiMTA4NWQ2OTJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtNjksNiArNjksOSBAQCBj
bGFzcyBTb3VyY2VCdWZmZXIgZmluYWwKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNv
dXJjZUJ1ZmZlcik7CiBwdWJsaWM6CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFy
Z2V0OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9y
eTsKKwogICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7
CiAKQEAgLTEzNSw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyAgICB2b2lkKiBvcGFxdWVSb290KCkgeyBy
ZXR1cm4gdGhpczsgfQorCiBwcml2YXRlOgogICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtMTYxLDE1ICsxNjYsMjAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKICAgICB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7Ci0gICAgLy8gVmlkZW9UcmFja0NsaWVudAot
ICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCBhdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZv
aWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBh
dWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKwogICAgIC8vIFRl
eHRUcmFja0NsaWVudAogICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikg
ZmluYWw7CiAgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUo
VGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJh
Y2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisKKyAgICAvLyBWaWRlb1RyYWNr
Q2xpZW50CisgICAgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFs
OworICAgIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAg
ICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFsOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQpAQCAtMjA5LDYgKzIxOSw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEFwcGVuZE1vZGUgbV9tb2RlIHsgQXBwZW5kTW9kZTo6U2VnbWVu
dHMgfTsKIAorICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7
CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggOGY5OTBkYWYyYTRhNWZiZTRj
NDYxMTIwZDIwY2ZmOGJkMmVmODkyMy4uMDdkNDkyYzQwZjNjZmQ2M2MxN2NiZDZjMWRkZWMzZjAy
YTczNzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbApAQCAtMzgsNiArMzgsNyBAQAogICAgIENvbmRpdGlvbmFsPU1FRElB
X1NPVVJDRSwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlhU291cmNlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU291cmNlQnVmZmVyIDogRXZlbnRUYXJnZXQgewogICAg
IGF0dHJpYnV0ZSBBcHBlbmRNb2RlIG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmgKaW5kZXggZWY3MmQ5YjdhYWJkYzk5ZTczMGZmZGVlODBlMTAxMzU5ZjBh
ZmQwZi4uZjA1OGM5OWQ5MzVjMWY3M2JhOWY1OTE4NWI1MTRhNzkwNGQ3NDU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaApAQCAtMzYsMTMgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFja0Jhc2UmKTsKIAotaW5saW5lIHZvaWQqIHJv
b3QoVHJhY2tCYXNlKiB0cmFjaykKLXsKLSAgICBpZiAodHJhY2stPmVsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPmVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHRyYWNrOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiZTAxMmY5N2IwMDQ4OTQy
YTEwMGUzMjAzNGFhMGI3ZmQwYmM5ODllLi42OWZkMjFlNjJjZGEyNDUyMTg1NmZjYzhlNWQ2YmFl
N2Q3MzhlMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTQ1MCw2ICs0NTAsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9zaG91bGRB
dWRpb1BsYXliYWNrUmVxdWlyZVVzZXJHZXN0dXJlKGRvY3VtZW50LnRvcERvY3VtZW50KCkuYXVk
aW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkKICAgICAsIG1fc2hvdWxkVmlkZW9QbGF5YmFja1JlcXVpcmVVc2VyR2VzdHVy
ZShkb2N1bWVudC50b3BEb2N1bWVudCgpLnZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KCkgJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgLCBtX3ZvbHVtZUxv
Y2tlZChkZWZhdWx0Vm9sdW1lTG9ja2VkKCkpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihb
dGhpc10geyByZXR1cm4gb3BhcXVlUm9vdCgpOyB9KQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgLCBtX3JlbW90ZShSZW1vdGVQbGF5YmFjazo6Y3JlYXRlKCp0aGlz
KSkKICNlbmRpZgpAQCAtNTQ0LDEzICs1NDUsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlQ29u
ZmlndXJhdGlvbkNoYW5nZU9ic2VydmVyKCp0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKG1fYXVk
aW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyRWxlbWVudCgpOwotICAgIGlm
IChtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJFbGVtZW50KCk7Ci0g
ICAgaWYgKG1fdmlkZW9UcmFja3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyRWxlbWVu
dCgpOwotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBpZiAoaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZEV2ZW50KSB8fCBtX3JlbW90ZS0+aGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzKCkp
IHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGZh
bHNlOwpAQCAtMTg2OSw2ICsxODYzLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9U
cmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9B
bmRWaWRlbygpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tLaW5kQ2hh
bmdlZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1
ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNr
TGFiZWxDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tz
ICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1f
YXVkaW9UcmFja3MgJiYgbV9hdWRpb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBt
X2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAg
cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKIHsKICAgICBib29sIHRyYWNrSXNM
b2FkZWQgPSB0cnVlOwpAQCAtMTg4NCw4ICsxOTAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogICAgIH0KIAogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFkZGVkIHRyYWNrLCBjcmVhdGUgdGhlIGxpc3Qgb2YgdGV4
dCB0cmFja3MuCi0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcyA9
IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGVuc3VyZVRleHRUcmFja3MoKTsKIAog
ICAgIC8vIE1hcmsgdGhpcyB0cmFjayBhcyAiY29uZmlndXJlZCIgc28gY29uZmlndXJlVGV4dFRy
YWNrcyB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4uCiAgICAgdHJhY2suc2V0SGFzQmVlbkNv
bmZpZ3VyZWQodHJ1ZSk7CkBAIC0xOTA0LDYgKzE5MjAsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogI2VuZGlmCiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0
cmFjaykKK3sKKyAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlv
bnMgJiYgdHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNr
Lm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCisgICAgICAgIHRyYWNrLnNldE1v
ZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworCisgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBt
X3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TGFiZWxDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRyYWNrcyAm
JiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRy
YWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJh
Y2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmICh0cmFjay50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgcmVtb3ZlVGV4dFRyYWNr
KHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKQEAgLTE5MTEsMTAgKzE5NTQsMjcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sm
IHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9BbmRWaWRlbygpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykK
IHsKLSAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNrLm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCi0gICAgICAgIHRyYWNrLnNldE1vZGUoVGV4
dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYWJl
bENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYg
bV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV92aWRl
b1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICByZW1v
dmVWaWRlb1RyYWNrKHRyYWNrKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkln
bm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKQpAQCAtNDA4NywxNSArNDE0NywxNCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIHNldEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0
YXRlKEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRlOjpQcmV2ZW50ZWRBdXRvcGxheSk7CiAgICAg
fQogCi0gICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoKnRoaXMsIHRyYWNrKSk7
CisgICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0cmFjaykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQogewogICAgIC8v
IDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKICAgICAvLyAxLiBBc3Nv
Y2lhdGUgdGhlIHJlbGV2YW50IGRhdGEgd2l0aCBhIG5ldyB0ZXh0IHRyYWNrIGFuZCBpdHMgY29y
cmVzcG9uZGluZyBuZXcgVGV4dFRyYWNrIG9iamVjdC4KLSAgICBhdXRvIHRleHRUcmFjayA9IElu
YmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCksICp0aGlzLCB0cmFjayk7Ci0gICAgdGV4
dFRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQoKSwgdHJhY2spOwogCiAg
ICAgLy8gMi4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIGtpbmQsIGxhYmVsLCBhbmQgbGFuZ3Vh
Z2UgYmFzZWQgb24gdGhlIHNlbWFudGljcyBvZiB0aGUgcmVsZXZhbnQgZGF0YSwKICAgICAvLyBh
cyBkZWZpbmVkIGJ5IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9uLiBJZiB0aGVyZSBpcyBubyBs
YWJlbCBpbiB0aGF0IGRhdGEsIHRoZW4gdGhlIGxhYmVsIG11c3QKQEAgLTQxMjUsNyArNDE4NCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKLSAg
ICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSgqdGhpcywgdHJhY2spKTsKKyAgICBh
dXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0cmFjayk7CisgICAgYWRkVmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrKQpAQCAtNDE0OCw2ICs0MjA4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFJlZjxBdWRpb1RyYWNrPiYmIHRyYWNrKQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xpZW50KCp0aGlzKTsKICAg
ICBlbnN1cmVBdWRpb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQx
NjUsNiArNDIyNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFJlZjxU
ZXh0VHJhY2s+JiYgdHJhY2spCiAgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IHBh
Z2UtPmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuY2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZW5zdXJlVGV4
dFRyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQxNzMsMTIgKzQyMzUs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNr
PiYmIHRyYWNrKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dn
ZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICBlbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNr
KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhSZWY8QXVk
aW9UcmFjaz4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICB0cmFj
ay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIG1fYXVkaW9UcmFja3MtPnJlbW92ZSh0cmFjay5n
ZXQoKSk7CiB9CiAKQEAgLTQxODcsMTQgKzQyNTAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2soUmVmPFRleHRUcmFjaz4mJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2
ZW4KICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSB7ICp0aGlzIH07CiAgICAgaWYg
KGF1dG8gY3VlcyA9IG1ha2VSZWZQdHIodHJhY2stPmN1ZXMoKSkpCiAgICAgICAgIHRleHRUcmFj
a1JlbW92ZUN1ZXModHJhY2ssICpjdWVzKTsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAg
ICB0cmFjay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIGlmIChtX3RleHRUcmFja3MpCiAgICAg
ICAgIG1fdGV4dFRyYWNrcy0+cmVtb3ZlKHRyYWNrLCBzY2hlZHVsZUV2ZW50KTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNrPiYmIHRy
YWNrKQogewotICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOworICAgIHRyYWNrLT5jbGVhckNsaWVu
dCgqdGhpcyk7CiAgICAgbV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKIH0KIApAQCAtNDIz
MSw3ICs0Mjk0LDcgQEAgRXhjZXB0aW9uT3I8VGV4dFRyYWNrJj4gSFRNTE1lZGlhRWxlbWVudDo6
YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QKIAogICAgIC8vIDUuIENyZWF0
ZSBhIG5ldyB0ZXh0IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5ldyBvYmplY3QsIGFuZCBz
ZXQgaXRzIHRleHQgdHJhY2sga2luZCB0byBraW5kLCBpdHMgdGV4dAogICAgIC8vIHRyYWNrIGxh
YmVsIHRvIGxhYmVsLCBpdHMgdGV4dCB0cmFjayBsYW5ndWFnZSB0byBsYW5ndWFnZS4uLgotICAg
IGF1dG8gdHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgdGhpcywga2luZCwg
ZW1wdHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlKTsKKyAgICBhdXRvIHRyYWNrID0gVGV4dFRy
YWNrOjpjcmVhdGUoJmRvY3VtZW50KCksIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBsYW5n
dWFnZSk7CiAgICAgYXV0byYgdHJhY2tSZWZlcmVuY2UgPSB0cmFjay5nZXQoKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICB0cmFja1JlZmVyZW5jZS5zZXRMb2dnZXIobG9nZ2VyKCks
IGxvZ0lkZW50aWZpZXIoKSk7CkBAIC00MjU0LDI0ICs0MzE3LDMxIEBAIEV4Y2VwdGlvbk9yPFRl
eHRUcmFjayY+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0CiAKIEF1ZGlvVHJhY2tMaXN0JiBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVBdWRp
b1RyYWNrcygpCiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJh
Y2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghbV9hdWRpb1RyYWNr
cykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVkaW9U
cmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7CisgICAg
fQogCiAgICAgcmV0dXJuICptX2F1ZGlvVHJhY2tzOwogfQogCiBUZXh0VHJhY2tMaXN0JiBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNr
cykKLSAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFr
UHRyKHRoaXMpLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX3RleHRUcmFja3MpIHsKKyAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNr
TGlzdDo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
KyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVSb290
UHJvdmlkZXIpOworICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0aW9uTWVk
aWFUaW1lKCkpOworICAgIH0KIAogICAgIHJldHVybiAqbV90ZXh0VHJhY2tzOwogfQogCiBWaWRl
b1RyYWNrTGlzdCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlVmlkZW9UcmFja3MoKQogewotICAg
IGlmICghbV92aWRlb1RyYWNrcykKLSAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tM
aXN0OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92
aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zZXRPcGFxdWVS
b290T2JzZXJ2ZXIobV9vcGFxdWVSb290UHJvdmlkZXIpOworICAgIH0KIAogICAgIHJldHVybiAq
bV92aWRlb1RyYWNrczsKIH0KQEAgLTUwNDcsNiArNTExNyw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoKQogICAgIGlmIChub3cgPiBkdXIpCiAg
ICAgICAgIHNlZWtJbnRlcm5hbChkdXIpOwogCisgICAgaWYgKG1fdGV4dFRyYWNrcykKKyAgICAg
ICAgbV90ZXh0VHJhY2tzLT5zZXREdXJhdGlvbihkdXIpOworCiAgICAgZW5kUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCA2ZTFjOWY5ZDU2YjExZDE2MTZiZDY3MTFmOTc3ZWI1ZGZlMzEyYmY4Li4zMmVk
Y2NkODA5NDc1OGM4YzRiNDI2NjJjY2Y3MWY0ZjRiMjY4ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlZpc2liaWxp
dHlDaGFuZ2VDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMp
CkBAIC0zODMsMTcgKzM4NCwyOCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50
CiAgICAgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOwor
ICAgIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2
b2lkIGF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQg
YXVkaW9UcmFja0xhbmd1YWdlQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB3
aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrJikgZmluYWw7CiAKICAgICAvLyBUZXh0VHJh
Y2tDbGllbnQKLSAgICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNr
JiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFj
a0xhYmVsQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0xhbmd1
YWdlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMo
VGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOworICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmlu
YWw7CisgICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikg
ZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNr
Q3VlJikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIGZp
bmFsOwogCiAgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZvaWQgdmlkZW9UcmFja0tpbmRD
aGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvVHJhY2tMYWJlbENoYW5n
ZWQoVmlkZW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdl
ZChWaWRlb1RyYWNrJikgZmluYWw7CiAgICAgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrKFZpZGVv
VHJhY2smKSBmaW5hbDsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24qKTsKQEAgLTExNTcsNiArMTE2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEJsb2I+IG1fYmxvYjsKICAgICBVUkwgbV9ibG9iVVJMRm9yUmVhZGluZzsKICAgICBNZWRp
YVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKKyAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1f
b3BhcXVlUm9vdFByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgYm9vbCBtX2hhc05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCBiODY1YzcyYTJkM2RjNDliZmU3YTZlNDE0
MTc1NWQ4OWJmY2U5YTdkLi4xYmYxOWFlY2Q3MWM1YzVlYWM2OGZmYWM2ZDMyYjk4N2ExMTUwZTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQogewogICAgIGlmICht
X3RyYWNrKSB7CiAgICAgICAgIG1fdHJhY2stPmNsZWFyRWxlbWVudCgpOwotICAgICAgICBtX3Ry
YWNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7
CiAgICAgfQogfQogCkBAIC0xNTIsNiArMTUyLDcgQEAgTG9hZGFibGVUZXh0VHJhY2smIEhUTUxU
cmFja0VsZW1lbnQ6OnRyYWNrKCkKICAgICAgICAgaWYgKCFUZXh0VHJhY2s6OmlzVmFsaWRLaW5k
S2V5d29yZChraW5kKSkKICAgICAgICAgICAgIGtpbmQgPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKTsKICAgICAgICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUoKnRo
aXMsIGtpbmQsIGxhYmVsKCksIHNyY2xhbmcoKSk7CisgICAgICAgIG1fdHJhY2stPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgfQogICAgIEFTU0VSVChtX3RyYWNrLT50cmFja0VsZW1lbnQoKSA9PSB0
aGlzKTsKIApAQCAtMjk5LDQ0ICszMDAsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTFRyYWNr
RWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdAogICAgIHJl
dHVybiBudWxsQXRvbSgpOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0tp
bmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQodHJhY2sp
OwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayYgdHJhY2spCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayYpCiB7CiAgICAgLy8gU2luY2Ugd2UndmUgbW92ZWQgdG8gYSBuZXcgcGFyZW50
LCB3ZSBtYXkgbm93IGJlIGFibGUgdG8gbG9hZC4KICAgICBpZiAocmVhZHlTdGF0ZSgpID09IEhU
TUxUcmFja0VsZW1lbnQ6Ok5PTkUpCiAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwotCi0gICAgaWYg
KGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNr
TW9kZUNoYW5nZWQodHJhY2spOwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFj
a0FkZEN1ZXMoVGV4dFRyYWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgY3VlcykK
LXsKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcGFyZW50
LT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKLX0KLSAgICAKLXZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0
VHJhY2tDdWVMaXN0JiBjdWVzKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVu
dCgpKQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZXMpOwot
fQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNr
JiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3VlKHRyYWNrLCBjdWUp
OwotfQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4
dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50
ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRy
YWNrLCBjdWUpOwogfQogCiBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVu
dDo6bWVkaWFFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmgKaW5kZXggZjc4OTg5OGQxZjdkZDcwZTM2NTcxOThhMjkxYzhkYjQyNzJhOGFjYy4uYjg2MmQ0
OWE0YTkyYzMzNjczNTU4OTFjYjY0Njg1ZTY4MDE1ZTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmgKQEAgLTg0LDExICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
ZXh0VHJhY2tDbGllbnQKICAgICB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYp
IGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBmaW5hbDsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwg
Y29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVt
b3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5M
b2FkVVJMKGNvbnN0IFVSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmNwcAppbmRleCBjYWI3NzgyMWE5NDdjZDhlYzdhMjIwOTVmNzlhMjI2OTlmZDBjMzMzLi4zY2I3
MThkM2RjMjdlNTgzYjVhNWRmMTA5M2EwMzY1MjdjMDJlY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tM
aXN0LmgiCiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc1LDkgKzc1LDggQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVu
dGFyeUtleXdvcmQoKQogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1BdWRpb1RyYWNrOjpB
dWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVudCwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKLSAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpBdWRpb1Ry
YWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0
ZS5sYW5ndWFnZSgpKQotICAgICwgbV9jbGllbnQoJmNsaWVudCkKK0F1ZGlvVHJhY2s6OkF1ZGlv
VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tC
YXNlOjpBdWRpb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCks
IHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkK
ICAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogewpAQCAtMTA3LDYgKzEw
NiwxNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OnNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICBzZXRJZChtX3ByaXZhdGUtPmlkKCkpOwogfQogCit2b2lkIEF1ZGlv
VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQoreworICAgIFRy
YWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOworCisgICAgbV9jbGllbnRzLmZvckVhY2go
WyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYW5ndWFnZUNo
YW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCiBib29sIEF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5k
KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZSA9PSBh
bHRlcm5hdGl2ZUtleXdvcmQoKQpAQCAtMTIzLDYgKzEzMSwyMSBAQCB2b2lkIEF1ZGlvVHJhY2s6
OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ByaXZh
dGUtPnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChh
dXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCgq
dGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6YWRkQ2xpZW50KEF1ZGlvVHJh
Y2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGll
bnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6
Y2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2Ns
aWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwog
fQogCiBzaXplX3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpIGNvbnN0CkBAIC0xMzcs
MTggKzE2MCwyNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OmVuYWJsZWRDaGFuZ2VkKGJvb2wgZW5hYmxl
ZCkKIAogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJh
Y2s6OmlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBzZXRJZChpZCk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LmF1ZGlvVHJhY2tJZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlv
VHJhY2s6OmxhYmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKIHsKICAgICBzZXRM
YWJlbChsYWJlbCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQp
IHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoKnRoaXMpOworICAgIH0p
OwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5n
JiBsYW5ndWFnZSkKQEAgLTE1OCwxMSArMTg4LDkgQEAgdm9pZCBBdWRpb1RyYWNrOjpsYW5ndWFn
ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgQXVkaW9UcmFjazo6
d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtZWRpYUVsZW1l
bnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBl
bGVtZW50LT5yZW1vdmVBdWRpb1RyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92ZUF1ZGlvVHJh
Y2soKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9t
UHJpdmF0ZSgpCkBAIC0xOTUsMTEgKzIyMyw2IEBAIHZvaWQgQXVkaW9UcmFjazo6dXBkYXRlS2lu
ZEZyb21Qcml2YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgQXVkaW9UcmFjazo6c2V0TWVkaWFFbGVt
ZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6
OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogdm9pZCBBdWRpb1RyYWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5oCmluZGV4IDk5YTQ1MzI4YzI5ZWEwYjJjNWVjZjQyN2YxN2E0NWMwNDQxN2ZkZjcuLjM3NTEw
YThjZDJmOGY0MDE1MzU4OTI1ZGY5OWRhZWM5OGYxOTYwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFjay5oCkBAIC0zMCwyMiArMzAsMjkgQEAKIAogI2luY2x1ZGUgIkF1ZGlv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1dl
YWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFjazsK
K2NsYXNzIEF1ZGlvVHJhY2tMaXN0OwogCi1jbGFzcyBBdWRpb1RyYWNrQ2xpZW50IHsKK2NsYXNz
IEF1ZGlvVHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXVkaW9UcmFja0NsaWVu
dD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7
Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFj
ayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrSWRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNr
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9U
cmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1Ry
YWNrJikgeyB9CiB9OwogCiBjbGFzcyBBdWRpb1RyYWNrIGZpbmFsIDogcHVibGljIE1lZGlhVHJh
Y2tCYXNlLCBwcml2YXRlIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1
ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNr
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
ZGlvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXVkaW9UcmFjayhjb250ZXh0LCB0cmFja1ByaXZhdGUpKTsKICAgICB9CiAgICAgdmly
dHVhbCB+QXVkaW9UcmFjaygpOwogCkBAIC01OSwyMSArNjYsMjIgQEAgcHVibGljOgogICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQg
c2V0RW5hYmxlZChjb25zdCBib29sKTsKIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7
IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBhZGRDbGllbnQoQXVkaW9UcmFja0Ns
aWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYpOwogCiAgICAg
c2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKSBjb25zdDsKIAogICAgIGNvbnN0IEF1ZGlvVHJhY2tQ
cml2YXRlJiBwcml2YXRlVHJhY2soKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KICAgICB2
b2lkIHNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgc2V0TWVkaWFF
bGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZp
bmFsOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50
JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICBBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBBdWRpb1RyYWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBpc1ZhbGlkS2luZChjb25z
dCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAKQEAgLTkyLDcgKzEwMCw4IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1
ZGlvVHJhY2siOyB9CiAjZW5kaWYKIAotICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xpZW50IHsg
bnVsbHB0ciB9OworICAgIFdlYWtQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja0xpc3Q7
CisgICAgV2Vha0hhc2hTZXQ8QXVkaW9UcmFja0NsaWVudD4gbV9jbGllbnRzOwogICAgIFJlZjxB
dWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAppbmRleCAzOTM0
NjY2ZjVmYzA2MjE3ZDNlM2VlOWM1ZTAxZDRjYTczMWMwZWZhLi5iOTQzY2Y1NWVkOWYxNTkzZTcz
MzI3NWQ3OWNjNjAyOGIwMDI2MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwKQEAgLTI2LDggKzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCisgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFjayB7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKaW5kZXggNjQwNTgxNzFkNDVhODgxZWYxZTBk
YzZkOGVlM2QzNDMzZDU2MWRjYS4uMzNhMDdkNGVjNzFkMTg4YmI5NTg3ZDBkOWJhODgyN2EzOTYx
NDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAK
QEAgLTMwLDEyICszMCwxMSBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAKICNpbmNs
dWRlICJBdWRpb1RyYWNrLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChXZWFrUHRy
PEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgOiBUcmFja0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitBdWRpb1RyYWNrTGlz
dDo6QXVkaW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IFRyYWNrTGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3QpCiB7
CiB9CiAKQEAgLTUzLDEzICs1MiwyMSBAQCB2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUmVm
PEF1ZGlvVHJhY2s+JiYgdHJhY2spCiAgICAgfQogICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChp
bnNlcnRpb25JbmRleCwgdHJhY2sucHRyKCkpOwogCi0KLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRp
YUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwot
ICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJh
Y2stPnRyYWNrTGlzdCgpKQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAog
ICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKK3ZvaWQgQXVk
aW9UcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQp
Cit7CisgICAgYXV0byYgYXVkaW9UcmFjayA9IGRvd25jYXN0PEF1ZGlvVHJhY2s+KHRyYWNrKTsK
KyAgICBpZiAoYXVkaW9UcmFjay50cmFja0xpc3QoKSA9PSB0aGlzKQorICAgICAgICBhdWRpb1Ry
YWNrLmNsZWFyVHJhY2tMaXN0KCk7CisKKyAgICBUcmFja0xpc3RCYXNlOjpyZW1vdmUodHJhY2ss
IHNjaGVkdWxlRXZlbnQpOworfQorCiBBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKaW5kZXgg
OGFlMDM0MjAxNDJmZTFjZjYzODBlZmQzZGJlODEyMmM0YjQ0OGQ3ZS4uOTVmZDkwYjRjYWJiYmQ4
MzgwYzVhYzBiNTM5OThmMTRhY2FmNDVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBBdWRpb1RyYWNrOwogCiBj
bGFzcyBBdWRpb1RyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVk
aWFFbGVtZW50PiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYo
Km5ldyBBdWRpb1RyYWNrTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5l
ZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CkBAIC00OCwxMiArNDgsMTMgQEAg
cHVibGljOgogICAgIEF1ZGlvVHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAg
IEF1ZGlvVHJhY2sqIGxhc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEp
OyB9CiAgICAgdm9pZCBhcHBlbmQoUmVmPEF1ZGlvVHJhY2s+JiYpOworICAgIHZvaWQgcmVtb3Zl
KFRyYWNrQmFzZSYsIGJvb2wgc2NoZWR1bGVFdmVudCA9IHRydWUpIGZpbmFsOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEF1ZGlvVHJhY2tMaXN0KFdlYWtQ
dHI8SFRNTE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBBdWRp
b1RyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiB9OwpAQCAtNjEsNCArNjIsOCBAQCBz
dGF0aWNfYXNzZXJ0KHNpemVvZihBdWRpb1RyYWNrTGlzdCkgPT0gc2l6ZW9mKFRyYWNrTGlzdEJh
c2UpLCAiIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVybiB0cmFj
a0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OkF1ZGlvVHJhY2tMaXN0OyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCmluZGV4IGM0
NTU0Y2YyZDIwN2Y2M2ZhN2UzOTlkYWU0NzQ5ZTZjOTEyNzQ3ZGEuLjhiZTVkMGYxYmU4NTZmN2Ni
MTMyODNiMzEyOTM1ZDNlNTM1NTNmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaWRsCkBAIC0yNiw4ICsyNiw2IEBACiBbCiAgICAgQWN0aXZlRE9NT2Jq
ZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bEVsZW1lbnRSb290LAotICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBvc2VkPVdp
bmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgOiBFdmVudFRhcmdldCB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKaW5kZXggODM4MDIzMmI3OTI4
YTI3YjkzMjM2ODA2YzAyODUyOWYwN2JiZWE4MC4uZmE3OGYzYmJlMjkxOGRjYWE4Mzg0OTc3Yzkz
NzlhYTQ4NWQ0NGQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZERhdGFUZXh0VHJhY2suY3BwCkBAIC0zMCwyMiArMzAsMjIgQEAKICNpZiBFTkFCTEUoVklERU8p
CiAKICNpbmNsdWRlICJEYXRhQ3VlLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kRGF0YVRleHRUcmFj
ayk7CiAKLWlubGluZSBJbmJhbmREYXRhVGV4dFRyYWNrOjpJbmJhbmREYXRhVGV4dFRyYWNrKERv
Y3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFj
a1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwg
Y2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kRGF0YVRleHRUcmFjazo6SW5iYW5k
RGF0YVRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQcml2
YXRlKQogewogfQogCi1SZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gSW5iYW5kRGF0YVRleHRUcmFj
azo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmREYXRhVGV4dFRy
YWNrPiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJhY2sg
PSBhZG9wdFJlZigqbmV3IEluYmFuZERhdGFUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJh
Y2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZERh
dGFUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkpOwogICAgIHRleHRUcmFjay0+c3Vz
cGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KQEAgLTcwLDggKzcwLDkg
QEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgbWVkaWFFbGVtZW50KCkpIHsKLSAgICAg
ICAgY3VlLT5zZXRFbmRUaW1lKG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpKTsK
KyAgICBhdXRvKiB0ZXh0VHJhY2tMaXN0ID0gZG93bmNhc3Q8VGV4dFRyYWNrTGlzdD4odHJhY2tM
aXN0KCkpOworICAgIGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgdGV4dFRyYWNrTGlz
dCAmJiB0ZXh0VHJhY2tMaXN0LT5kdXJhdGlvbigpLmlzVmFsaWQoKSkgeworICAgICAgICBjdWUt
PnNldEVuZFRpbWUodGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKSk7CiAgICAgICAgIG1faW5jb21w
bGV0ZUN1ZU1hcC5hcHBlbmQoJmN1ZS5nZXQoKSk7CiAgICAgfQogCkBAIC0xMDEsOCArMTAyLDkg
QEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYKICAgICBjdWUtPndpbGxDaGFuZ2UoKTsKIAogICAg
IE1lZGlhVGltZSBlbmQgPSBpbkVuZDsKLSAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgp
ICYmIG1lZGlhRWxlbWVudCgpKQotICAgICAgICBlbmQgPSBtZWRpYUVsZW1lbnQoKS0+ZHVyYXRp
b25NZWRpYVRpbWUoKTsKKyAgICBhdXRvKiB0ZXh0VHJhY2tMaXN0ID0gZG93bmNhc3Q8VGV4dFRy
YWNrTGlzdD4odHJhY2tMaXN0KCkpOworICAgIGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkg
JiYgdGV4dFRyYWNrTGlzdCAmJiB0ZXh0VHJhY2tMaXN0LT5kdXJhdGlvbigpLmlzVmFsaWQoKSkK
KyAgICAgICAgZW5kID0gdGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKTsKICAgICBlbHNlCiAgICAg
ICAgIG1faW5jb21wbGV0ZUN1ZU1hcC5yZW1vdmVGaXJzdChjdWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCmluZGV4IGY2YjUwZjQ3YTlh
NDUyNDY2M2U1NmJlMWI2MWI2MDM3ODIzNmYzMTQuLjI1MDE4NGFhNzUwYWM2ODM0MWRjNjFhMjg5
N2RmYzEyYjA4NWExODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kRGF0YVRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgRGF0YUN1ZTsKIGNsYXNz
IEluYmFuZERhdGFUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEluYmFuZERhdGFUZXh0VHJhY2spOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8
SW5iYW5kRGF0YVRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSYpOwogICAgIHZpcnR1YWwgfkluYmFuZERhdGFUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToK
LSAgICBJbmJhbmREYXRhVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIEluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1lbnQm
LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICB2b2lkIGFkZERhdGFDdWUoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNp
Z25lZCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDU1NmU0NDllODc2MmFmMTUwNWM5MTA5MDM2N2Vl
MTU4ZGQzYTAyOWYuLjIzOTFkNWVkZTU3MjYwMWFiNzk0ZDMyNTVhNmZlOWUxNWQ0YjgzZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRy
YWNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRlICJWVFRSZWdpb25MaXN0Lmgi
CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBA
IC02MywxNCArNjQsMTQgQEAgdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpyZW1vdmUoVGV4
dFRyYWNrQ3VlJiBwdWJsaWNDdWUpCiAgICAgICAgIG1fZGF0YVRvQ3VlTWFwLnJlbW92ZShjdWVJ
ZGVudGlmaWVyKTsKIH0KIAotaW5saW5lIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OkluYmFuZEdl
bmVyaWNUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDogSW5iYW5kVGV4
dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkKK2lubGluZSBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogSW5iYW5kVGV4dFRy
YWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpCiB7CiB9CiAKLVJlZjxJbmJhbmRHZW5lcmljVGV4
dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQorUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKIHsKLSAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5k
R2VuZXJpY1RleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICBh
dXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhkb2N1
bWVudCwgdHJhY2tQcml2YXRlKSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsK
ICAgICByZXR1cm4gdGV4dFRyYWNrOwogfQpAQCAtODMsOCArODQsOCBAQCB2b2lkIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKFRleHRUcmFja0N1ZUdlbmVyaWMm
IGN1ZSwgSW5iYQogCiAgICAgY3VlLnNldFN0YXJ0VGltZShpbmJhbmRDdWUuc3RhcnRUaW1lKCkp
OwogICAgIE1lZGlhVGltZSBlbmRUaW1lID0gaW5iYW5kQ3VlLmVuZFRpbWUoKTsKLSAgICBpZiAo
ZW5kVGltZS5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAg
ZW5kVGltZSA9IG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpOworICAgIGlmIChl
bmRUaW1lLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHRleHRUcmFja0xpc3QoKSAmJiB0ZXh0VHJh
Y2tMaXN0KCktPmR1cmF0aW9uKCkuaXNWYWxpZCgpKQorICAgICAgICBlbmRUaW1lID0gdGV4dFRy
YWNrTGlzdCgpLT5kdXJhdGlvbigpOwogICAgIGN1ZS5zZXRFbmRUaW1lKGVuZFRpbWUpOwogICAg
IGN1ZS5zZXRUZXh0KGluYmFuZEN1ZS5jb250ZW50KCkpOwogICAgIGN1ZS5zZXRJZChpbmJhbmRD
dWUuaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5oCmluZGV4IGZlOTUzNDhkM2ZiYjFiODM2NDA4NTc0YjI3MDEwYTc2ZDNhMzFi
MGQuLjQ1OTdiMmExYzZmNzNiNTY5MWI0NzU4NzEzNTQyMzI3MjkyZTU4YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCkBAIC01
MywxMSArNTMsMTEgQEAgcHJpdmF0ZToKIGNsYXNzIEluYmFuZEdlbmVyaWNUZXh0VHJhY2sgZmlu
YWwgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrLCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVudCB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmRHZW5lcmljVGV4dFRyYWNrKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IGNyZWF0ZShEb2N1
bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBz
dGF0aWMgUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmRHZW5lcmljVGV4dFRyYWNr
KCk7CiAKIHByaXZhdGU6Ci0gICAgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhEb2N1bWVudCYsIFRl
eHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAg
dm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSBmaW5hbDsKICAgICB2b2lkIHVw
ZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCmluZGV4IDljZmExNGRmMmFlOTU4NjZj
NTNiOGIxMDNiNmQ4NTlkNGJmZDVkOWMuLmM2ZmVhMzVlZDM4YjA0ODYwM2QyY2U4MWRmYWJiMDI2
MTg4NDIwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJhbmREYXRhVGV4dFRyYWNrLmgiCiAj
aW5jbHVkZSAiSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRU
cmFja1ByaXZhdGUuaCIKQEAgLTM5LDI0ICszOCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJhbmRUZXh0VHJhY2spOwogCi1SZWY8SW5i
YW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCitSZWY8SW5iYW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKIHsK
ICAgICBzd2l0Y2ggKHRyYWNrUHJpdmF0ZS5jdWVGb3JtYXQoKSkgewogICAgIGNhc2UgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0OjpEYXRhOgotICAgICAgICByZXR1cm4gSW5iYW5k
RGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7Cisg
ICAgICAgIHJldHVybiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIHRyYWNr
UHJpdmF0ZSk7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6Okdl
bmVyaWM6Ci0gICAgICAgIHJldHVybiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoZG9j
dW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICBjYXNlIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6V2ViVlRUOgotICAgICAgICByZXR1cm4g
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2
YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKGRvY3Vt
ZW50LCB0cmFja1ByaXZhdGUpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBhdXRvIHRleHRUcmFjayA9IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwg
Y2xpZW50LCB0cmFja1ByaXZhdGUpOworICAgIGF1dG8gdGV4dFRyYWNrID0gSW5iYW5kRGF0YVRl
eHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpOwogICAgIHRleHRUcmFjay0+
c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KIAotSW5iYW5kVGV4
dFRyYWNrOjpJbmJhbmRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGll
bnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDog
VGV4dFRyYWNrKCZkb2N1bWVudCwgJmNsaWVudCwgZW1wdHlBdG9tKCksIHRyYWNrUHJpdmF0ZS5p
ZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCksIEluQmFu
ZCkKK0luYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogVGV4dFRyYWNrKCZk
b2N1bWVudCwgZW1wdHlBdG9tKCksIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFi
ZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCksIEluQmFuZCkKICAgICAsIG1fcHJpdmF0ZSh0
cmFja1ByaXZhdGUpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CkBAIC0xNTks
MTAgKzE1OCw5IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjp3aWxsUmVtb3Zl
KCkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKG1lZGlhRWxlbWVudCgpLmdldCgp
KTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50LT5yZW1v
dmVUZXh0VHJhY2soKnRoaXMpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xp
ZW50KSB7CisgICAgICAgIGNsaWVudC53aWxsUmVtb3ZlVGV4dFRyYWNrKCp0aGlzKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCkBA
IC0xOTcsMTQgKzE5NSw2IEBAIE1lZGlhVGltZSBJbmJhbmRUZXh0VHJhY2s6OnN0YXJ0VGltZVZh
cmlhbmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdGFydFRpbWVWYXJpYW5jZSgp
OwogfQogCi12b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNldE1lZGlhRWxlbWVu
dChlbGVtZW50KTsKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBtX3ByaXZhdGUtPnNl
dExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKLSNlbmRpZgotfQotCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TG9nZ2VyKGNvbnN0
IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggYmIxMmMxNTlkZTc0Zjky
OTQ1MzY5NTQxZDc4NzJlNmM1YzFhY2I0Ny4uZjI4YTFkNDg1YTU5OWI2ODljMGY2MTA0ZDZmM2Y4
NDEwYzVlMDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRl
eHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmRUZXh0VHJhY2spOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQm
LCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGlj
IFJlZjxJbmJhbmRUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2soKTsKIAogICAgIGJvb2wgaXND
bG9zZWRDYXB0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDksMTMgKzQ5LDEyIEBAIHB1Ymxp
YzoKICAgICBBdG9tU3RyaW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Jik7Ci0gICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Pikg
b3ZlcnJpZGU7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIo
Y29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoK
LSAgICBJbmJhbmRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlJik7CisgICAgSW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgdm9pZCBzZXRNb2RlSW50ZXJuYWwoTW9kZSk7CiAg
ICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCAyYWE5ZjNiMDNhYjNh
MTQ0ZTkyNzEzYTY1ZmFmM2ZmY2RmNWFhN2FjLi4yMjIzYTU3MmFhMGY2Y2E5NGMyZDI3NGYxZWMz
NzU0YmM1MjVmNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kV2ViVlRUVGV4dFRyYWNr
KTsKIAotaW5saW5lIEluYmFuZFdlYlZUVFRleHRUcmFjazo6SW5iYW5kV2ViVlRUVGV4dFRyYWNr
KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRU
cmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVu
dCwgY2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIHRy
YWNrUHJpdmF0ZSkKIHsKIH0KIAotUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorUmVmPEluYmFuZFRleHRU
cmFjaz4gSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJh
Y2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50
LCB0cmFja1ByaXZhdGUpKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5i
YW5kV2ViVlRUVGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpKTsKICAgICB0ZXh0VHJh
Y2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAppbmRleCAz
MTUyMzU3MjliNWZiZDk5ZjYzNGZhN2Q2Yzc3NmMyN2JjNmMxYzUyLi45MWZhMDM5OGE0ZjljMGU3
YTU0OTc2NjI0OGZhMzA1NmY4MTc1NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRXZWJWVFRUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMg
SW5iYW5kVGV4dFRyYWNrLCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChJbmJhbmRXZWJWVFRUZXh0VHJhY2spOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGll
bnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0
VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2
aXJ0dWFsIH5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToKLSAgICBJbmJhbmRX
ZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlJik7CisgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBwYXJzZXIoKTsKICAgICB2
b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcAppbmRleCAzMWNiZjBhNjU4ZDg1M2RjOTkxMDU4ZTFmMmE5ZmNiOTlmZTc3OWQ0Li4z
ODM1NzY0MTE2ZDA5MjU5ODg3OGI2NWE4ZmQ4YTgyNTkwM2VkNWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTG9hZGFi
bGVUZXh0VHJhY2spOwogCiBMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soSFRN
TFRyYWNrRWxlbWVudCYgdHJhY2ssIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IFRleHRUcmFjaygmdHJhY2suZG9j
dW1lbnQoKSwgJnRyYWNrLCBraW5kLCBlbXB0eVN0cmluZygpLCBsYWJlbCwgbGFuZ3VhZ2UsIFRy
YWNrRWxlbWVudCkKKyAgICA6IFRleHRUcmFjaygmdHJhY2suZG9jdW1lbnQoKSwga2luZCwgZW1w
dHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlLCBUcmFja0VsZW1lbnQpCiAgICAgLCBtX3RyYWNr
RWxlbWVudCgmdHJhY2spCiB7CiB9CkBAIC05NiwxMSArOTYsNiBAQCB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwpCiAgICAgfSk7CiB9CiAKLUVsZW1l
bnQqIExvYWRhYmxlVGV4dFRyYWNrOjplbGVtZW50KCkKLXsKLSAgICByZXR1cm4gbV90cmFja0Vs
ZW1lbnQ7Ci19Ci0KIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4
dFRyYWNrTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1fbG9h
ZGVyLmdldCgpID09ICZsb2FkZXIpOwpAQCAtMTE0LDggKzEwOSw3IEBAIHZvaWQgTG9hZGFibGVU
ZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4dFRyYWNrTG9hZGVyJiBsb2FkZXIpCiAgICAg
ICAgIG1fY3Vlcy0+YWRkKFdURk1vdmUobmV3Q3VlKSk7CiAgICAgfQogCi0gICAgaWYgKGNsaWVu
dCgpKQotICAgICAgICBjbGllbnQoKS0+dGV4dFRyYWNrQWRkQ3VlcygqdGhpcywgKm1fY3Vlcyk7
CisgICAgVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKCptX2N1ZXMpOwogfQogCiB2b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKFRleHRUcmFja0xvYWRlciYgbG9h
ZGVyLCBib29sIGxvYWRpbmdGYWlsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmgKaW5kZXggMDhkZmFhZDI4ZGNkZDFkOGFiNWNiMGZiNmFlMmY4NjFi
ZTc5MDhiMy4uYjdmYjQzZjk3ZTA4ZTc3YjY5NmRjM2FkYWM4NGRkNmY0OWYxNzRjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaApAQCAtNTYsNyAr
NTYsNiBAQCBwcml2YXRlOgogCiAgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgZmluYWw7Ci0gICAgRWxlbWVudCogZWxlbWVudCgpIGZp
bmFsOwogCiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5jcHAKaW5kZXggZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4MWE1NzVk
ZDBmMThjNS4uNzAzMmU2Mjg2OTlhMDI3YTI0NjUxYjJjNGNiZThkM2I3YzY3NzBjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgIkRhdGFDdWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCkBAIC04OCwyMCArODcsMTkgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGZvcmNl
ZEtleXdvcmQoKQogCiBUZXh0VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCkK
IHsKLSAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRy
LCBudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJh
Y2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gb2ZmOwogfQogCiBUZXh0
VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0
aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCBudWxs
cHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBU
ZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRv
bSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gYXV0
b21hdGljOwogfQogCi1UZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQotICAgIDogVHJhY2tCYXNl
KFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQorVGV4dFRyYWNrOjpU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgQXRvbVN0cmlu
ZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBj
b25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQorICAgIDogVHJh
Y2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdl
KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX2NsaWVudChjbGllbnQp
CiAgICAgLCBtX3RyYWNrVHlwZSh0eXBlKQogewogICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5
d29yZCgpKQpAQCAtMTE2LDkgKzExNCw5IEBAIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjCiAgICAg
ICAgIG1fa2luZCA9IEtpbmQ6Ok1ldGFkYXRhOwogfQogCi1SZWY8VGV4dFRyYWNrPiBUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBj
b25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0
cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQorUmVmPFRleHRUcmFjaz4g
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBr
aW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewotICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYo
Km5ldyBUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFn
ZSwgQWRkVHJhY2spKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgVGV4dFRy
YWNrKGRvY3VtZW50LCBraW5kLCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOwogICAg
IHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0K
QEAgLTEyNiw4ICsxMjQsOSBAQCBSZWY8VGV4dFRyYWNrPiBUZXh0VHJhY2s6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjbwogVGV4dFRyYWNrOjp+
VGV4dFRyYWNrKCkKIHsKICAgICBpZiAobV9jdWVzKSB7Ci0gICAgICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVz
KTsKKyAgICAgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICAgICAgfSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgo
KTsgKytpKQogICAgICAgICAgICAgbV9jdWVzLT5pdGVtKGkpLT5zZXRUcmFjayhudWxscHRyKTsK
ICAgICB9CkBAIC0xMzcsNiArMTM2LDIzIEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAg
fQogfQogCitUZXh0VHJhY2tMaXN0KiBUZXh0VHJhY2s6OnRleHRUcmFja0xpc3QoKSBjb25zdAor
eworICAgIHJldHVybiBkb3duY2FzdDxUZXh0VHJhY2tMaXN0Pih0cmFja0xpc3QoKSk7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrOjphZGRDbGllbnQoVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFk
ZChjbGllbnQpOworfQorCit2b2lkIFRleHRUcmFjazo6Y2xlYXJDbGllbnQoVGV4dFRyYWNrQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsK
KyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7Cit9CisKIERvY3VtZW50JiBUZXh0VHJhY2s6
OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKQEAgLTIwMCwxOSArMjE2LDE1IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQgbmV3
S2luZCkKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VC
dWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGwsIHRoZW4gcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBldmVudCBuYW1lZCBjaGFuZ2UgYXQgc291cmNl
QnVmZmVyLnRleHRUcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVyKQotICAgICAgICBtX3Nv
dXJjZUJ1ZmZlci0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8v
IDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0
aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQogICAgIC8vIHRoZSB0ZXh0VHJh
Y2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVt
ZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuc2NoZWR1
bGVDaGFuZ2VFdmVudCgpOwogI2VuZGlmCiAKICAgICBpZiAob2xkS2luZCAhPSBtX2tpbmQpIHsK
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX2tpbmQpOwotICAgICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQoKnRo
aXMpOworICAgICAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgewor
ICAgICAgICAgICAgY2xpZW50LnRleHRUcmFja0tpbmRDaGFuZ2VkKCp0aGlzKTsKKyAgICAgICAg
fSk7CiAgICAgfQogfQogCkBAIC0yNTIsOCArMjY0LDExIEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRN
b2RlKE1vZGUgbW9kZSkKIAogICAgIC8vIElmIG1vZGUgY2hhbmdlcyB0byBkaXNhYmxlZCwgcmVt
b3ZlIHRoaXMgdHJhY2sncyBjdWVzIGZyb20gdGhlIGNsaWVudAogICAgIC8vIGJlY2F1c2UgdGhl
eSB3aWxsIG5vIGxvbmdlciBiZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGN1ZXMoKSBmdW5jdGlvbi4K
LSAgICBpZiAobW9kZSA9PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2NsaWVudCAmJiBtX2N1ZXMpCi0g
ICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICBpZiAobW9kZSA9PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2N1ZXMpIHsKKyAgICAgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgICAgIGNsaWVudC50
ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAgICAgICAgfSk7CisgICAgfQog
CiAgICAgaWYgKG1vZGUgIT0gTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCkBAIC0yNjIsOCArMjc3
LDkgQEAgdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2RlKQogCiAgICAgbV9tb2RlID0g
bW9kZTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja01v
ZGVDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrTW9kZUNoYW5nZWQoKnRoaXMpOworICAg
IH0pOwogfQogCiBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQpAQCAtMjg1LDkg
KzMwMSwxMCBAQCB2b2lkIFRleHRUcmFjazo6cmVtb3ZlQWxsQ3VlcygpCiAKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+dGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7Ci0gICAgCisgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRU
cmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgIH0pOworCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIG1fY3Vlcy0+aXRl
bShpKS0+c2V0VHJhY2sobnVsbHB0cik7CiAgICAgCkBAIC0zNDEsOCArMzU4LDkgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjphZGRDdWUoUmVmPFRleHRUcmFja0N1ZT4mJiBjdWUpCiAg
ICAgY3VlLT5zZXRUcmFjayh0aGlzKTsKICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkuYWRk
KGN1ZS5jb3B5UmVmKCkpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+
dGV4dFRyYWNrQWRkQ3VlKCp0aGlzLCBjdWUpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlz
LCBjdWVdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFja0FkZEN1ZSgq
dGhpcywgY3VlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zNjYsOCArMzg0
LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3Vl
JiBjdWUpCiAgICAgbV9jdWVzLT5yZW1vdmUoY3VlKTsKICAgICBjdWUuc2V0SXNBY3RpdmUoZmFs
c2UpOwogICAgIGN1ZS5zZXRUcmFjayhudWxscHRyKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGll
bnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFj
a1JlbW92ZUN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBA
IC00NjAsMzIgKzQ3OSwzMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBUZXh0VHJhY2s6OnJlbW92ZVJl
Z2lvbihWVFRSZWdpb24mIHJlZ2lvbikKIAogdm9pZCBUZXh0VHJhY2s6OmN1ZVdpbGxDaGFuZ2Uo
VGV4dFRyYWNrQ3VlJiBjdWUpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gVGhlIGN1ZSBtYXkgbmVlZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1l
ZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVlLCBtYXkgbmVlZCB0bwotICAgIC8vIGJlIHJlLXJl
bmRlcmVkLCBldGMsIHNvIHJlbW92ZSBpdCBiZWZvcmUgdGhlIG1vZGlmaWNhdGlvbi4uLgotICAg
IG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGllbnRz
LmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgLy8gVGhlIGN1ZSBtYXkgbmVl
ZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVl
LCBtYXkgbmVlZCB0bworICAgICAgICAvLyBiZSByZS1yZW5kZXJlZCwgZXRjLCBzbyByZW1vdmUg
aXQgYmVmb3JlIHRoZSBtb2RpZmljYXRpb24uLi4KKyAgICAgICAgY2xpZW50LnRleHRUcmFja1Jl
bW92ZUN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBUZXh0VHJhY2s6OmN1ZURp
ZENoYW5nZShUZXh0VHJhY2tDdWUmIGN1ZSkKIHsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAg
ICByZXR1cm47Ci0KICAgICAvLyBNYWtlIHN1cmUgdGhlIFRleHRUcmFja0N1ZUxpc3Qgb3JkZXIg
aXMgdXAtdG8tZGF0ZS4KICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkudXBkYXRlQ3VlSW5k
ZXgoY3VlKTsKIAogICAgIC8vIC4uLiBhbmQgYWRkIGl0IGJhY2sgYWdhaW4uCi0gICAgbV9jbGll
bnQtPnRleHRUcmFja0FkZEN1ZSgqdGhpcywgY3VlKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
Jl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrQWRkQ3VlKCp0aGlz
LCBjdWUpOworICAgIH0pOwogfQogCiBpbnQgVGV4dFRyYWNrOjp0cmFja0luZGV4KCkKIHsKICAg
ICBpZiAoIW1fdHJhY2tJbmRleCkgewotICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQorICAg
ICAgICBpZiAoIW1fdGV4dFRyYWNrTGlzdCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICBtX3RyYWNrSW5kZXggPSBtX21lZGlhRWxlbWVudC0+ZW5zdXJlVGV4dFRyYWNrcygpLmdldFRy
YWNrSW5kZXgoKnRoaXMpOworICAgICAgICBtX3RyYWNrSW5kZXggPSBtX3RleHRUcmFja0xpc3Qt
PmdldFRyYWNrSW5kZXgoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4gbV90cmFja0luZGV4LnZh
bHVlKCk7CiB9CkBAIC01MTIsOSArNTI5LDkgQEAgVGV4dFRyYWNrQ3VlTGlzdCYgVGV4dFRyYWNr
OjplbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkKIGludCBUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxh
dGl2ZVRvUmVuZGVyZWRUcmFja3MoKQogewogICAgIGlmICghbV9yZW5kZXJlZFRyYWNrSW5kZXgp
IHsKLSAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgaWYgKCFtX3RleHRUcmFj
a0xpc3QpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgbV9yZW5kZXJlZFRyYWNrSW5k
ZXggPSBtX21lZGlhRWxlbWVudC0+ZW5zdXJlVGV4dFRyYWNrcygpLmdldFRyYWNrSW5kZXhSZWxh
dGl2ZVRvUmVuZGVyZWRUcmFja3MoKnRoaXMpOworICAgICAgICBtX3JlbmRlcmVkVHJhY2tJbmRl
eCA9IG1fdGV4dFRyYWNrTGlzdC0+Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNr
cygqdGhpcyk7CiAgICAgfQogICAgIHJldHVybiBtX3JlbmRlcmVkVHJhY2tJbmRleC52YWx1ZSgp
OwogfQpAQCAtNjExLDE2ICs2MjgsMzcgQEAgdm9pZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNv
bnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiAgICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZl
ciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sg
dG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZm
ZXIudGV4dFRyYWNrcy4KLSAgICBpZiAobV9zb3VyY2VCdWZmZXIpCi0gICAgICAgIG1fc291cmNl
QnVmZmVyLT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwotCiAgICAgLy8gNC4g
UXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBU
ZXh0VHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAgICAgLy8gdGhlIHRleHRUcmFja3Mg
YXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgotICAgIGlmIChtZWRpYUVsZW1lbnQo
KSkKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPmVuc3VyZVRleHRUcmFja3MoKS5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsK
KyAgICAgICAgY2xpZW50LnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7
CiB9CiAjZW5kaWYKIAordm9pZCBUZXh0VHJhY2s6OnNldElkKGNvbnN0IEF0b21TdHJpbmcmIGlk
KQoreworICAgIFRyYWNrQmFzZTo6c2V0SWQoaWQpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0
aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tJZENoYW5nZWQo
KnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFRleHRUcmFjazo6c2V0TGFiZWwoY29uc3QgQXRv
bVN0cmluZyYgbGFiZWwpCit7CisgICAgVHJhY2tCYXNlOjpzZXRMYWJlbChsYWJlbCk7CisgICAg
bV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50
LnRleHRUcmFja0xhYmVsQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgVGV4dFRy
YWNrOjpuZXdDdWVzQXZhaWxhYmxlKGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmIGxpc3QpCit7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50
LnRleHRUcmFja0FkZEN1ZXMoKnRoaXMsIGxpc3QpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgK
aW5kZXggNzQ2MzJlYTRjMGQ5YTAzN2E3YjY2MDExNzdkMzRjOWE5YzE1M2U2Mi4uOTUyYTZjNDc1
NDQ3YzAwMjgwZmYyNmNiNmI5MDgxZWI4NTYzNGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5oCkBAIC0zMiwzMCArMzIsMzYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJUcmFja0Jhc2Uu
aCIKKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dFRyYWNrOworY2xhc3Mg
VGV4dFRyYWNrTGlzdDsKIGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CiBjbGFzcyBWVFRSZWdpb247
CiBjbGFzcyBWVFRSZWdpb25MaXN0OwogCi1jbGFzcyBUZXh0VHJhY2tDbGllbnQgeworY2xhc3Mg
VGV4dFRyYWNrQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRleHRUcmFja0NsaWVudD4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpID0gZGVmYXVsdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0
VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tJZENoYW5nZWQoVGV4dFRyYWNrJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTGFiZWxDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRU
cmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrQWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrJikgeyB9CiB9Owog
CiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChUZXh0VHJhY2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNr
PiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBBdG9tU3RyaW5nJiBr
aW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBzdGF0aWMgUmVmPFRleHRUcmFjaz4gY3JlYXRl
KERvY3VtZW50KiwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQs
IGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CiAg
ICAgdmlydHVhbCB+VGV4dFRyYWNrKCk7CiAKICAgICBzdGF0aWMgVGV4dFRyYWNrJiBjYXB0aW9u
TWVudU9mZkl0ZW0oKTsKQEAgLTY0LDYgKzcwLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21TdHJpbmcmKTsKIAorICAgIFRleHRUcmFja0xpc3QqIHRl
eHRUcmFja0xpc3QoKSBjb25zdDsKKwogICAgIGVudW0gY2xhc3MgS2luZCB7IFN1YnRpdGxlcywg
Q2FwdGlvbnMsIERlc2NyaXB0aW9ucywgQ2hhcHRlcnMsIE1ldGFkYXRhLCBGb3JjZWQgfTsKICAg
ICBLaW5kIGtpbmQoKSBjb25zdDsKIApAQCAtODgsNyArOTYsOCBAQCBwdWJsaWM6CiAKICAgICBU
ZXh0VHJhY2tDdWVMaXN0KiBjdWVzSW50ZXJuYWwoKSBjb25zdCB7IHJldHVybiBtX2N1ZXMuZ2V0
KCk7IH0KIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBvdmVycmlkZSB7IG1fY2xpZW50ID0gbnVs
bHB0cjsgfQorICAgIHZvaWQgYWRkQ2xpZW50KFRleHRUcmFja0NsaWVudCYpOworICAgIHZvaWQg
Y2xlYXJDbGllbnQoVGV4dFRyYWNrQ2xpZW50Jik7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBh
ZGRDdWUoUmVmPFRleHRUcmFja0N1ZT4mJik7CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lk
PiByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJik7CkBAIC0xMjMsOSArMTMyLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZUFsbEN1ZXMoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0g
ICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAjZW5kaWYKIAorICAgIHZv
aWQgc2V0SWQoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCBib29sIGlzSW5iYW5k
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgTWVkaWFUaW1lIHN0YXJ0
VGltZVZhcmlhbmNlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOyB9CkBA
IC0xMzksMjAgKzE1MSwyMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUN1ZXNO
b3RJblRpbWVSYW5nZXMoUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKIHByb3RlY3RlZDoKLSAgICBU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0
IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5n
JiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOworICAg
IFRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7CiAKICAgICBEb2N1bWVudCYgZG9j
dW1lbnQoKSBjb25zdDsKLSAgICBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1f
Y2xpZW50OyB9CiAKICAgICBib29sIGhhc0N1ZShUZXh0VHJhY2tDdWUmLCBUZXh0VHJhY2tDdWU6
OkN1ZU1hdGNoUnVsZXMgPSBUZXh0VHJhY2tDdWU6Ok1hdGNoQWxsRmllbGRzKTsKICAgICB2b2lk
IHNldEtpbmQoS2luZCk7CiAKKyAgICB2b2lkIG5ld0N1ZXNBdmFpbGFibGUoY29uc3QgVGV4dFRy
YWNrQ3VlTGlzdCYpOworCiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX3N0eWxlU2hlZXRzOworICAgIFdlYWtI
YXNoU2V0PFRleHRUcmFja0NsaWVudD4gbV9jbGllbnRzOwogCiBwcml2YXRlOgogICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gVGV4dFRyYWNrRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xNjYsNiAr
MTgwLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiVGV4dFRyYWNrIjsgfQogI2VuZGlmCiAKKyAgICBXZWFrUHRyPFRl
eHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrTGlzdDsKKwogICAgIFZUVFJlZ2lvbkxpc3QmIGVuc3Vy
ZVZUVFJlZ2lvbkxpc3QoKTsKICAgICBSZWZQdHI8VlRUUmVnaW9uTGlzdD4gbV9yZWdpb25zOwog
CkBAIC0xNzMsNyArMTg5LDYgQEAgcHJpdmF0ZToKIAogICAgIE1vZGUgbV9tb2RlIHsgTW9kZTo6
RGlzYWJsZWQgfTsKICAgICBLaW5kIG1fa2luZCB7IEtpbmQ6OlN1YnRpdGxlcyB9OwotICAgIFRl
eHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlwZTsK
ICAgICBSZWFkaW5lc3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkIH07CiAgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IG1fdHJhY2tJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbAppbmRleCBhYTFiMDRhMjcyYzk5MmYxMmVjYjcxMDgzZTY3MDk1ODhlYzJi
ODg4Li4yZTVmNTcyZjQxMDI1ZWY2ODFlZDcxM2YwMWZmNmJiNThmNjY0MDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCkBAIC0zMCw3ICszMCw3IEBAIGVudW0gVGV4
dFRyYWNrS2luZCB7ICJzdWJ0aXRsZXMiLCAiY2FwdGlvbnMiLCAiZGVzY3JpcHRpb25zIiwgImNo
YXB0ZXJzIiwgIm1ldGFkCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJ
REVPLAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAotICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbEVsZW1lbnRSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgR2VuZXJh
dGVBZGRPcGFxdWVSb290LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogICAgIEV4cG9zZWQ9
V2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAppbmRl
eCBmZjlhMTQ5OWNkNTE2ODhjYThkYmMzMGYwMWRiNGI2YzYyYjk2ZGNjLi4yMjkyNjU3MzdhY2Nj
MGEzMGMyZDE3OThlYTA4MWNlYmE0ZGM3ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlRleHRU
cmFja0xpc3QuaCIKIAotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bmJhbmRUZXh0VHJhY2suaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAj
aW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2suaCIKQEAgLTM5LDI3ICszOCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tMaXN0
KTsKIAotVGV4dFRyYWNrTGlzdDo6VGV4dFRyYWNrTGlzdChXZWFrUHRyPEhUTUxNZWRpYUVsZW1l
bnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBUcmFj
a0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitUZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKGNv
bnRleHQsIFRyYWNrTGlzdEJhc2U6OlRleHRUcmFja0xpc3QpCiB7CiB9CiAKIFRleHRUcmFja0xp
c3Q6On5UZXh0VHJhY2tMaXN0KCkKIHsKLSAgICBjbGVhckVsZW1lbnQoKTsKLX0KLQotdm9pZCBU
ZXh0VHJhY2tMaXN0OjpjbGVhckVsZW1lbnQoKQotewotICAgIFRyYWNrTGlzdEJhc2U6OmNsZWFy
RWxlbWVudCgpOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2VsZW1lbnRUcmFja3MpIHsKLSAg
ICAgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgdHJhY2stPmNs
ZWFyQ2xpZW50KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2FkZFRyYWNrVHJh
Y2tzKSB7Ci0gICAgICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAgICAg
IHRyYWNrLT5jbGVhckNsaWVudCgpOwotICAgIH0KIH0KIAogdW5zaWduZWQgVGV4dFRyYWNrTGlz
dDo6bGVuZ3RoKCkgY29uc3QKQEAgLTIwMyw4ICsxODgsOCBAQCB2b2lkIFRleHRUcmFja0xpc3Q6
OmFwcGVuZChSZWY8VGV4dFRyYWNrPiYmIHRyYWNrKQogCiAgICAgaW52YWxpZGF0ZVRyYWNrSW5k
ZXhlc0FmdGVyVHJhY2sodHJhY2spOwogCi0gICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50
KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1lZGlhRWxlbWVudCgpKTsKLSAgICB0cmFj
ay0+c2V0TWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCgpKTsKKyAgICBpZiAoIXRyYWNrLT50cmFj
a0xpc3QoKSkKKyAgICAgICAgdHJhY2stPnNldFRyYWNrTGlzdCgqdGhpcyk7CiAKICAgICBzY2hl
ZHVsZUFkZFRyYWNrRXZlbnQoV1RGTW92ZSh0cmFjaykpOwogfQpAQCAtMjMzLDggKzIxOCw4IEBA
IHZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRyYWNrQmFzZSYgdHJhY2ssIGJvb2wgc2NoZWR1
bGVFdmVudCkKIAogICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRleHRUcmFj
ayk7CiAKLSAgICBBU1NFUlQoIXRyYWNrLm1lZGlhRWxlbWVudCgpIHx8ICFlbGVtZW50KCkgfHwg
dHJhY2subWVkaWFFbGVtZW50KCkgPT0gZWxlbWVudCgpKTsKLSAgICB0cmFjay5zZXRNZWRpYUVs
ZW1lbnQobnVsbHB0cik7CisgICAgaWYgKHRyYWNrLnRyYWNrTGlzdCgpID09IHRoaXMpCisgICAg
ICAgIHRyYWNrLmNsZWFyVHJhY2tMaXN0KCk7CiAKICAgICBSZWY8VHJhY2tCYXNlPiB0cmFja1Jl
ZiA9ICooKnRyYWNrcylbaW5kZXhdOwogICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggY2QyZmY3YmQwZTZmNWQz
MmVkOWEwY2NhMjU1YWQ0OGFkNmJjNTg5OS4uNzAyMWVkMzY4YTU1OGE4MGRmNDAwMGUzY2FlYmJi
ZmJkMzVhM2JlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJUcmFja0xp
c3RCYXNlLmgiCisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM2LDE2ICszNywxNCBAQCBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJh
Y2tMaXN0IGZpbmFsIDogcHVibGljIFRyYWNrTGlzdEJhc2UgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoVGV4dFRyYWNrTGlzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0VHJh
Y2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVtZW50LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrTGlzdD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBh
dXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IFRleHRUcmFja0xpc3QoZWxlbWVudCwgY29udGV4dCkp
OworICAgICAgICBhdXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IFRleHRUcmFja0xpc3QoY29udGV4
dCkpOwogICAgICAgICBsaXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIGxp
c3Q7CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFja0xpc3QoKTsKIAotICAgIHZvaWQgY2xl
YXJFbGVtZW50KCkgb3ZlcnJpZGU7Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBpbnQgZ2V0VHJhY2tJbmRleChUZXh0VHJhY2smKTsKICAgICBpbnQgZ2V0VHJh
Y2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2smKTsKQEAgLTU4LDE5ICs1
NywyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoUmVmPFRleHRUcmFjaz4mJik7CiAgICAg
dm9pZCByZW1vdmUoVHJhY2tCYXNlJiwgYm9vbCBzY2hlZHVsZUV2ZW50ID0gdHJ1ZSkgb3ZlcnJp
ZGU7CiAKKyAgICB2b2lkIHNldER1cmF0aW9uKE1lZGlhVGltZSBkdXJhdGlvbikgeyBtX2R1cmF0
aW9uID0gZHVyYXRpb247IH0KKyAgICBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kdXJhdGlvbjsgfQorCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIFRleHRUcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFRleHRUcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRy
YWNrJik7CiAKICAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+IG1fYWRkVHJhY2tUcmFja3M7
CiAgICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+PiBtX2VsZW1lbnRUcmFja3M7CisgICAgTWVk
aWFUaW1lIG1fZHVyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dFRyYWNrTGlzdCkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7
IHJldHVybiB0cmFja0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRleHRU
cmFja0xpc3Q7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVO
QUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRs
CmluZGV4IGRmOWNiZTEzMGJjYTczYmE2NDBmOTc4YzkxZWYxNDQ0YzIxMTFlN2EuLmE3ZWYzNDRh
YjFjMWZiMWRlODg5Nzc5MGY0YjMyODRhOTdmNmVmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbApAQCAtMjYsOCArMjYsNiBAQAogWwogICAgIEFjdGl2
ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1WSURFTywKLSAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCiAgICAgRXhw
b3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFRleHRUcmFja0xpc3QgOiBFdmVudFRhcmdldCB7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCmluZGV4IGU4Zjk1ZjkzMzEwM2FkODQyYWQ4MjcxMzM2
MmYzNTFmNmRkODc3M2QuLjUxMTBhNTY2NzkxMTE5ZDU0MThiMzQ2YmNhYTA2NzI1YTE3NjM1ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTMyLDggKzMyLDYg
QEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IHNfdW5pcXVlSWQgPSAwOwpAQCAt
NDgsOCArNDYsOSBAQCBzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIoKQogfQogI2Vu
ZGlmCiAKLVRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkK
LSAgICA6IG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlkKQorVHJhY2tCYXNlOjpUcmFja0Jhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdl
KQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICAsIG1fdW5p
cXVlSWQoKytzX3VuaXF1ZUlkKQogICAgICwgbV9pZChpZCkKICAgICAsIG1fbGFiZWwobGFiZWwp
CiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpAQCAtNzAsMjEgKzY5LDI2IEBAIFRyYWNrQmFz
ZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21T
dHJpbmcmIGxhYmVsLCBjCiAjZW5kaWYKIH0KIAotRWxlbWVudCogVHJhY2tCYXNlOjplbGVtZW50
KCkKK3ZvaWQgVHJhY2tCYXNlOjpzZXRUcmFja0xpc3QoVHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0
KQogewotICAgIHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsKKyAgICBtX3RyYWNrTGlzdCA9
IG1ha2VXZWFrUHRyKHRyYWNrTGlzdCk7CiB9CiAKLXZvaWQqIFRyYWNrQmFzZTo6b3BhcXVlUm9v
dCgpCit2b2lkIFRyYWNrQmFzZTo6Y2xlYXJUcmFja0xpc3QoKQogewotICAgIGlmIChhdXRvKiBh
c3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzc29jaWF0ZWRF
bGVtZW50LT5vcGFxdWVSb290KCk7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgbV90cmFja0xpc3Qg
PSBudWxscHRyOworfQorCitUcmFja0xpc3RCYXNlKiBUcmFja0Jhc2U6OnRyYWNrTGlzdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdHJhY2tMaXN0LmdldCgpOwogfQogCi12b2lkIFRyYWNrQmFz
ZTo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKK3Zv
aWQqIFRyYWNrQmFzZTo6b3BhcXVlUm9vdCgpCiB7Ci0gICAgbV9tZWRpYUVsZW1lbnQgPSBlbGVt
ZW50OworICAgIGlmIChhdXRvIHRyYWNrTGlzdCA9IHRoaXMtPnRyYWNrTGlzdCgpKQorICAgICAg
ICByZXR1cm4gdHJhY2tMaXN0LT5vcGFxdWVSb290KCk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAK
IC8vIFNlZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2JjcDQ3I3NlY3Rpb24tMi4xCkBA
IC0xNDgsOCArMTUyLDggQEAgdm9pZCBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGNvbnN0IEF0b21T
dHJpbmcmIGxhbmd1YWdlKQogCiAgICAgbV92YWxpZEJDUDQ3TGFuZ3VhZ2UgPSBlbXB0eUF0b20o
KTsKIAotICAgIGF1dG8gZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKLSAgICBpZiAoIWVsZW1l
bnQpCisgICAgYXV0byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CkBAIC0x
NTgsNyArMTYyLDcgQEAgdm9pZCBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJp
bmcmIGxhbmd1YWdlKQogICAgIGVsc2UKICAgICAgICAgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRo
ZSBsYW5ndWFnZSAnIiwgbGFuZ3VhZ2UsICInIGlzIG5vdCBhIHZhbGlkIEJDUCA0NyBsYW5ndWFn
ZSB0YWcuIik7CiAKLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKTsK
KyAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiB9CiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKQEAgLTE3NCw4ICsxNzgsOCBAQCBXVEZMb2dDaGFubmVsJiBUcmFja0Jhc2U6Omxv
Z0NoYW5uZWwoKSBjb25zdAogfQogI2VuZGlmCiAKLU1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNr
QmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBs
YWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCi0gICAgOiBUcmFja0Jhc2UodHlwZSwg
aWQsIGxhYmVsLCBsYW5ndWFnZSkKK01lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CisgICAgOiBUcmFja0Jhc2UoY29udGV4dCwgdHlwZSwgaWQsIGxhYmVsLCBsYW5ndWFnZSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKaW5kZXggYWY0NTQ0MWQ5Mzc5
NDA5NTRjNTZiNjljNWExYWNmYjQxYjVhMmUyMi4uZTNkYjQ0M2RjOWEzYjg4NjdiYjBhMGNkNzUx
MTRlMjZkZmVjM2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0y
NywxOCArMjcsMTkgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MTWVkaWFF
bGVtZW50OwogY2xhc3MgU291cmNlQnVmZmVyOworY2xhc3MgVHJhY2tMaXN0QmFzZTsKIAogY2xh
c3MgVHJhY2tCYXNlCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+CisgICAgLCBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKQEAgLTQ5LDIyICs1MCwxMCBA
QCBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsgQmFzZVRyYWNrLCBUZXh0VHJhY2ssIEF1ZGlvVHJh
Y2ssIFZpZGVvVHJhY2sgfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KIAotICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpOwotICAgIHZvaWQqIG9wYXF1ZVJv
b3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlh
RWxlbWVudD4pOwotICAgIFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50KCkg
eyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLQogICAgIHZpcnR1YWwgQXRvbVN0cmluZyBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRv
bVN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9Ci0KICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29u
c3QgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbVN0cmlu
ZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9Ci0KICAgICBBdG9tU3RyaW5nIHZhbGlkQkNQ
NDdMYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRCQ1A0N0xhbmd1YWdlOyB9CiAgICAg
QXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpOwotCi0gICAgdmlydHVh
bCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAwOwogCiAgICAgdmlydHVhbCBpbnQgdW5pcXVlSWQoKSBj
b25zdCB7IHJldHVybiBtX3VuaXF1ZUlkOyB9CiAKQEAgLTczLDYgKzYyLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlcikgeyBtX3NvdXJj
ZUJ1ZmZlciA9IGJ1ZmZlcjsgfQogI2VuZGlmCiAKKyAgICB2b2lkIHNldFRyYWNrTGlzdChUcmFj
a0xpc3RCYXNlJik7CisgICAgdm9pZCBjbGVhclRyYWNrTGlzdCgpOworICAgIFRyYWNrTGlzdEJh
c2UqIHRyYWNrTGlzdCgpIGNvbnN0OworICAgIHZvaWQqIG9wYXF1ZVJvb3QoKTsKKwogICAgIHZp
cnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECkBAIC04Myw5ICs3NywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAg
IFRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYg
bGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBUcmFja0Jhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9t
U3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOwogCi0gICAgV2Vha1B0
cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudCB7IG51bGxwdHIgfTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwg
PSBsYWJlbDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5n
Jik7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFNvdXJjZUJ1ZmZlciogbV9zb3Vy
Y2VCdWZmZXIgeyBudWxscHRyIH07CkBAIC0xMDIsNiArOTgsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRp
ZmllciB7IG51bGxwdHIgfTsKICNlbmRpZgorICAgIFdlYWtQdHI8VHJhY2tMaXN0QmFzZT4gbV90
cmFja0xpc3Q7CiB9OwogCiBjbGFzcyBNZWRpYVRyYWNrQmFzZSA6IHB1YmxpYyBUcmFja0Jhc2Ug
ewpAQCAtMTEwLDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChj
b25zdCBBdG9tU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVRyYWNrQmFzZShUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBNZWRpYVRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxh
YmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICB2b2lkIHNldEtpbmRJbnRl
cm5hbChjb25zdCBBdG9tU3RyaW5nJik7CiAKQEAgLTEyMCw2ICsxMTcsMTEgQEAgcHJpdmF0ZToK
ICAgICBBdG9tU3RyaW5nIG1fa2luZDsKIH07CiAKK2lubGluZSB2b2lkKiByb290KFRyYWNrQmFz
ZSogdHJhY2spCit7CisgICAgcmV0dXJuIHRyYWNrLT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmNwcAppbmRleCAwMTNhMjNjOTgxYmFlOWEwOTRlMDM3ZmNhMDI2NDkxNDQ4
MTUzNDliLi4wZjA1MzUzMzdmZmZlMWJlNjAzNWExN2JiMzYyMWM4NGMxNjk0NTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJUcmFja0V2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KQEAgLTM5LDM3ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUcmFja0xpc3RCYXNlKTsKIAotVHJhY2tMaXN0
QmFzZTo6VHJhY2tMaXN0QmFzZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RC
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgdHlwZSkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBt
X3R5cGUodHlwZSkKIHsKLSAgICBBU1NFUlQoIWNvbnRleHQgfHwgaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKTsKIH0KIAogVHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UoKQogewotICAgIGNsZWFy
RWxlbWVudCgpOwogfQogCi12b2lkIFRyYWNrTGlzdEJhc2U6OmNsZWFyRWxlbWVudCgpCit2b2lk
KiBUcmFja0xpc3RCYXNlOjpvcGFxdWVSb290KCkKIHsKLSAgICBtX2VsZW1lbnQgPSBudWxscHRy
OwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2luYmFuZFRyYWNrcykgewotICAgICAgICB0cmFj
ay0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgICAgICB0cmFjay0+Y2xlYXJDbGllbnQo
KTsKLSAgICB9Ci19Ci0KLUVsZW1lbnQqIFRyYWNrTGlzdEJhc2U6OmVsZW1lbnQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7Ci19Ci0KLXZvaWQqIFRyYWNrTGlzdEJhc2U6
Om9wYXF1ZVJvb3QoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9
IGVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzc29jaWF0ZWRFbGVtZW50LT5vcGFxdWVSb290
KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHJvb3RPYnNlcnZlciA9IG1f
b3BhcXVlUm9vdE9ic2VydmVyLmdldCgpKQorICAgICAgICByZXR1cm4gKCpyb290T2JzZXJ2ZXIp
KCk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIHVuc2lnbmVkIFRyYWNrTGlzdEJhc2U6Omxlbmd0
aCgpIGNvbnN0CkBAIC04MywxMCArNjYsOCBAQCB2b2lkIFRyYWNrTGlzdEJhc2U6OnJlbW92ZShU
cmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQpCiAgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodHJhY2subWVkaWFFbGVtZW50KCkp
IHsKLSAgICAgICAgQVNTRVJUKHRyYWNrLm1lZGlhRWxlbWVudCgpID09IG1fZWxlbWVudCk7Ci0g
ICAgICAgIHRyYWNrLnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICB9CisgICAgaWYgKHRy
YWNrLnRyYWNrTGlzdCgpID09IHRoaXMpCisgICAgICAgIHRyYWNrLmNsZWFyVHJhY2tMaXN0KCk7
CiAKICAgICBSZWY8VHJhY2tCYXNlPiB0cmFja1JlZiA9ICptX2luYmFuZFRyYWNrc1tpbmRleF07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggZmEwMGY4
NjBmYmY5MDhkM2QyMDc3ZTFkMmRiODYyOWIyMGE0MmQ5OS4uOWQzZTY4MWU3ZGU0YTYxOTRiNjg2
NzBmNTRkZjU1ZTYyMmJiOWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0xpc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xp
c3RCYXNlLmgKQEAgLTI5LDE0ICsyOSwxMyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgVHJhY2tCYXNlOwogCiBjbGFz
cyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKQEAg
LTQ0LDYgKzQzLDkgQEAgY2xhc3MgVHJhY2tMaXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRy
YWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW4KIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5UcmFja0xpc3RCYXNlKCk7CiAKKyAgICBlbnVtIFR5cGUgeyBCYXNlVHJhY2tMaXN0LCBU
ZXh0VHJhY2tMaXN0LCBBdWRpb1RyYWNrTGlzdCwgVmlkZW9UcmFja0xpc3QgfTsKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwogICAgIHZpcnR1YWwgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoVHJhY2tCYXNlJiwgYm9vbCBzY2hlZHVsZUV2
ZW50ID0gdHJ1ZSk7CkBAIC01NCwxMCArNTYsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8VHJhY2tMaXN0QmFzZT46OmRlcmVmOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0Owot
ICAgIHZvaWQqIG9wYXF1ZVJvb3QoKSBjb25zdDsKLSAgICBXZWFrUHRyPEhUTUxNZWRpYUVsZW1l
bnQ+IG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZvaWQq
IG9wYXF1ZVJvb3QoKTsKKworICAgIHVzaW5nIE9wYXF1ZVJvb3RPYnNlcnZlciA9IFdURjo6T2Jz
ZXJ2ZXI8dm9pZCooKT47CisgICAgdm9pZCBzZXRPcGFxdWVSb290T2JzZXJ2ZXIoY29uc3QgT3Bh
cXVlUm9vdE9ic2VydmVyJiBvYnNlcnZlcikgeyBtX29wYXF1ZVJvb3RPYnNlcnZlciA9IG1ha2VX
ZWFrUHRyKG9ic2VydmVyKTsgfTsKIAogICAgIC8vIE5lZWRzIHRvIGJlIHB1YmxpYyBzbyB0cmFj
a3MgY2FuIGNhbGwgaXQKICAgICB2b2lkIHNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKQEAgLTY2LDcg
KzY4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbnlUcmFja0VuYWJsZWQoKSBjb25zdDsKIAog
cHJvdGVjdGVkOgotICAgIFRyYWNrTGlzdEJhc2UoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Piwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFRyYWNrTGlzdEJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFR5cGUpOwogCiAgICAgdm9pZCBzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUmVm
PFRyYWNrQmFzZT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbW92ZVRyYWNrRXZlbnQoUmVmPFRy
YWNrQmFzZT4mJik7CkBAIC04MCwxMCArODIsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtX2Vs
ZW1lbnQ7CisgICAgVHlwZSBtX3R5cGU7CisgICAgV2Vha1B0cjxPcGFxdWVSb290T2JzZXJ2ZXI+
IG1fb3BhcXVlUm9vdE9ic2VydmVyOwogICAgIGJvb2wgbV9pc0NoYW5nZUV2ZW50U2NoZWR1bGVk
IHsgZmFsc2UgfTsKIH07CiAKK2lubGluZSB2b2lkKiByb290KFRyYWNrTGlzdEJhc2UqIHRyYWNr
TGlzdCkKK3sKKyAgICByZXR1cm4gdHJhY2tMaXN0LT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IGVkNzU1YTI4MGVmM2Y4M2FhOTE2ZTIx
OWMxMjFiMGQ3YWI0OWIzYzYuLmQzMDRmYjY4MjE4MmI0MjExYzczZTExYjA5MTYxZTVjZWRiMGRi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNyAr
MzQsNiBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKQEAgLTgwLDkgKzc5LDggQEAgY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFj
azo6Y29tbWVudGFyeUtleXdvcmQoKQogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1WaWRl
b1RyYWNrOjpWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQmIGNsaWVudCwgVmlkZW9UcmFja1By
aXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNl
OjpWaWRlb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRy
YWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQotICAgICwgbV9jbGllbnQoJmNsaWVudCkKK1ZpZGVvVHJh
Y2s6OlZpZGVvVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmlkZW9UcmFj
a1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1l
ZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRl
LmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNr
UHJpdmF0ZSkKICAgICAsIG1fc2VsZWN0ZWQodHJhY2tQcml2YXRlLnNlbGVjdGVkKCkpCiB7CkBA
IC0xMzAsOCArMTI4LDIxIEBAIHZvaWQgVmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQoY29uc3QgYm9v
bCBzZWxlY3RlZCkKICAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CiAgICAgbV9wcml2YXRlLT5z
ZXRTZWxlY3RlZChzZWxlY3RlZCk7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9y
RWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja1Nl
bGVjdGVkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6YWRk
Q2xpZW50KFZpZGVvVHJhY2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50
cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3Zv
aWQgVmlkZW9UcmFjazo6Y2xlYXJDbGllbnQoVmlkZW9UcmFja0NsaWVudCYgY2xpZW50KQorewor
ICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJl
bW92ZShjbGllbnQpOwogfQogCiBzaXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgp
CkBAIC0xNDIsMTYgKzE1MywyNSBAQCBzaXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRl
eCgpCiB2b2lkIFZpZGVvVHJhY2s6OnNlbGVjdGVkQ2hhbmdlZChib29sIHNlbGVjdGVkKQogewog
ICAgIHNldFNlbGVjdGVkKHNlbGVjdGVkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10g
KGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdl
ZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6aWRDaGFuZ2VkKGNvbnN0
IEF0b21TdHJpbmcmIGlkKQogewogICAgIHNldElkKGlkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFj
aChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja0lkQ2hh
bmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6bGFiZWxDaGFuZ2Vk
KGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKQogewogICAgIHNldExhYmVsKGxhYmVsKTsKKyAgICBt
X2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQu
dmlkZW9UcmFja0xhYmVsQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9U
cmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQpAQCAtMTYx
LDEwICsxODEsOSBAQCB2b2lkIFZpZGVvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9t
U3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBWaWRlb1RyYWNrOjp3aWxsUmVtb3ZlKCkKIHsKLSAg
ICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKG1lZGlhRWxlbWVudCgpLmdldCgpKTsKLSAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50LT5yZW1vdmVWaWRlb1Ry
YWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkg
eworICAgICAgICBjbGllbnQud2lsbFJlbW92ZVZpZGVvVHJhY2soKnRoaXMpOworICAgIH0pOwog
fQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTE4MiwxMiArMjAxLDExIEBAIHZvaWQg
VmlkZW9UcmFjazo6c2V0S2luZChjb25zdCBBdG9tU3RyaW5nJiBraW5kKQogCiAgICAgLy8gMy4g
SWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwg
dGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNo
YW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVy
KQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBu
YW1lZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAg
ICAgLy8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4K
LSAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgY2xpZW50LnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CkBAIC0xOTksMTcgKzIxNywxNSBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldExhbmd1YWdlKGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogICAgIC8vIHNoYXJlZCBiZXR3ZWVuIGFsbCB0cmFja3Mg
dGhhdCBzdXBwb3J0IHNldHRpbmcgbGFuZ3VhZ2UuCiAKICAgICAvLyAyLiBVcGRhdGUgdGhpcyBh
dHRyaWJ1dGUgdG8gdGhlIG5ldyB2YWx1ZS4KLSAgICBNZWRpYVRyYWNrQmFzZTo6c2V0TGFuZ3Vh
Z2UobGFuZ3VhZ2UpOworICAgIFRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOwogCiAg
ICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBu
b3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50
IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291
cmNlQnVmZmVyKQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVs
ZUNoYW5nZUV2ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBs
ZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVu
Y2VkIGJ5CiAgICAgLy8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlh
RWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVtZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgp
LT5lbnN1cmVWaWRlb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBtX2NsaWVu
dHMuZm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFj
a0xhbmd1YWdlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKICNlbmRpZgpAQCAtMjE4LDM1
ICsyMzQsMzAgQEAgdm9pZCBWaWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogewog
ICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2
YXRlOjpBbHRlcm5hdGl2ZToKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmFs
dGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5h
dGl2ZUtleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2
YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdv
cmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWlu
OgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7Cisg
ICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOgotICAgICAgICBzZXRLaW5kSW50
ZXJuYWwoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9U
cmFjazo6c2lnbktleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJh
Y2tQcml2YXRlOjpTdWJ0aXRsZXM6Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNr
OjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRp
dGxlc0tleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2
YXRlOjpDb21tZW50YXJ5OgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6Y29t
bWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFy
eUtleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRl
OjpOb25lOgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoZW1wdHlTdHJpbmcoKSk7CisgICAgICAg
IHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgVmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50
KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNl
dE1lZGlhRWxlbWVudChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
dm9pZCBWaWRlb1RyYWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5o
CmluZGV4IDE3OWU3MTNiYzM2NjllNWQ0NDg0MTdlNDJiZTI5YmIxMGMzOTE4ODguLjYyYzkwYjI0
YjQ1MGFiNDBlNjIyYzg5MWFkMGFkODQ0YzRkMTg0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFjay5oCkBAIC0zMCwyMyArMzAsMzAgQEAKIAogI2luY2x1ZGUgIlRyYWNrQmFz
ZS5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlv
bjsKIGNsYXNzIFZpZGVvVHJhY2s7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsKIAotY2xhc3MgVmlk
ZW9UcmFja0NsaWVudCB7CitjbGFzcyBWaWRlb1RyYWNrQ2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFZpZGVvVHJhY2tDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5WaWRlb1Ry
YWNrQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0
ZWRDaGFuZ2VkKFZpZGVvVHJhY2smKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tJ
ZENoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrS2lu
ZENoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrTGFi
ZWxDaGFuZ2VkKFZpZGVvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0xh
bmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJh
Y2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
UmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJikgeyB9CiB9OwogCiBjbGFzcyBWaWRlb1RyYWNr
IGZpbmFsIDogcHVibGljIE1lZGlhVHJhY2tCYXNlLCBwcml2YXRlIFZpZGVvVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRl
b1RyYWNrQ2xpZW50JiBjbGllbnQsIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisg
ICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFjayhjb250ZXh0LCB0cmFja1By
aXZhdGUpKTsKICAgICB9CiAgICAgdmlydHVhbCB+VmlkZW9UcmFjaygpOwogCkBAIC02MCw4ICs2
Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3RlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChjb25zdCBib29sKTsKIAotICAg
IHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIFZp
ZGVvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAg
dm9pZCBhZGRDbGllbnQoVmlkZW9UcmFja0NsaWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQo
VmlkZW9UcmFja0NsaWVudCYpOwogCiAgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKIApA
QCAtNzMsMTMgKzgwLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRQcml2YXRlKFZpZGVvVHJhY2tQcml2
YXRlJik7Ci0gICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50
Pikgb3ZlcnJpZGU7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dn
ZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwogI2VuZGlmCiAKIHByaXZhdGU6
Ci0gICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50JiwgVmlkZW9UcmFja1ByaXZhdGUmKTsK
KyAgICBWaWRlb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBWaWRlb1RyYWNrUHJpdmF0
ZSYpOwogCiAgICAgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmlu
YWw7CiAKQEAgLTEwMCw3ICsxMDYsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJWaWRlb1RyYWNrIjsgfQogI2VuZGlmCiAK
LSAgICBWaWRlb1RyYWNrQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBXZWFrUHRy
PFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVvVHJhY2tMaXN0OworICAgIFdlYWtIYXNoU2V0PFZpZGVv
VHJhY2tDbGllbnQ+IG1fY2xpZW50czsKICAgICBSZWY8VmlkZW9UcmFja1ByaXZhdGU+IG1fcHJp
dmF0ZTsKICAgICBib29sIG1fc2VsZWN0ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCmluZGV4IDc0NzIzZGJhZGQ1ZTllMzcxYzNmMmQxNjdi
YmQ3NTE3MjE1NThjMGQuLjJjNjBiMmIyZTcwNjUzMzg4ZDlhNGVjYzAwMzlhMzJmMzY2MGIyYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApAQCAtMjUsOCArMjUs
NyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsRWxlbWVudFJvb3QsCi0gICAgR2VuZXJhdGVBZGRPcGFxdWVSb290LAorICAgIEdlbmVy
YXRlSXNSZWFjaGFibGUsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFZpZGVvVHJh
Y2sgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCmluZGV4IDg0ODY1NjZkMThjODRlNmY0
YTY4YWFmYmU4YTNjMDU4MjQ3NGQzYjAuLjdhOTFhNTkxZWFhYThmMjE0NmM0ZWIzOTk3MmI1YTdi
Mzk2OWQxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3Qu
Y3BwCkBAIC0yOSwxMyArMjksMTIgQEAKIAogI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCiAK
LSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChX
ZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCi0gICAgOiBUcmFja0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitWaWRlb1Ry
YWNrTGlzdDo6VmlkZW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
KyAgICA6IFRyYWNrTGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xp
c3QpCiB7CiB9CiAKQEAgLTUzLDggKzUyLDggQEAgdm9pZCBWaWRlb1RyYWNrTGlzdDo6YXBwZW5k
KFJlZjxWaWRlb1RyYWNrPiYmIHRyYWNrKQogICAgIH0KICAgICBtX2luYmFuZFRyYWNrcy5pbnNl
cnQoaW5zZXJ0aW9uSW5kZXgsIHRyYWNrLnB0cigpKTsKIAotICAgIEFTU0VSVCghdHJhY2stPm1l
ZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtZWRpYUVsZW1lbnQoKSk7
Ci0gICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQoKSk7CisgICAgaWYgKCF0
cmFjay0+dHJhY2tMaXN0KCkpCisgICAgICAgIHRyYWNrLT5zZXRUcmFja0xpc3QoKnRoaXMpOwog
CiAgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KFdURk1vdmUodHJhY2spKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaAppbmRleCA5NjYwZGY2ZmUyOTc3NGRk
ZGYzYmM5MzZmMzQ0MTI5NGQ4YzBkYWIzLi4yNWNlY2JmZWJiZTRjMmFhYmZjMjc3ZjJkNjA4NDE2
ODJjZWY2MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJh
Y2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5o
CkBAIC0zNSw5ICszNSw5IEBAIGNsYXNzIFZpZGVvVHJhY2s7CiAKIGNsYXNzIFZpZGVvVHJhY2tM
aXN0IGZpbmFsIDogcHVibGljIFRyYWNrTGlzdEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8VmlkZW9UcmFja0xpc3Q+IGNyZWF0ZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG93bmVy
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8VmlkZW9U
cmFja0xpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsK
LSAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrTGlzdChvd25lciwg
Y29udGV4dCkpOworICAgICAgICBhdXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tM
aXN0KGNvbnRleHQpKTsKICAgICAgICAgbGlzdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgICAg
IHJldHVybiBsaXN0OwogICAgIH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6Ci0gICAgVmlkZW9UcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Piwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFZpZGVvVHJhY2tMaXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKIAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKIH07CkBAIC02Miw0ICs2Miw4IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZp
ZGVvVHJhY2tMaXN0KSA9PSBzaXplb2YoVHJhY2tMaXN0QmFzZSksICIiKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlZp
ZGVvVHJhY2tMaXN0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpUcmFj
a0xpc3RCYXNlJiB0cmFja0xpc3QpIHsgcmV0dXJuIHRyYWNrTGlzdC50eXBlKCkgPT0gV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3Q7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKaW5kZXggYWIyYjdlNmMyM2ViZTBlM2I4MGI2NzNh
Yjk1OThhNDE3ODhkZTdkYi4uMjMxYjg0MGVhMDZmMDMwOWZjZjdhNDhkNzE2YWRkNGE5NzM3ODIz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKQEAg
LTI2LDggKzI2LDYgQEAKIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9
VklERU8sCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCi0gICAgR2Vu
ZXJhdGVBZGRPcGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBWaWRl
b1RyYWNrTGlzdCA6IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBsZW5ndGg7Cg==
</data>
<flag name="commit-queue"
          id="460750"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437560</attachid>
            <date>2021-09-07 15:01:28 -0700</date>
            <delta_ts>2021-09-07 15:57:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229924-20210907150127.patch</filename>
            <type>text/plain</type>
            <size>109444</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmYmYxMThlMjE1ZDM3
M2M3ZTc5YzQ3YmY0ZjM4NDRiNjA3MjFkYi4uOTIxZTY2ZGZlMWU2ZjEyZmEzNDQyYTJiMzVkZGIx
ZDY1YTBkOGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAyMS0wOS0wNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBWaWRlbyxB
dWRpbyxUZXh0VHJhY2sgYW5kIFRyYWNrTGlzdHMgdG8gbm90IGRlcGVuZCBvbiBIVE1MTWVkaWFF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
cmFja0Jhc2UgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMgY3VycmVudGx5IGFyZSBvbmx5IGFibGUg
dG8gaGFuZGxlIGEgc2luZ2xlICJjbGllbnQiCisgICAgICAgIGF0IGEgdGltZSwgd2hpY2ggbWVh
bnMgYSBjb21wbGljYXRlZCByZS1zZW5kaW5nIG9mIG5vdGlmaWNhdGlvbnMgZnJvbSBvbmUgY2xp
ZW50IHRvCisgICAgICAgIHRoZSBuZXh0IHRvIGVuc3VyZSBldmVyeXRoaW5nIGZsb3dzIHRvIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGlzCisgICAgICAgIGNvbXBsaWNh
dGVkIGNsaWVudCBoZWlyYXJjaHksIFRyYWNrcyBhbmQgdGhlaXIgVHJhY2tMaXN0cyBiZWluZyB0
aWdodGx5IGJvdW5kIHRvIHRoZWlyCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBtYWtl
IE1TRS1pbi1hLVdvcmtlciBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIGltcGxlbWVudC4KKworICAg
ICAgICBSZWZhY3RvciBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIHRvIGhh
dmUgbXVsdGlwbGUgY2xpZW50cywgdHJhY2tlZCBieQorICAgICAgICBhIFdlYWtIYXNoU2V0LiBS
ZW1vdmUgSFRNTE1lZGlhRWxlbWVudCBmcm9tIHRoYXQgY2xhc3MgaGVpcmFyY2h5LCBhbmQgcmVw
bGFjZSBpdCB3aXRoCisgICAgICAgIGEgV2Vha1B0ciB0byB0aGVpciBUcmFja0xpc3QgZm9yIG9w
YXF1ZVJvb3QgcHVycG9zZXMuCisKKyAgICAgICAgU2ltaWxhcmx5LCByZWZhY3RvciBBdWRpb1Ry
YWNrTGlzdCwgVmlkZW9UcmFja0xpc3QsIGFuZCBUZXh0VHJhY2tMaXN0IHRvIG5vdCByZXF1aXJl
CisgICAgICAgIGEgYmFja3BvaW50ZXIgdG8gSFRNTE1lZGlhRWxlbWVudCwgYW5kIHVzZSBhIFdl
YWtQdHI8dm9pZD4gaW5zdGVhZCwgYWxsb3dpbmcgZWl0aGVyCisgICAgICAgIFNvdXJjZUJ1ZmZl
ciBvciBIVE1MTWVkaWFFbGVtZW50IHRvIGJlIHRoZSBsaXN0J3Mgb3BhcXVlUm9vdC4KKworICAg
ICAgICBBIFRyYWNrQmFzZSBuZWVkZWQgYWNjZXNzIHRvIGEgSFRNTE1lZGlhRWxlbWVudCBvbmx5
IGZvciB0aGUgbmVjZXNzaXR5IG9mIG91dHB1dHRpbmcKKyAgICAgICAgYSB3YXJuaW5nIHRvIHRo
ZSBjb25zb2xlIHdoZW4gYSBsYW5ndWFnZSBlcnJvciBvY2N1cnJlZDsgaW5zdGVhZCwgbWFrZSBU
cmFja0Jhc2UgYQorICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgYW5kIHBhc3Mg
YSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBUcmFja0Jhc2UgKGFuZAorICAgICAgICBh
bGwgaXRzIGRlcml2ZWQgY2xhc3NlcykgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIEEg
VHJhY2tMaXN0QmFzZSBub3cgaGFzIGEgdHlwZSgpIG1ldGhvZCwgd2hpY2ggYWxsb3dzIGl0IHRv
IGJlIHNhZmVseSBjYXN0IHRvIEF1ZGlvVHJhY2ssCisgICAgICAgIFZpZGVvVHJhY2ssIGFuZCBU
ZXh0VHJhY2ssIHRocm91Z2ggdHlwZSB0cmFpdCBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICBU
ZXh0VHJhY2sgdXNlZCBIVE1MTWVkaWFFbGVtZW50IHRvIHJldHJpZXZlIGl0cyBUZXh0VHJhY2tM
aXN0IGZvciBjZXJ0YWluIG9wZXJhdGlvbnMsCisgICAgICAgIGFuZCBub3cgdGhhdCBlYWNoIFRy
YWNrQmFzZSBoYXMgYSBiYWNrcG9pbnRlciB0byBpdHMgVHJhY2tMaXN0LCB0aGlzIGlzIG5vIGxv
bmdlciBuZWNlc3NhcnkuCisKKyAgICAgICAgVGV4dFRyYWNrTGlzdCBub3cgaGFzIHNldER1cmF0
aW9uKCkvZHVyYXRpb24oKSBtZW1iZXIgZnVuY3Rpb25zLCBzbyB0aGF0IHdoZW4gVGV4dFRyYWNr
CisgICAgICAgIHJlY2VpdmVzIGEgY3VlIHdpdGggYW4gaW5kZWZpbml0ZSBkdXJhdGlvbiwgdGhh
dCBjdWUncyBlbmRUaW1lIGNhbiBiZSBjYWxjdWxhdGVkLgorCisgICAgICAgIFRoZSBBdWRpb1Ry
YWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIElETHMgcHJldmlvdXNseSBzcGVjaWZpZWQg
R2VuZXJhdGVJc1JlYWNoYWJsZSwKKyAgICAgICAgd2l0aCBhIHBhcmFtZXRlciBvZiBJbXBsRWxl
bWVudFJvb3QsIHdoaWNoIHJlcXVpcmVkIGFuIGVsZW1lbnQoKSBtZXRob2Qgb24gZWFjaDsgbm93
CisgICAgICAgIHRoYXQgVHJhY2tCYXNlIGhhcyBhbiBvcGFxdWVSb290KCkgbWV0aG9kLCB0aGlz
IHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRp
b1RyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrTGFiZWxDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYW5ndWFn
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92
ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxUcmFja0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjppZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OndpbGxSZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tJZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0xhbmd1YWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50Ojp3aWxsUmVtb3Zl
QXVkaW9UcmFjayk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0OjpyZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGw6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
RGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Oklu
YmFuZEdlbmVyaWNUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0
b21hdGljSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2s6On5UZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0ZXh0
VHJhY2tMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZUFsbEN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3VlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tBZGRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpjbGVhclRy
YWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnRyYWNrTGlzdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZSk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6aWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0Jhc2U6Omxhbmd1YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrQmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldElk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFiZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzZXRPcGFxdWVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OnJvb3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZWxlY3RlZENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6aWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjp3aWxsUmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZpZGVvVHJh
Y2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVudDo6dmlkZW9U
cmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZp
ZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVu
dDo6dmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrQ2xpZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tDbGllbnQ6OndpbGxSZW1vdmVWaWRlb1RyYWNrKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6CiAyMDIxLTA4LTIzICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIERlLWZsYWtlIG1lZGlhIHBhaW50aW5n
IHRlc3RzIGJ5IGRlbGF5aW5nIHJlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgdW50aWwg
ZWxlbWVudCBpcyBhYmxlIHRvIHBhaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNjdhNjFiYzg0MWRkYmY5NDkxNzdj
YTFlZGU3MWVlYzA3ODkwN2JlNS4uZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRlMDY0
NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNzQsNiArNzQsNyBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZl
cihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KHNvdXJjZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICwgbV9wcml2YXRlKFdURk1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihbdGhpc10geyByZXR1cm4g
b3BhcXVlUm9vdCgpOyB9KQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3Rh
cnQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNjMyLDIyICs2MzMsMjggQEAgdWludDY0
X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiAKIFZpZGVvVHJhY2tM
aXN0JiBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdmlkZW9UcmFj
a3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKChpc1JlbW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkp
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsK
KyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2V0T3BhcXVlUm9vdE9i
c2VydmVyKG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsKKyAgICB9CiAgICAgcmV0dXJuICptX3ZpZGVv
VHJhY2tzOwogfQogCiBBdWRpb1RyYWNrTGlzdCYgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrcygp
CiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVk
aW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVkKCkgPyBudWxscHRyIDog
bV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRpb1Ry
YWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVk
aW9UcmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7Cisg
ICAgfQogICAgIHJldHVybiAqbV9hdWRpb1RyYWNrczsKIH0KIAogVGV4dFRyYWNrTGlzdCYgU291
cmNlQnVmZmVyOjp0ZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAg
ICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRyKChpc1Jl
bW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpKSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykgeworICAgICAgICBtX3Rl
eHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVS
b290UHJvdmlkZXIpOworICAgIH0KICAgICByZXR1cm4gKm1fdGV4dFRyYWNrczsKIH0KIApAQCAt
Nzc5LDcgKzc4Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHN0ZXBzIDUuMi4xLTUuMi44LjEgYXMgcGVyIEVkaXRvcidzIERyYWZ0
IDA5IEphbnVhcnkgMjAxNSwgYW5kIHJlb3JkZXIgdGhpcwogICAgICAgICAgICAgLy8gNS4yLjEg
TGV0IG5ldyBhdWRpbyB0cmFjayBiZSBhIG5ldyBBdWRpb1RyYWNrIG9iamVjdC4KICAgICAgICAg
ICAgIC8vIDUuMi4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGlk
IHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KLSAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9U
cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSgqdGhpcywgKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICphdWRpb1RyYWNrSW5mby50cmFjayk7CisgICAgICAgICAg
ICBuZXdBdWRpb1RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbmV3QXVkaW9U
cmFjay0+c2V0U291cmNlQnVmZmVyKHRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjIuMyBJZiBh
dWRpb1RyYWNrcy5sZW5ndGggZXF1YWxzIDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CkBAIC04MDEsNyArODA5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAgICAgICAg
IC8vIDUuMi43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBub3QgY2Fu
Y2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBB
dWRpb1RyYWNrTGlzdCBvYmplY3QKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1
ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3
QXVkaW9UcmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVu
dCgpLT5hZGRBdWRpb1RyYWNrKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAogICAgICAgICAg
ICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVj
KCkpOwogCkBAIC04MTQsNyArODIyLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RlcHMgNS4zLjEtNS4zLjguMSBhcyBwZXIgRWRp
dG9yJ3MgRHJhZnQgMDkgSmFudWFyeSAyMDE1LCBhbmQgcmVvcmRlciB0aGlzCiAgICAgICAgICAg
ICAvLyA1LjMuMSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0
LgogICAgICAgICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBp
dCB0byB0aGUgaWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgotICAgICAgICAgICAgYXV0
byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKCp0aGlzLCAqdmlkZW9UcmFja0lu
Zm8udHJhY2spOworICAgICAgICAgICAgYXV0byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnZpZGVvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIG5ld1ZpZGVvVHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAg
ICBuZXdWaWRlb1RyYWNrLT5zZXRTb3VyY2VCdWZmZXIodGhpcyk7CiAKICAgICAgICAgICAgIC8v
IDUuMy4zIElmIHZpZGVvVHJhY2tzLmxlbmd0aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKQEAgLTgzNiw3ICs4NDUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQog
ICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50
IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAg
IC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFj
ZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNl
ZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50Lgot
ICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygp
LmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+
bWVkaWFFbGVtZW50KCktPmFkZFZpZGVvVHJhY2sobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwog
CiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlw
dGlvbi0+Y29kZWMoKSk7CiAKQEAgLTg1MSw3ICs4NjAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlh
bGl6YQogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdGVwcyA1LjQuMS01LjQuOC4x
IGFzIHBlciBFZGl0b3IncyBEcmFmdCAwOSBKYW51YXJ5IDIwMTUsIGFuZCByZW9yZGVyIHRoaXMK
ICAgICAgICAgICAgIC8vIDUuNC4xIExldCBuZXcgdGV4dCB0cmFjayBiZSBhIG5ldyBUZXh0VHJh
Y2sgb2JqZWN0IHdpdGggaXRzIHByb3BlcnRpZXMgcG9wdWxhdGVkIHdpdGggdGhlCiAgICAgICAg
ICAgICAvLyBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBz
ZWdtZW50LgotICAgICAgICAgICAgYXV0byBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6
OmNyZWF0ZShkb2N1bWVudCgpLCAqdGhpcywgdGV4dFRyYWNrUHJpdmF0ZSk7CisgICAgICAgICAg
ICBhdXRvIG5ld1RleHRUcmFjayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHRUcmFja1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VGV4dFRyYWNrLT5hZGRDbGllbnQo
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBu
ZXcgdGV4dCB0cmFjayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3Rp
dmUKICAgICAgICAgICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KQEAgLTg2OCw3ICs4NzgsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQogICAgICAgICAgICAgLy8gNS40LjYgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90
IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1
c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBv
biB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1l
bnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YWRkVGV4dFRyYWNrKG5ld1Rl
eHRUcmFjay5jb3B5UmVmKCkpOwogCiAgICAgICAgICAgICBtX3RleHRDb2RlY3MuYXBwZW5kKHRl
eHRUcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOwogCkBAIC0xMDIzLDkgKzEwMzMsMjQg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYgdHJhY2spCiAKICAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250
YWlucyh0cmFjaykpCiAgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKK30KIAotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVs
ZW1lbnQoKS0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCh0cmFjayk7Cit2b2lkIFNvdXJjZUJ1
ZmZlcjo6dmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQoreworICAgIGlm
IChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAg
ICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlcjo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAg
ICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisg
ICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2sp
Cit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJh
Y2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYg
dHJhY2spCkBAIC0xMDUwLDkgKzEwNzUsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKIAogICAgIGlmIChtX2F1ZGlvVHJh
Y2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAgbV9hdWRpb1Ry
YWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQogCi0gICAgaWYgKCFpc1JlbW92ZWQoKSkK
LSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQodHJhY2spOwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRp
b1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQo
QXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1Ry
YWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFuZ3VhZ2VD
aGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1f
YXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2No
ZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKQEAgLTEwNzcsMzkgKzExMTcsMTggQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiAKICAg
ICBpZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAg
ICAgICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQotICAgIGlmICghaXNS
ZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrTW9k
ZUNoYW5nZWQodHJhY2spOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmICghaXNSZW1v
dmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrQWRkQ3Vl
KHRyYWNrLCBjdWUpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBjdWVMaXN0KQotewotICAg
IGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4
dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3VlTGlzdCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyOjp0
ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17
Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYgdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmIGN1ZUxpc3QpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrJiB0cmFjaykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3Nv
dXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZUxpc3Qp
OworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykp
CisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFj
aykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKKyAgICBpZiAobV90ZXh0VHJhY2tz
ICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3RleHRUcmFja3Mt
PnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikKQEAgLTExMTks
OCArMTEzOCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KQogewotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlv
bkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc291cmNlLT5zZXREdXJhdGlvbkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBp
ZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0
aW9uKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIaWdoZXN0
UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CmluZGV4IGVlY2QzMWJmYzVmNGJhMmYzZjY2MDgwN2RlYTYyNTE3Nzc1YmE3NmIuLjg4OGQyZDZl
OThkYWJmOTdkYWJlMWM5MWYyNDhiMTA4NWQ2OTJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtNjksNiArNjksOSBAQCBj
bGFzcyBTb3VyY2VCdWZmZXIgZmluYWwKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNv
dXJjZUJ1ZmZlcik7CiBwdWJsaWM6CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFy
Z2V0OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9y
eTsKKwogICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7
CiAKQEAgLTEzNSw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyAgICB2b2lkKiBvcGFxdWVSb290KCkgeyBy
ZXR1cm4gdGhpczsgfQorCiBwcml2YXRlOgogICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtMTYxLDE1ICsxNjYsMjAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKICAgICB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7Ci0gICAgLy8gVmlkZW9UcmFja0NsaWVudAot
ICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCBhdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZv
aWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBh
dWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKwogICAgIC8vIFRl
eHRUcmFja0NsaWVudAogICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikg
ZmluYWw7CiAgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUo
VGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJh
Y2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisKKyAgICAvLyBWaWRlb1RyYWNr
Q2xpZW50CisgICAgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFs
OworICAgIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAg
ICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFsOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQpAQCAtMjA5LDYgKzIxOSw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEFwcGVuZE1vZGUgbV9tb2RlIHsgQXBwZW5kTW9kZTo6U2VnbWVu
dHMgfTsKIAorICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7
CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggOGY5OTBkYWYyYTRhNWZiZTRj
NDYxMTIwZDIwY2ZmOGJkMmVmODkyMy4uMDdkNDkyYzQwZjNjZmQ2M2MxN2NiZDZjMWRkZWMzZjAy
YTczNzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbApAQCAtMzgsNiArMzgsNyBAQAogICAgIENvbmRpdGlvbmFsPU1FRElB
X1NPVVJDRSwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlhU291cmNlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU291cmNlQnVmZmVyIDogRXZlbnRUYXJnZXQgewogICAg
IGF0dHJpYnV0ZSBBcHBlbmRNb2RlIG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmgKaW5kZXggZWY3MmQ5YjdhYWJkYzk5ZTczMGZmZGVlODBlMTAxMzU5ZjBh
ZmQwZi4uZjA1OGM5OWQ5MzVjMWY3M2JhOWY1OTE4NWI1MTRhNzkwNGQ3NDU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaApAQCAtMzYsMTMgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFja0Jhc2UmKTsKIAotaW5saW5lIHZvaWQqIHJv
b3QoVHJhY2tCYXNlKiB0cmFjaykKLXsKLSAgICBpZiAodHJhY2stPmVsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPmVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHRyYWNrOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiZTAxMmY5N2IwMDQ4OTQy
YTEwMGUzMjAzNGFhMGI3ZmQwYmM5ODllLi42OWZkMjFlNjJjZGEyNDUyMTg1NmZjYzhlNWQ2YmFl
N2Q3MzhlMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTQ1MCw2ICs0NTAsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9zaG91bGRB
dWRpb1BsYXliYWNrUmVxdWlyZVVzZXJHZXN0dXJlKGRvY3VtZW50LnRvcERvY3VtZW50KCkuYXVk
aW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkKICAgICAsIG1fc2hvdWxkVmlkZW9QbGF5YmFja1JlcXVpcmVVc2VyR2VzdHVy
ZShkb2N1bWVudC50b3BEb2N1bWVudCgpLnZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KCkgJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgLCBtX3ZvbHVtZUxv
Y2tlZChkZWZhdWx0Vm9sdW1lTG9ja2VkKCkpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihb
dGhpc10geyByZXR1cm4gb3BhcXVlUm9vdCgpOyB9KQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgLCBtX3JlbW90ZShSZW1vdGVQbGF5YmFjazo6Y3JlYXRlKCp0aGlz
KSkKICNlbmRpZgpAQCAtNTQ0LDEzICs1NDUsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlQ29u
ZmlndXJhdGlvbkNoYW5nZU9ic2VydmVyKCp0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKG1fYXVk
aW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyRWxlbWVudCgpOwotICAgIGlm
IChtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJFbGVtZW50KCk7Ci0g
ICAgaWYgKG1fdmlkZW9UcmFja3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyRWxlbWVu
dCgpOwotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBpZiAoaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZEV2ZW50KSB8fCBtX3JlbW90ZS0+aGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzKCkp
IHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGZh
bHNlOwpAQCAtMTg2OSw2ICsxODYzLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9U
cmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9B
bmRWaWRlbygpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tLaW5kQ2hh
bmdlZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1
ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNr
TGFiZWxDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tz
ICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1f
YXVkaW9UcmFja3MgJiYgbV9hdWRpb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBt
X2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAg
cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKIHsKICAgICBib29sIHRyYWNrSXNM
b2FkZWQgPSB0cnVlOwpAQCAtMTg4NCw4ICsxOTAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogICAgIH0KIAogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFkZGVkIHRyYWNrLCBjcmVhdGUgdGhlIGxpc3Qgb2YgdGV4
dCB0cmFja3MuCi0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcyA9
IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGVuc3VyZVRleHRUcmFja3MoKTsKIAog
ICAgIC8vIE1hcmsgdGhpcyB0cmFjayBhcyAiY29uZmlndXJlZCIgc28gY29uZmlndXJlVGV4dFRy
YWNrcyB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4uCiAgICAgdHJhY2suc2V0SGFzQmVlbkNv
bmZpZ3VyZWQodHJ1ZSk7CkBAIC0xOTA0LDYgKzE5MjAsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogI2VuZGlmCiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0
cmFjaykKK3sKKyAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlv
bnMgJiYgdHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNr
Lm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCisgICAgICAgIHRyYWNrLnNldE1v
ZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworCisgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBt
X3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TGFiZWxDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRyYWNrcyAm
JiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRy
YWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJh
Y2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmICh0cmFjay50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgcmVtb3ZlVGV4dFRyYWNr
KHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKQEAgLTE5MTEsMTAgKzE5NTQsMjcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sm
IHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9BbmRWaWRlbygpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykK
IHsKLSAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNrLm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCi0gICAgICAgIHRyYWNrLnNldE1vZGUoVGV4
dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYWJl
bENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYg
bV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV92aWRl
b1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICByZW1v
dmVWaWRlb1RyYWNrKHRyYWNrKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkln
bm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKQpAQCAtNDA4NywxNSArNDE0NywxNCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIHNldEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0
YXRlKEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRlOjpQcmV2ZW50ZWRBdXRvcGxheSk7CiAgICAg
fQogCi0gICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoKnRoaXMsIHRyYWNrKSk7
CisgICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0cmFjaykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQogewogICAgIC8v
IDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKICAgICAvLyAxLiBBc3Nv
Y2lhdGUgdGhlIHJlbGV2YW50IGRhdGEgd2l0aCBhIG5ldyB0ZXh0IHRyYWNrIGFuZCBpdHMgY29y
cmVzcG9uZGluZyBuZXcgVGV4dFRyYWNrIG9iamVjdC4KLSAgICBhdXRvIHRleHRUcmFjayA9IElu
YmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCksICp0aGlzLCB0cmFjayk7Ci0gICAgdGV4
dFRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQoKSwgdHJhY2spOwogCiAg
ICAgLy8gMi4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIGtpbmQsIGxhYmVsLCBhbmQgbGFuZ3Vh
Z2UgYmFzZWQgb24gdGhlIHNlbWFudGljcyBvZiB0aGUgcmVsZXZhbnQgZGF0YSwKICAgICAvLyBh
cyBkZWZpbmVkIGJ5IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9uLiBJZiB0aGVyZSBpcyBubyBs
YWJlbCBpbiB0aGF0IGRhdGEsIHRoZW4gdGhlIGxhYmVsIG11c3QKQEAgLTQxMjUsNyArNDE4NCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKLSAg
ICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSgqdGhpcywgdHJhY2spKTsKKyAgICBh
dXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0cmFjayk7CisgICAgYWRkVmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrKQpAQCAtNDE0OCw2ICs0MjA4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFJlZjxBdWRpb1RyYWNrPiYmIHRyYWNrKQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xpZW50KCp0aGlzKTsKICAg
ICBlbnN1cmVBdWRpb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQx
NjUsNiArNDIyNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFJlZjxU
ZXh0VHJhY2s+JiYgdHJhY2spCiAgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IHBh
Z2UtPmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuY2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZW5zdXJlVGV4
dFRyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQxNzMsMTIgKzQyMzUs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNr
PiYmIHRyYWNrKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dn
ZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICBlbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNr
KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhSZWY8QXVk
aW9UcmFjaz4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICB0cmFj
ay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIG1fYXVkaW9UcmFja3MtPnJlbW92ZSh0cmFjay5n
ZXQoKSk7CiB9CiAKQEAgLTQxODcsMTQgKzQyNTAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2soUmVmPFRleHRUcmFjaz4mJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2
ZW4KICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSB7ICp0aGlzIH07CiAgICAgaWYg
KGF1dG8gY3VlcyA9IG1ha2VSZWZQdHIodHJhY2stPmN1ZXMoKSkpCiAgICAgICAgIHRleHRUcmFj
a1JlbW92ZUN1ZXModHJhY2ssICpjdWVzKTsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAg
ICB0cmFjay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIGlmIChtX3RleHRUcmFja3MpCiAgICAg
ICAgIG1fdGV4dFRyYWNrcy0+cmVtb3ZlKHRyYWNrLCBzY2hlZHVsZUV2ZW50KTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNrPiYmIHRy
YWNrKQogewotICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOworICAgIHRyYWNrLT5jbGVhckNsaWVu
dCgqdGhpcyk7CiAgICAgbV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKIH0KIApAQCAtNDIz
MSw3ICs0Mjk0LDcgQEAgRXhjZXB0aW9uT3I8VGV4dFRyYWNrJj4gSFRNTE1lZGlhRWxlbWVudDo6
YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QKIAogICAgIC8vIDUuIENyZWF0
ZSBhIG5ldyB0ZXh0IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5ldyBvYmplY3QsIGFuZCBz
ZXQgaXRzIHRleHQgdHJhY2sga2luZCB0byBraW5kLCBpdHMgdGV4dAogICAgIC8vIHRyYWNrIGxh
YmVsIHRvIGxhYmVsLCBpdHMgdGV4dCB0cmFjayBsYW5ndWFnZSB0byBsYW5ndWFnZS4uLgotICAg
IGF1dG8gdHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgdGhpcywga2luZCwg
ZW1wdHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlKTsKKyAgICBhdXRvIHRyYWNrID0gVGV4dFRy
YWNrOjpjcmVhdGUoJmRvY3VtZW50KCksIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBsYW5n
dWFnZSk7CiAgICAgYXV0byYgdHJhY2tSZWZlcmVuY2UgPSB0cmFjay5nZXQoKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICB0cmFja1JlZmVyZW5jZS5zZXRMb2dnZXIobG9nZ2VyKCks
IGxvZ0lkZW50aWZpZXIoKSk7CkBAIC00MjU0LDI0ICs0MzE3LDMxIEBAIEV4Y2VwdGlvbk9yPFRl
eHRUcmFjayY+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0CiAKIEF1ZGlvVHJhY2tMaXN0JiBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVBdWRp
b1RyYWNrcygpCiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJh
Y2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghbV9hdWRpb1RyYWNr
cykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVkaW9U
cmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7CisgICAg
fQogCiAgICAgcmV0dXJuICptX2F1ZGlvVHJhY2tzOwogfQogCiBUZXh0VHJhY2tMaXN0JiBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNr
cykKLSAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFr
UHRyKHRoaXMpLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX3RleHRUcmFja3MpIHsKKyAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNr
TGlzdDo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
KyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVSb290
UHJvdmlkZXIpOworICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0aW9uTWVk
aWFUaW1lKCkpOworICAgIH0KIAogICAgIHJldHVybiAqbV90ZXh0VHJhY2tzOwogfQogCiBWaWRl
b1RyYWNrTGlzdCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlVmlkZW9UcmFja3MoKQogewotICAg
IGlmICghbV92aWRlb1RyYWNrcykKLSAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tM
aXN0OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92
aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zZXRPcGFxdWVS
b290T2JzZXJ2ZXIobV9vcGFxdWVSb290UHJvdmlkZXIpOworICAgIH0KIAogICAgIHJldHVybiAq
bV92aWRlb1RyYWNrczsKIH0KQEAgLTUwNDcsNiArNTExNyw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoKQogICAgIGlmIChub3cgPiBkdXIpCiAg
ICAgICAgIHNlZWtJbnRlcm5hbChkdXIpOwogCisgICAgaWYgKG1fdGV4dFRyYWNrcykKKyAgICAg
ICAgbV90ZXh0VHJhY2tzLT5zZXREdXJhdGlvbihkdXIpOworCiAgICAgZW5kUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCA2ZTFjOWY5ZDU2YjExZDE2MTZiZDY3MTFmOTc3ZWI1ZGZlMzEyYmY4Li4zMmVk
Y2NkODA5NDc1OGM4YzRiNDI2NjJjY2Y3MWY0ZjRiMjY4ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlZpc2liaWxp
dHlDaGFuZ2VDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMp
CkBAIC0zODMsMTcgKzM4NCwyOCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50
CiAgICAgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOwor
ICAgIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2
b2lkIGF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQg
YXVkaW9UcmFja0xhbmd1YWdlQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB3
aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrJikgZmluYWw7CiAKICAgICAvLyBUZXh0VHJh
Y2tDbGllbnQKLSAgICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNr
JiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFj
a0xhYmVsQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0xhbmd1
YWdlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMo
VGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOworICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmlu
YWw7CisgICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikg
ZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNr
Q3VlJikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIGZp
bmFsOwogCiAgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZvaWQgdmlkZW9UcmFja0tpbmRD
aGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvVHJhY2tMYWJlbENoYW5n
ZWQoVmlkZW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdl
ZChWaWRlb1RyYWNrJikgZmluYWw7CiAgICAgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrKFZpZGVv
VHJhY2smKSBmaW5hbDsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24qKTsKQEAgLTExNTcsNiArMTE2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEJsb2I+IG1fYmxvYjsKICAgICBVUkwgbV9ibG9iVVJMRm9yUmVhZGluZzsKICAgICBNZWRp
YVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKKyAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1f
b3BhcXVlUm9vdFByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgYm9vbCBtX2hhc05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCBiODY1YzcyYTJkM2RjNDliZmU3YTZlNDE0
MTc1NWQ4OWJmY2U5YTdkLi4xYmYxOWFlY2Q3MWM1YzVlYWM2OGZmYWM2ZDMyYjk4N2ExMTUwZTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQogewogICAgIGlmICht
X3RyYWNrKSB7CiAgICAgICAgIG1fdHJhY2stPmNsZWFyRWxlbWVudCgpOwotICAgICAgICBtX3Ry
YWNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7
CiAgICAgfQogfQogCkBAIC0xNTIsNiArMTUyLDcgQEAgTG9hZGFibGVUZXh0VHJhY2smIEhUTUxU
cmFja0VsZW1lbnQ6OnRyYWNrKCkKICAgICAgICAgaWYgKCFUZXh0VHJhY2s6OmlzVmFsaWRLaW5k
S2V5d29yZChraW5kKSkKICAgICAgICAgICAgIGtpbmQgPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKTsKICAgICAgICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUoKnRo
aXMsIGtpbmQsIGxhYmVsKCksIHNyY2xhbmcoKSk7CisgICAgICAgIG1fdHJhY2stPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgfQogICAgIEFTU0VSVChtX3RyYWNrLT50cmFja0VsZW1lbnQoKSA9PSB0
aGlzKTsKIApAQCAtMjk5LDQ0ICszMDAsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTFRyYWNr
RWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdAogICAgIHJl
dHVybiBudWxsQXRvbSgpOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0tp
bmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQodHJhY2sp
OwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayYgdHJhY2spCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayYpCiB7CiAgICAgLy8gU2luY2Ugd2UndmUgbW92ZWQgdG8gYSBuZXcgcGFyZW50
LCB3ZSBtYXkgbm93IGJlIGFibGUgdG8gbG9hZC4KICAgICBpZiAocmVhZHlTdGF0ZSgpID09IEhU
TUxUcmFja0VsZW1lbnQ6Ok5PTkUpCiAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwotCi0gICAgaWYg
KGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNr
TW9kZUNoYW5nZWQodHJhY2spOwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFj
a0FkZEN1ZXMoVGV4dFRyYWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgY3VlcykK
LXsKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcGFyZW50
LT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKLX0KLSAgICAKLXZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0
VHJhY2tDdWVMaXN0JiBjdWVzKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVu
dCgpKQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZXMpOwot
fQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNr
JiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3VlKHRyYWNrLCBjdWUp
OwotfQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4
dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50
ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRy
YWNrLCBjdWUpOwogfQogCiBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVu
dDo6bWVkaWFFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmgKaW5kZXggZjc4OTg5OGQxZjdkZDcwZTM2NTcxOThhMjkxYzhkYjQyNzJhOGFjYy4uYjg2MmQ0
OWE0YTkyYzMzNjczNTU4OTFjYjY0Njg1ZTY4MDE1ZTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmgKQEAgLTg0LDExICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
ZXh0VHJhY2tDbGllbnQKICAgICB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYp
IGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBmaW5hbDsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwg
Y29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVt
b3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5M
b2FkVVJMKGNvbnN0IFVSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmNwcAppbmRleCBjYWI3NzgyMWE5NDdjZDhlYzdhMjIwOTVmNzlhMjI2OTlmZDBjMzMzLi4zY2I3
MThkM2RjMjdlNTgzYjVhNWRmMTA5M2EwMzY1MjdjMDJlY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tM
aXN0LmgiCiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc1LDkgKzc1LDggQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVu
dGFyeUtleXdvcmQoKQogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1BdWRpb1RyYWNrOjpB
dWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVudCwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKLSAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpBdWRpb1Ry
YWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0
ZS5sYW5ndWFnZSgpKQotICAgICwgbV9jbGllbnQoJmNsaWVudCkKK0F1ZGlvVHJhY2s6OkF1ZGlv
VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tC
YXNlOjpBdWRpb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCks
IHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkK
ICAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogewpAQCAtMTA3LDYgKzEw
NiwxNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OnNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICBzZXRJZChtX3ByaXZhdGUtPmlkKCkpOwogfQogCit2b2lkIEF1ZGlv
VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQoreworICAgIFRy
YWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOworCisgICAgbV9jbGllbnRzLmZvckVhY2go
WyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYW5ndWFnZUNo
YW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCiBib29sIEF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5k
KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZSA9PSBh
bHRlcm5hdGl2ZUtleXdvcmQoKQpAQCAtMTIzLDYgKzEzMSwyMSBAQCB2b2lkIEF1ZGlvVHJhY2s6
OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ByaXZh
dGUtPnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChh
dXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCgq
dGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6YWRkQ2xpZW50KEF1ZGlvVHJh
Y2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGll
bnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6
Y2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2Ns
aWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwog
fQogCiBzaXplX3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpIGNvbnN0CkBAIC0xMzcs
MTggKzE2MCwyNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OmVuYWJsZWRDaGFuZ2VkKGJvb2wgZW5hYmxl
ZCkKIAogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJh
Y2s6OmlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBzZXRJZChpZCk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LmF1ZGlvVHJhY2tJZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlv
VHJhY2s6OmxhYmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKIHsKICAgICBzZXRM
YWJlbChsYWJlbCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQp
IHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoKnRoaXMpOworICAgIH0p
OwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5n
JiBsYW5ndWFnZSkKQEAgLTE1OCwxMSArMTg4LDkgQEAgdm9pZCBBdWRpb1RyYWNrOjpsYW5ndWFn
ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgQXVkaW9UcmFjazo6
d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtZWRpYUVsZW1l
bnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBl
bGVtZW50LT5yZW1vdmVBdWRpb1RyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92ZUF1ZGlvVHJh
Y2soKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9t
UHJpdmF0ZSgpCkBAIC0xOTUsMTEgKzIyMyw2IEBAIHZvaWQgQXVkaW9UcmFjazo6dXBkYXRlS2lu
ZEZyb21Qcml2YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgQXVkaW9UcmFjazo6c2V0TWVkaWFFbGVt
ZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6
OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogdm9pZCBBdWRpb1RyYWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5oCmluZGV4IDk5YTQ1MzI4YzI5ZWEwYjJjNWVjZjQyN2YxN2E0NWMwNDQxN2ZkZjcuLjM3NTEw
YThjZDJmOGY0MDE1MzU4OTI1ZGY5OWRhZWM5OGYxOTYwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFjay5oCkBAIC0zMCwyMiArMzAsMjkgQEAKIAogI2luY2x1ZGUgIkF1ZGlv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1dl
YWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFjazsK
K2NsYXNzIEF1ZGlvVHJhY2tMaXN0OwogCi1jbGFzcyBBdWRpb1RyYWNrQ2xpZW50IHsKK2NsYXNz
IEF1ZGlvVHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXVkaW9UcmFja0NsaWVu
dD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7
Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFj
ayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrSWRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNr
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9U
cmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1Ry
YWNrJikgeyB9CiB9OwogCiBjbGFzcyBBdWRpb1RyYWNrIGZpbmFsIDogcHVibGljIE1lZGlhVHJh
Y2tCYXNlLCBwcml2YXRlIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1
ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNr
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
ZGlvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXVkaW9UcmFjayhjb250ZXh0LCB0cmFja1ByaXZhdGUpKTsKICAgICB9CiAgICAgdmly
dHVhbCB+QXVkaW9UcmFjaygpOwogCkBAIC01OSwyMSArNjYsMjIgQEAgcHVibGljOgogICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQg
c2V0RW5hYmxlZChjb25zdCBib29sKTsKIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7
IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBhZGRDbGllbnQoQXVkaW9UcmFja0Ns
aWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYpOwogCiAgICAg
c2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKSBjb25zdDsKIAogICAgIGNvbnN0IEF1ZGlvVHJhY2tQ
cml2YXRlJiBwcml2YXRlVHJhY2soKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KICAgICB2
b2lkIHNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgc2V0TWVkaWFF
bGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZp
bmFsOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50
JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICBBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBBdWRpb1RyYWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBpc1ZhbGlkS2luZChjb25z
dCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAKQEAgLTkyLDcgKzEwMCw4IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1
ZGlvVHJhY2siOyB9CiAjZW5kaWYKIAotICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xpZW50IHsg
bnVsbHB0ciB9OworICAgIFdlYWtQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja0xpc3Q7
CisgICAgV2Vha0hhc2hTZXQ8QXVkaW9UcmFja0NsaWVudD4gbV9jbGllbnRzOwogICAgIFJlZjxB
dWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAppbmRleCAzOTM0
NjY2ZjVmYzA2MjE3ZDNlM2VlOWM1ZTAxZDRjYTczMWMwZWZhLi5iOTQzY2Y1NWVkOWYxNTkzZTcz
MzI3NWQ3OWNjNjAyOGIwMDI2MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwKQEAgLTI2LDggKzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCisgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFjayB7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKaW5kZXggNjQwNTgxNzFkNDVhODgxZWYxZTBk
YzZkOGVlM2QzNDMzZDU2MWRjYS4uMzNhMDdkNGVjNzFkMTg4YmI5NTg3ZDBkOWJhODgyN2EzOTYx
NDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAK
QEAgLTMwLDEyICszMCwxMSBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAKICNpbmNs
dWRlICJBdWRpb1RyYWNrLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChXZWFrUHRy
PEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgOiBUcmFja0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitBdWRpb1RyYWNrTGlz
dDo6QXVkaW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IFRyYWNrTGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3QpCiB7
CiB9CiAKQEAgLTUzLDEzICs1MiwyMSBAQCB2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUmVm
PEF1ZGlvVHJhY2s+JiYgdHJhY2spCiAgICAgfQogICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChp
bnNlcnRpb25JbmRleCwgdHJhY2sucHRyKCkpOwogCi0KLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRp
YUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwot
ICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJh
Y2stPnRyYWNrTGlzdCgpKQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAog
ICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKK3ZvaWQgQXVk
aW9UcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQp
Cit7CisgICAgYXV0byYgYXVkaW9UcmFjayA9IGRvd25jYXN0PEF1ZGlvVHJhY2s+KHRyYWNrKTsK
KyAgICBpZiAoYXVkaW9UcmFjay50cmFja0xpc3QoKSA9PSB0aGlzKQorICAgICAgICBhdWRpb1Ry
YWNrLmNsZWFyVHJhY2tMaXN0KCk7CisKKyAgICBUcmFja0xpc3RCYXNlOjpyZW1vdmUodHJhY2ss
IHNjaGVkdWxlRXZlbnQpOworfQorCiBBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKaW5kZXgg
OGFlMDM0MjAxNDJmZTFjZjYzODBlZmQzZGJlODEyMmM0YjQ0OGQ3ZS4uOTVmZDkwYjRjYWJiYmQ4
MzgwYzVhYzBiNTM5OThmMTRhY2FmNDVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBBdWRpb1RyYWNrOwogCiBj
bGFzcyBBdWRpb1RyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVk
aWFFbGVtZW50PiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYo
Km5ldyBBdWRpb1RyYWNrTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5l
ZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CkBAIC00OCwxMiArNDgsMTMgQEAg
cHVibGljOgogICAgIEF1ZGlvVHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAg
IEF1ZGlvVHJhY2sqIGxhc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEp
OyB9CiAgICAgdm9pZCBhcHBlbmQoUmVmPEF1ZGlvVHJhY2s+JiYpOworICAgIHZvaWQgcmVtb3Zl
KFRyYWNrQmFzZSYsIGJvb2wgc2NoZWR1bGVFdmVudCA9IHRydWUpIGZpbmFsOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEF1ZGlvVHJhY2tMaXN0KFdlYWtQ
dHI8SFRNTE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBBdWRp
b1RyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiB9OwpAQCAtNjEsNCArNjIsOCBAQCBz
dGF0aWNfYXNzZXJ0KHNpemVvZihBdWRpb1RyYWNrTGlzdCkgPT0gc2l6ZW9mKFRyYWNrTGlzdEJh
c2UpLCAiIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVybiB0cmFj
a0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OkF1ZGlvVHJhY2tMaXN0OyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCmluZGV4IGM0
NTU0Y2YyZDIwN2Y2M2ZhN2UzOTlkYWU0NzQ5ZTZjOTEyNzQ3ZGEuLjhiZTVkMGYxYmU4NTZmN2Ni
MTMyODNiMzEyOTM1ZDNlNTM1NTNmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaWRsCkBAIC0yNiw4ICsyNiw2IEBACiBbCiAgICAgQWN0aXZlRE9NT2Jq
ZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bEVsZW1lbnRSb290LAotICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBvc2VkPVdp
bmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgOiBFdmVudFRhcmdldCB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKaW5kZXggODM4MDIzMmI3OTI4
YTI3YjkzMjM2ODA2YzAyODUyOWYwN2JiZWE4MC4uZmE3OGYzYmJlMjkxOGRjYWE4Mzg0OTc3Yzkz
NzlhYTQ4NWQ0NGQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZERhdGFUZXh0VHJhY2suY3BwCkBAIC0zMCwyMiArMzAsMjIgQEAKICNpZiBFTkFCTEUoVklERU8p
CiAKICNpbmNsdWRlICJEYXRhQ3VlLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kRGF0YVRleHRUcmFj
ayk7CiAKLWlubGluZSBJbmJhbmREYXRhVGV4dFRyYWNrOjpJbmJhbmREYXRhVGV4dFRyYWNrKERv
Y3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFj
a1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwg
Y2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kRGF0YVRleHRUcmFjazo6SW5iYW5k
RGF0YVRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQcml2
YXRlKQogewogfQogCi1SZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gSW5iYW5kRGF0YVRleHRUcmFj
azo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmREYXRhVGV4dFRy
YWNrPiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJhY2sg
PSBhZG9wdFJlZigqbmV3IEluYmFuZERhdGFUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJh
Y2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZERh
dGFUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkpOwogICAgIHRleHRUcmFjay0+c3Vz
cGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KQEAgLTcwLDggKzcwLDkg
QEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgbWVkaWFFbGVtZW50KCkpIHsKLSAgICAg
ICAgY3VlLT5zZXRFbmRUaW1lKG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpKTsK
KyAgICBhdXRvKiB0ZXh0VHJhY2tMaXN0ID0gZG93bmNhc3Q8VGV4dFRyYWNrTGlzdD4odHJhY2tM
aXN0KCkpOworICAgIGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgdGV4dFRyYWNrTGlz
dCAmJiB0ZXh0VHJhY2tMaXN0LT5kdXJhdGlvbigpLmlzVmFsaWQoKSkgeworICAgICAgICBjdWUt
PnNldEVuZFRpbWUodGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKSk7CiAgICAgICAgIG1faW5jb21w
bGV0ZUN1ZU1hcC5hcHBlbmQoJmN1ZS5nZXQoKSk7CiAgICAgfQogCkBAIC0xMDEsOCArMTAyLDkg
QEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYKICAgICBjdWUtPndpbGxDaGFuZ2UoKTsKIAogICAg
IE1lZGlhVGltZSBlbmQgPSBpbkVuZDsKLSAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgp
ICYmIG1lZGlhRWxlbWVudCgpKQotICAgICAgICBlbmQgPSBtZWRpYUVsZW1lbnQoKS0+ZHVyYXRp
b25NZWRpYVRpbWUoKTsKKyAgICBhdXRvKiB0ZXh0VHJhY2tMaXN0ID0gZG93bmNhc3Q8VGV4dFRy
YWNrTGlzdD4odHJhY2tMaXN0KCkpOworICAgIGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkg
JiYgdGV4dFRyYWNrTGlzdCAmJiB0ZXh0VHJhY2tMaXN0LT5kdXJhdGlvbigpLmlzVmFsaWQoKSkK
KyAgICAgICAgZW5kID0gdGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKTsKICAgICBlbHNlCiAgICAg
ICAgIG1faW5jb21wbGV0ZUN1ZU1hcC5yZW1vdmVGaXJzdChjdWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCmluZGV4IGY2YjUwZjQ3YTlh
NDUyNDY2M2U1NmJlMWI2MWI2MDM3ODIzNmYzMTQuLjI1MDE4NGFhNzUwYWM2ODM0MWRjNjFhMjg5
N2RmYzEyYjA4NWExODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kRGF0YVRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgRGF0YUN1ZTsKIGNsYXNz
IEluYmFuZERhdGFUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEluYmFuZERhdGFUZXh0VHJhY2spOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8
SW5iYW5kRGF0YVRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSYpOwogICAgIHZpcnR1YWwgfkluYmFuZERhdGFUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToK
LSAgICBJbmJhbmREYXRhVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIEluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1lbnQm
LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICB2b2lkIGFkZERhdGFDdWUoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNp
Z25lZCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDU1NmU0NDllODc2MmFmMTUwNWM5MTA5MDM2N2Vl
MTU4ZGQzYTAyOWYuLjIzOTFkNWVkZTU3MjYwMWFiNzk0ZDMyNTVhNmZlOWUxNWQ0YjgzZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRy
YWNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRlICJWVFRSZWdpb25MaXN0Lmgi
CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBA
IC02MywxNCArNjQsMTQgQEAgdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpyZW1vdmUoVGV4
dFRyYWNrQ3VlJiBwdWJsaWNDdWUpCiAgICAgICAgIG1fZGF0YVRvQ3VlTWFwLnJlbW92ZShjdWVJ
ZGVudGlmaWVyKTsKIH0KIAotaW5saW5lIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OkluYmFuZEdl
bmVyaWNUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDogSW5iYW5kVGV4
dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkKK2lubGluZSBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogSW5iYW5kVGV4dFRy
YWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpCiB7CiB9CiAKLVJlZjxJbmJhbmRHZW5lcmljVGV4
dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQorUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKIHsKLSAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5k
R2VuZXJpY1RleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICBh
dXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhkb2N1
bWVudCwgdHJhY2tQcml2YXRlKSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsK
ICAgICByZXR1cm4gdGV4dFRyYWNrOwogfQpAQCAtODMsOCArODQsOCBAQCB2b2lkIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKFRleHRUcmFja0N1ZUdlbmVyaWMm
IGN1ZSwgSW5iYQogCiAgICAgY3VlLnNldFN0YXJ0VGltZShpbmJhbmRDdWUuc3RhcnRUaW1lKCkp
OwogICAgIE1lZGlhVGltZSBlbmRUaW1lID0gaW5iYW5kQ3VlLmVuZFRpbWUoKTsKLSAgICBpZiAo
ZW5kVGltZS5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAg
ZW5kVGltZSA9IG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpOworICAgIGlmIChl
bmRUaW1lLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHRleHRUcmFja0xpc3QoKSAmJiB0ZXh0VHJh
Y2tMaXN0KCktPmR1cmF0aW9uKCkuaXNWYWxpZCgpKQorICAgICAgICBlbmRUaW1lID0gdGV4dFRy
YWNrTGlzdCgpLT5kdXJhdGlvbigpOwogICAgIGN1ZS5zZXRFbmRUaW1lKGVuZFRpbWUpOwogICAg
IGN1ZS5zZXRUZXh0KGluYmFuZEN1ZS5jb250ZW50KCkpOwogICAgIGN1ZS5zZXRJZChpbmJhbmRD
dWUuaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5oCmluZGV4IGZlOTUzNDhkM2ZiYjFiODM2NDA4NTc0YjI3MDEwYTc2ZDNhMzFi
MGQuLjQ1OTdiMmExYzZmNzNiNTY5MWI0NzU4NzEzNTQyMzI3MjkyZTU4YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCkBAIC01
MywxMSArNTMsMTEgQEAgcHJpdmF0ZToKIGNsYXNzIEluYmFuZEdlbmVyaWNUZXh0VHJhY2sgZmlu
YWwgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrLCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVudCB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmRHZW5lcmljVGV4dFRyYWNrKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IGNyZWF0ZShEb2N1
bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBz
dGF0aWMgUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmRHZW5lcmljVGV4dFRyYWNr
KCk7CiAKIHByaXZhdGU6Ci0gICAgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhEb2N1bWVudCYsIFRl
eHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAg
dm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSBmaW5hbDsKICAgICB2b2lkIHVw
ZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCmluZGV4IDljZmExNGRmMmFlOTU4NjZj
NTNiOGIxMDNiNmQ4NTlkNGJmZDVkOWMuLmM2ZmVhMzVlZDM4YjA0ODYwM2QyY2U4MWRmYWJiMDI2
MTg4NDIwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJhbmREYXRhVGV4dFRyYWNrLmgiCiAj
aW5jbHVkZSAiSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRU
cmFja1ByaXZhdGUuaCIKQEAgLTM5LDI0ICszOCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJhbmRUZXh0VHJhY2spOwogCi1SZWY8SW5i
YW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCitSZWY8SW5iYW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKIHsK
ICAgICBzd2l0Y2ggKHRyYWNrUHJpdmF0ZS5jdWVGb3JtYXQoKSkgewogICAgIGNhc2UgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0OjpEYXRhOgotICAgICAgICByZXR1cm4gSW5iYW5k
RGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7Cisg
ICAgICAgIHJldHVybiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIHRyYWNr
UHJpdmF0ZSk7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6Okdl
bmVyaWM6Ci0gICAgICAgIHJldHVybiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoZG9j
dW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICBjYXNlIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6V2ViVlRUOgotICAgICAgICByZXR1cm4g
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2
YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKGRvY3Vt
ZW50LCB0cmFja1ByaXZhdGUpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBhdXRvIHRleHRUcmFjayA9IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwg
Y2xpZW50LCB0cmFja1ByaXZhdGUpOworICAgIGF1dG8gdGV4dFRyYWNrID0gSW5iYW5kRGF0YVRl
eHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpOwogICAgIHRleHRUcmFjay0+
c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KIAotSW5iYW5kVGV4
dFRyYWNrOjpJbmJhbmRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGll
bnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDog
VGV4dFRyYWNrKCZkb2N1bWVudCwgJmNsaWVudCwgZW1wdHlBdG9tKCksIHRyYWNrUHJpdmF0ZS5p
ZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCksIEluQmFu
ZCkKK0luYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogVGV4dFRyYWNrKCZk
b2N1bWVudCwgZW1wdHlBdG9tKCksIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFi
ZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCksIEluQmFuZCkKICAgICAsIG1fcHJpdmF0ZSh0
cmFja1ByaXZhdGUpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CkBAIC0xNTks
MTAgKzE1OCw5IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjp3aWxsUmVtb3Zl
KCkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKG1lZGlhRWxlbWVudCgpLmdldCgp
KTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50LT5yZW1v
dmVUZXh0VHJhY2soKnRoaXMpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xp
ZW50KSB7CisgICAgICAgIGNsaWVudC53aWxsUmVtb3ZlVGV4dFRyYWNrKCp0aGlzKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCkBA
IC0xOTcsMTQgKzE5NSw2IEBAIE1lZGlhVGltZSBJbmJhbmRUZXh0VHJhY2s6OnN0YXJ0VGltZVZh
cmlhbmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdGFydFRpbWVWYXJpYW5jZSgp
OwogfQogCi12b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNldE1lZGlhRWxlbWVu
dChlbGVtZW50KTsKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBtX3ByaXZhdGUtPnNl
dExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKLSNlbmRpZgotfQotCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TG9nZ2VyKGNvbnN0
IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggYmIxMmMxNTlkZTc0Zjky
OTQ1MzY5NTQxZDc4NzJlNmM1YzFhY2I0Ny4uZjI4YTFkNDg1YTU5OWI2ODljMGY2MTA0ZDZmM2Y4
NDEwYzVlMDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRl
eHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmRUZXh0VHJhY2spOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQm
LCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGlj
IFJlZjxJbmJhbmRUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2soKTsKIAogICAgIGJvb2wgaXND
bG9zZWRDYXB0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDksMTMgKzQ5LDEyIEBAIHB1Ymxp
YzoKICAgICBBdG9tU3RyaW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Jik7Ci0gICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Pikg
b3ZlcnJpZGU7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIo
Y29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoK
LSAgICBJbmJhbmRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlJik7CisgICAgSW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgdm9pZCBzZXRNb2RlSW50ZXJuYWwoTW9kZSk7CiAg
ICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCAyYWE5ZjNiMDNhYjNh
MTQ0ZTkyNzEzYTY1ZmFmM2ZmY2RmNWFhN2FjLi4yMjIzYTU3MmFhMGY2Y2E5NGMyZDI3NGYxZWMz
NzU0YmM1MjVmNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kV2ViVlRUVGV4dFRyYWNr
KTsKIAotaW5saW5lIEluYmFuZFdlYlZUVFRleHRUcmFjazo6SW5iYW5kV2ViVlRUVGV4dFRyYWNr
KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRU
cmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVu
dCwgY2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIHRy
YWNrUHJpdmF0ZSkKIHsKIH0KIAotUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorUmVmPEluYmFuZFRleHRU
cmFjaz4gSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJh
Y2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50
LCB0cmFja1ByaXZhdGUpKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5i
YW5kV2ViVlRUVGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpKTsKICAgICB0ZXh0VHJh
Y2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAppbmRleCAz
MTUyMzU3MjliNWZiZDk5ZjYzNGZhN2Q2Yzc3NmMyN2JjNmMxYzUyLi45MWZhMDM5OGE0ZjljMGU3
YTU0OTc2NjI0OGZhMzA1NmY4MTc1NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRXZWJWVFRUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMg
SW5iYW5kVGV4dFRyYWNrLCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChJbmJhbmRXZWJWVFRUZXh0VHJhY2spOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGll
bnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0
VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2
aXJ0dWFsIH5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToKLSAgICBJbmJhbmRX
ZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlJik7CisgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBwYXJzZXIoKTsKICAgICB2
b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcAppbmRleCAzMWNiZjBhNjU4ZDg1M2RjOTkxMDU4ZTFmMmE5ZmNiOTlmZTc3OWQ0Li4z
ODM1NzY0MTE2ZDA5MjU5ODg3OGI2NWE4ZmQ4YTgyNTkwM2VkNWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTG9hZGFi
bGVUZXh0VHJhY2spOwogCiBMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soSFRN
TFRyYWNrRWxlbWVudCYgdHJhY2ssIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IFRleHRUcmFjaygmdHJhY2suZG9j
dW1lbnQoKSwgJnRyYWNrLCBraW5kLCBlbXB0eVN0cmluZygpLCBsYWJlbCwgbGFuZ3VhZ2UsIFRy
YWNrRWxlbWVudCkKKyAgICA6IFRleHRUcmFjaygmdHJhY2suZG9jdW1lbnQoKSwga2luZCwgZW1w
dHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlLCBUcmFja0VsZW1lbnQpCiAgICAgLCBtX3RyYWNr
RWxlbWVudCgmdHJhY2spCiB7CiB9CkBAIC05NiwxMSArOTYsNiBAQCB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwpCiAgICAgfSk7CiB9CiAKLUVsZW1l
bnQqIExvYWRhYmxlVGV4dFRyYWNrOjplbGVtZW50KCkKLXsKLSAgICByZXR1cm4gbV90cmFja0Vs
ZW1lbnQ7Ci19Ci0KIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4
dFRyYWNrTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1fbG9h
ZGVyLmdldCgpID09ICZsb2FkZXIpOwpAQCAtMTE0LDggKzEwOSw3IEBAIHZvaWQgTG9hZGFibGVU
ZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4dFRyYWNrTG9hZGVyJiBsb2FkZXIpCiAgICAg
ICAgIG1fY3Vlcy0+YWRkKFdURk1vdmUobmV3Q3VlKSk7CiAgICAgfQogCi0gICAgaWYgKGNsaWVu
dCgpKQotICAgICAgICBjbGllbnQoKS0+dGV4dFRyYWNrQWRkQ3VlcygqdGhpcywgKm1fY3Vlcyk7
CisgICAgVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKCptX2N1ZXMpOwogfQogCiB2b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKFRleHRUcmFja0xvYWRlciYgbG9h
ZGVyLCBib29sIGxvYWRpbmdGYWlsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmgKaW5kZXggMDhkZmFhZDI4ZGNkZDFkOGFiNWNiMGZiNmFlMmY4NjFi
ZTc5MDhiMy4uYjdmYjQzZjk3ZTA4ZTc3YjY5NmRjM2FkYWM4NGRkNmY0OWYxNzRjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaApAQCAtNTYsNyAr
NTYsNiBAQCBwcml2YXRlOgogCiAgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgZmluYWw7Ci0gICAgRWxlbWVudCogZWxlbWVudCgpIGZp
bmFsOwogCiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5jcHAKaW5kZXggZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4MWE1NzVk
ZDBmMThjNS4uNzAzMmU2Mjg2OTlhMDI3YTI0NjUxYjJjNGNiZThkM2I3YzY3NzBjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgIkRhdGFDdWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCkBAIC04OCwyMCArODcsMTkgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGZvcmNl
ZEtleXdvcmQoKQogCiBUZXh0VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCkK
IHsKLSAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRy
LCBudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJh
Y2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gb2ZmOwogfQogCiBUZXh0
VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0
aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCBudWxs
cHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBU
ZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRv
bSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gYXV0
b21hdGljOwogfQogCi1UZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQotICAgIDogVHJhY2tCYXNl
KFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQorVGV4dFRyYWNrOjpU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgQXRvbVN0cmlu
ZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBj
b25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQorICAgIDogVHJh
Y2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdl
KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX2NsaWVudChjbGllbnQp
CiAgICAgLCBtX3RyYWNrVHlwZSh0eXBlKQogewogICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5
d29yZCgpKQpAQCAtMTE2LDkgKzExNCw5IEBAIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjCiAgICAg
ICAgIG1fa2luZCA9IEtpbmQ6Ok1ldGFkYXRhOwogfQogCi1SZWY8VGV4dFRyYWNrPiBUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBj
b25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0
cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQorUmVmPFRleHRUcmFjaz4g
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBr
aW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewotICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYo
Km5ldyBUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFn
ZSwgQWRkVHJhY2spKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgVGV4dFRy
YWNrKGRvY3VtZW50LCBraW5kLCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOwogICAg
IHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0K
QEAgLTEyNiw4ICsxMjQsOSBAQCBSZWY8VGV4dFRyYWNrPiBUZXh0VHJhY2s6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjbwogVGV4dFRyYWNrOjp+
VGV4dFRyYWNrKCkKIHsKICAgICBpZiAobV9jdWVzKSB7Ci0gICAgICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVz
KTsKKyAgICAgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICAgICAgfSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgo
KTsgKytpKQogICAgICAgICAgICAgbV9jdWVzLT5pdGVtKGkpLT5zZXRUcmFjayhudWxscHRyKTsK
ICAgICB9CkBAIC0xMzcsNiArMTM2LDIzIEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAg
fQogfQogCitUZXh0VHJhY2tMaXN0KiBUZXh0VHJhY2s6OnRleHRUcmFja0xpc3QoKSBjb25zdAor
eworICAgIHJldHVybiBkb3duY2FzdDxUZXh0VHJhY2tMaXN0Pih0cmFja0xpc3QoKSk7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrOjphZGRDbGllbnQoVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFk
ZChjbGllbnQpOworfQorCit2b2lkIFRleHRUcmFjazo6Y2xlYXJDbGllbnQoVGV4dFRyYWNrQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsK
KyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7Cit9CisKIERvY3VtZW50JiBUZXh0VHJhY2s6
OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKQEAgLTIwMCwxOSArMjE2LDE1IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQgbmV3
S2luZCkKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VC
dWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGwsIHRoZW4gcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBldmVudCBuYW1lZCBjaGFuZ2UgYXQgc291cmNl
QnVmZmVyLnRleHRUcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVyKQotICAgICAgICBtX3Nv
dXJjZUJ1ZmZlci0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8v
IDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0
aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQogICAgIC8vIHRoZSB0ZXh0VHJh
Y2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVt
ZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuc2NoZWR1
bGVDaGFuZ2VFdmVudCgpOwogI2VuZGlmCiAKICAgICBpZiAob2xkS2luZCAhPSBtX2tpbmQpIHsK
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX2tpbmQpOwotICAgICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQoKnRo
aXMpOworICAgICAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgewor
ICAgICAgICAgICAgY2xpZW50LnRleHRUcmFja0tpbmRDaGFuZ2VkKCp0aGlzKTsKKyAgICAgICAg
fSk7CiAgICAgfQogfQogCkBAIC0yNTIsOCArMjY0LDExIEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRN
b2RlKE1vZGUgbW9kZSkKIAogICAgIC8vIElmIG1vZGUgY2hhbmdlcyB0byBkaXNhYmxlZCwgcmVt
b3ZlIHRoaXMgdHJhY2sncyBjdWVzIGZyb20gdGhlIGNsaWVudAogICAgIC8vIGJlY2F1c2UgdGhl
eSB3aWxsIG5vIGxvbmdlciBiZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGN1ZXMoKSBmdW5jdGlvbi4K
LSAgICBpZiAobW9kZSA9PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2NsaWVudCAmJiBtX2N1ZXMpCi0g
ICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICBpZiAobW9kZSA9PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2N1ZXMpIHsKKyAgICAgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgICAgIGNsaWVudC50
ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAgICAgICAgfSk7CisgICAgfQog
CiAgICAgaWYgKG1vZGUgIT0gTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCkBAIC0yNjIsOCArMjc3
LDkgQEAgdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2RlKQogCiAgICAgbV9tb2RlID0g
bW9kZTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja01v
ZGVDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrTW9kZUNoYW5nZWQoKnRoaXMpOworICAg
IH0pOwogfQogCiBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQpAQCAtMjg1LDkg
KzMwMSwxMCBAQCB2b2lkIFRleHRUcmFjazo6cmVtb3ZlQWxsQ3VlcygpCiAKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+dGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7Ci0gICAgCisgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRU
cmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgIH0pOworCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIG1fY3Vlcy0+aXRl
bShpKS0+c2V0VHJhY2sobnVsbHB0cik7CiAgICAgCkBAIC0zNDEsOCArMzU4LDkgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjphZGRDdWUoUmVmPFRleHRUcmFja0N1ZT4mJiBjdWUpCiAg
ICAgY3VlLT5zZXRUcmFjayh0aGlzKTsKICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkuYWRk
KGN1ZS5jb3B5UmVmKCkpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+
dGV4dFRyYWNrQWRkQ3VlKCp0aGlzLCBjdWUpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlz
LCBjdWVdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFja0FkZEN1ZSgq
dGhpcywgY3VlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zNjYsOCArMzg0
LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3Vl
JiBjdWUpCiAgICAgbV9jdWVzLT5yZW1vdmUoY3VlKTsKICAgICBjdWUuc2V0SXNBY3RpdmUoZmFs
c2UpOwogICAgIGN1ZS5zZXRUcmFjayhudWxscHRyKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGll
bnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFj
a1JlbW92ZUN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBA
IC00NjAsMzIgKzQ3OSwzMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBUZXh0VHJhY2s6OnJlbW92ZVJl
Z2lvbihWVFRSZWdpb24mIHJlZ2lvbikKIAogdm9pZCBUZXh0VHJhY2s6OmN1ZVdpbGxDaGFuZ2Uo
VGV4dFRyYWNrQ3VlJiBjdWUpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gVGhlIGN1ZSBtYXkgbmVlZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1l
ZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVlLCBtYXkgbmVlZCB0bwotICAgIC8vIGJlIHJlLXJl
bmRlcmVkLCBldGMsIHNvIHJlbW92ZSBpdCBiZWZvcmUgdGhlIG1vZGlmaWNhdGlvbi4uLgotICAg
IG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGllbnRz
LmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgLy8gVGhlIGN1ZSBtYXkgbmVl
ZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVl
LCBtYXkgbmVlZCB0bworICAgICAgICAvLyBiZSByZS1yZW5kZXJlZCwgZXRjLCBzbyByZW1vdmUg
aXQgYmVmb3JlIHRoZSBtb2RpZmljYXRpb24uLi4KKyAgICAgICAgY2xpZW50LnRleHRUcmFja1Jl
bW92ZUN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBUZXh0VHJhY2s6OmN1ZURp
ZENoYW5nZShUZXh0VHJhY2tDdWUmIGN1ZSkKIHsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAg
ICByZXR1cm47Ci0KICAgICAvLyBNYWtlIHN1cmUgdGhlIFRleHRUcmFja0N1ZUxpc3Qgb3JkZXIg
aXMgdXAtdG8tZGF0ZS4KICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkudXBkYXRlQ3VlSW5k
ZXgoY3VlKTsKIAogICAgIC8vIC4uLiBhbmQgYWRkIGl0IGJhY2sgYWdhaW4uCi0gICAgbV9jbGll
bnQtPnRleHRUcmFja0FkZEN1ZSgqdGhpcywgY3VlKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
Jl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrQWRkQ3VlKCp0aGlz
LCBjdWUpOworICAgIH0pOwogfQogCiBpbnQgVGV4dFRyYWNrOjp0cmFja0luZGV4KCkKIHsKICAg
ICBpZiAoIW1fdHJhY2tJbmRleCkgewotICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQorICAg
ICAgICBpZiAoIW1fdGV4dFRyYWNrTGlzdCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICBtX3RyYWNrSW5kZXggPSBtX21lZGlhRWxlbWVudC0+ZW5zdXJlVGV4dFRyYWNrcygpLmdldFRy
YWNrSW5kZXgoKnRoaXMpOworICAgICAgICBtX3RyYWNrSW5kZXggPSBtX3RleHRUcmFja0xpc3Qt
PmdldFRyYWNrSW5kZXgoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4gbV90cmFja0luZGV4LnZh
bHVlKCk7CiB9CkBAIC01MTIsOSArNTI5LDkgQEAgVGV4dFRyYWNrQ3VlTGlzdCYgVGV4dFRyYWNr
OjplbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkKIGludCBUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxh
dGl2ZVRvUmVuZGVyZWRUcmFja3MoKQogewogICAgIGlmICghbV9yZW5kZXJlZFRyYWNrSW5kZXgp
IHsKLSAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgaWYgKCFtX3RleHRUcmFj
a0xpc3QpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgbV9yZW5kZXJlZFRyYWNrSW5k
ZXggPSBtX21lZGlhRWxlbWVudC0+ZW5zdXJlVGV4dFRyYWNrcygpLmdldFRyYWNrSW5kZXhSZWxh
dGl2ZVRvUmVuZGVyZWRUcmFja3MoKnRoaXMpOworICAgICAgICBtX3JlbmRlcmVkVHJhY2tJbmRl
eCA9IG1fdGV4dFRyYWNrTGlzdC0+Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNr
cygqdGhpcyk7CiAgICAgfQogICAgIHJldHVybiBtX3JlbmRlcmVkVHJhY2tJbmRleC52YWx1ZSgp
OwogfQpAQCAtNjExLDE2ICs2MjgsMzcgQEAgdm9pZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNv
bnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiAgICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZl
ciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sg
dG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZm
ZXIudGV4dFRyYWNrcy4KLSAgICBpZiAobV9zb3VyY2VCdWZmZXIpCi0gICAgICAgIG1fc291cmNl
QnVmZmVyLT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwotCiAgICAgLy8gNC4g
UXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBU
ZXh0VHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAgICAgLy8gdGhlIHRleHRUcmFja3Mg
YXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgotICAgIGlmIChtZWRpYUVsZW1lbnQo
KSkKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPmVuc3VyZVRleHRUcmFja3MoKS5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsK
KyAgICAgICAgY2xpZW50LnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7
CiB9CiAjZW5kaWYKIAordm9pZCBUZXh0VHJhY2s6OnNldElkKGNvbnN0IEF0b21TdHJpbmcmIGlk
KQoreworICAgIFRyYWNrQmFzZTo6c2V0SWQoaWQpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0
aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tJZENoYW5nZWQo
KnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFRleHRUcmFjazo6c2V0TGFiZWwoY29uc3QgQXRv
bVN0cmluZyYgbGFiZWwpCit7CisgICAgVHJhY2tCYXNlOjpzZXRMYWJlbChsYWJlbCk7CisgICAg
bV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50
LnRleHRUcmFja0xhYmVsQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgVGV4dFRy
YWNrOjpuZXdDdWVzQXZhaWxhYmxlKGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmIGxpc3QpCit7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50
LnRleHRUcmFja0FkZEN1ZXMoKnRoaXMsIGxpc3QpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgK
aW5kZXggNzQ2MzJlYTRjMGQ5YTAzN2E3YjY2MDExNzdkMzRjOWE5YzE1M2U2Mi4uOTUyYTZjNDc1
NDQ3YzAwMjgwZmYyNmNiNmI5MDgxZWI4NTYzNGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5oCkBAIC0zMiwzMCArMzIsMzYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVRpbWVS
YW5nZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJUcmFja0Jhc2Uu
aCIKKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dFRyYWNrOworY2xhc3Mg
VGV4dFRyYWNrTGlzdDsKIGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CiBjbGFzcyBWVFRSZWdpb247
CiBjbGFzcyBWVFRSZWdpb25MaXN0OwogCi1jbGFzcyBUZXh0VHJhY2tDbGllbnQgeworY2xhc3Mg
VGV4dFRyYWNrQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRleHRUcmFja0NsaWVudD4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpID0gZGVmYXVsdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0
VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tJZENoYW5nZWQoVGV4dFRyYWNrJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTGFiZWxDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRU
cmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrQWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrJikgeyB9CiB9Owog
CiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChUZXh0VHJhY2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNr
PiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBBdG9tU3RyaW5nJiBr
aW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBzdGF0aWMgUmVmPFRleHRUcmFjaz4gY3JlYXRl
KERvY3VtZW50KiwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQs
IGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CiAg
ICAgdmlydHVhbCB+VGV4dFRyYWNrKCk7CiAKICAgICBzdGF0aWMgVGV4dFRyYWNrJiBjYXB0aW9u
TWVudU9mZkl0ZW0oKTsKQEAgLTY0LDYgKzcwLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7CiAgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21TdHJpbmcmKTsKIAorICAgIFRleHRUcmFja0xpc3QqIHRl
eHRUcmFja0xpc3QoKSBjb25zdDsKKwogICAgIGVudW0gY2xhc3MgS2luZCB7IFN1YnRpdGxlcywg
Q2FwdGlvbnMsIERlc2NyaXB0aW9ucywgQ2hhcHRlcnMsIE1ldGFkYXRhLCBGb3JjZWQgfTsKICAg
ICBLaW5kIGtpbmQoKSBjb25zdDsKIApAQCAtODgsNyArOTYsOCBAQCBwdWJsaWM6CiAKICAgICBU
ZXh0VHJhY2tDdWVMaXN0KiBjdWVzSW50ZXJuYWwoKSBjb25zdCB7IHJldHVybiBtX2N1ZXMuZ2V0
KCk7IH0KIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBvdmVycmlkZSB7IG1fY2xpZW50ID0gbnVs
bHB0cjsgfQorICAgIHZvaWQgYWRkQ2xpZW50KFRleHRUcmFja0NsaWVudCYpOworICAgIHZvaWQg
Y2xlYXJDbGllbnQoVGV4dFRyYWNrQ2xpZW50Jik7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBh
ZGRDdWUoUmVmPFRleHRUcmFja0N1ZT4mJik7CiAgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lk
PiByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJik7CkBAIC0xMjMsOSArMTMyLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZUFsbEN1ZXMoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0g
ICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAjZW5kaWYKIAorICAgIHZv
aWQgc2V0SWQoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCBib29sIGlzSW5iYW5k
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgTWVkaWFUaW1lIHN0YXJ0
VGltZVZhcmlhbmNlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOyB9CkBA
IC0xMzksMjAgKzE1MSwyMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUN1ZXNO
b3RJblRpbWVSYW5nZXMoUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKIHByb3RlY3RlZDoKLSAgICBU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0
IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5n
JiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOworICAg
IFRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7CiAKICAgICBEb2N1bWVudCYgZG9j
dW1lbnQoKSBjb25zdDsKLSAgICBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1f
Y2xpZW50OyB9CiAKICAgICBib29sIGhhc0N1ZShUZXh0VHJhY2tDdWUmLCBUZXh0VHJhY2tDdWU6
OkN1ZU1hdGNoUnVsZXMgPSBUZXh0VHJhY2tDdWU6Ok1hdGNoQWxsRmllbGRzKTsKICAgICB2b2lk
IHNldEtpbmQoS2luZCk7CiAKKyAgICB2b2lkIG5ld0N1ZXNBdmFpbGFibGUoY29uc3QgVGV4dFRy
YWNrQ3VlTGlzdCYpOworCiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBtX3N0eWxlU2hlZXRzOworICAgIFdlYWtI
YXNoU2V0PFRleHRUcmFja0NsaWVudD4gbV9jbGllbnRzOwogCiBwcml2YXRlOgogICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gVGV4dFRyYWNrRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KIAogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xNjYsNiAr
MTgwLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiVGV4dFRyYWNrIjsgfQogI2VuZGlmCiAKKyAgICBXZWFrUHRyPFRl
eHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrTGlzdDsKKwogICAgIFZUVFJlZ2lvbkxpc3QmIGVuc3Vy
ZVZUVFJlZ2lvbkxpc3QoKTsKICAgICBSZWZQdHI8VlRUUmVnaW9uTGlzdD4gbV9yZWdpb25zOwog
CkBAIC0xNzMsNyArMTg5LDYgQEAgcHJpdmF0ZToKIAogICAgIE1vZGUgbV9tb2RlIHsgTW9kZTo6
RGlzYWJsZWQgfTsKICAgICBLaW5kIG1fa2luZCB7IEtpbmQ6OlN1YnRpdGxlcyB9OwotICAgIFRl
eHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlwZTsK
ICAgICBSZWFkaW5lc3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkIH07CiAgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IG1fdHJhY2tJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbAppbmRleCBhYTFiMDRhMjcyYzk5MmYxMmVjYjcxMDgzZTY3MDk1ODhlYzJi
ODg4Li4yZTVmNTcyZjQxMDI1ZWY2ODFlZDcxM2YwMWZmNmJiNThmNjY0MDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCkBAIC0zMCw3ICszMCw3IEBAIGVudW0gVGV4
dFRyYWNrS2luZCB7ICJzdWJ0aXRsZXMiLCAiY2FwdGlvbnMiLCAiZGVzY3JpcHRpb25zIiwgImNo
YXB0ZXJzIiwgIm1ldGFkCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJ
REVPLAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAotICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbEVsZW1lbnRSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgR2VuZXJh
dGVBZGRPcGFxdWVSb290LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogICAgIEV4cG9zZWQ9
V2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAppbmRl
eCBmZjlhMTQ5OWNkNTE2ODhjYThkYmMzMGYwMWRiNGI2YzYyYjk2ZGNjLi4yMjkyNjU3MzdhY2Nj
MGEzMGMyZDE3OThlYTA4MWNlYmE0ZGM3ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlRleHRU
cmFja0xpc3QuaCIKIAotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bmJhbmRUZXh0VHJhY2suaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAj
aW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2suaCIKQEAgLTM5LDI3ICszOCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tMaXN0
KTsKIAotVGV4dFRyYWNrTGlzdDo6VGV4dFRyYWNrTGlzdChXZWFrUHRyPEhUTUxNZWRpYUVsZW1l
bnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBUcmFj
a0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitUZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKGNv
bnRleHQsIFRyYWNrTGlzdEJhc2U6OlRleHRUcmFja0xpc3QpCiB7CiB9CiAKIFRleHRUcmFja0xp
c3Q6On5UZXh0VHJhY2tMaXN0KCkKIHsKLSAgICBjbGVhckVsZW1lbnQoKTsKLX0KLQotdm9pZCBU
ZXh0VHJhY2tMaXN0OjpjbGVhckVsZW1lbnQoKQotewotICAgIFRyYWNrTGlzdEJhc2U6OmNsZWFy
RWxlbWVudCgpOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2VsZW1lbnRUcmFja3MpIHsKLSAg
ICAgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgdHJhY2stPmNs
ZWFyQ2xpZW50KCk7Ci0gICAgfQotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2FkZFRyYWNrVHJh
Y2tzKSB7Ci0gICAgICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAgICAg
IHRyYWNrLT5jbGVhckNsaWVudCgpOwotICAgIH0KIH0KIAogdW5zaWduZWQgVGV4dFRyYWNrTGlz
dDo6bGVuZ3RoKCkgY29uc3QKQEAgLTIwMyw4ICsxODgsOCBAQCB2b2lkIFRleHRUcmFja0xpc3Q6
OmFwcGVuZChSZWY8VGV4dFRyYWNrPiYmIHRyYWNrKQogCiAgICAgaW52YWxpZGF0ZVRyYWNrSW5k
ZXhlc0FmdGVyVHJhY2sodHJhY2spOwogCi0gICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50
KCkgfHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1lZGlhRWxlbWVudCgpKTsKLSAgICB0cmFj
ay0+c2V0TWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCgpKTsKKyAgICBpZiAoIXRyYWNrLT50cmFj
a0xpc3QoKSkKKyAgICAgICAgdHJhY2stPnNldFRyYWNrTGlzdCgqdGhpcyk7CiAKICAgICBzY2hl
ZHVsZUFkZFRyYWNrRXZlbnQoV1RGTW92ZSh0cmFjaykpOwogfQpAQCAtMjMzLDggKzIxOCw4IEBA
IHZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRyYWNrQmFzZSYgdHJhY2ssIGJvb2wgc2NoZWR1
bGVFdmVudCkKIAogICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRleHRUcmFj
ayk7CiAKLSAgICBBU1NFUlQoIXRyYWNrLm1lZGlhRWxlbWVudCgpIHx8ICFlbGVtZW50KCkgfHwg
dHJhY2subWVkaWFFbGVtZW50KCkgPT0gZWxlbWVudCgpKTsKLSAgICB0cmFjay5zZXRNZWRpYUVs
ZW1lbnQobnVsbHB0cik7CisgICAgaWYgKHRyYWNrLnRyYWNrTGlzdCgpID09IHRoaXMpCisgICAg
ICAgIHRyYWNrLmNsZWFyVHJhY2tMaXN0KCk7CiAKICAgICBSZWY8VHJhY2tCYXNlPiB0cmFja1Jl
ZiA9ICooKnRyYWNrcylbaW5kZXhdOwogICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggY2QyZmY3YmQwZTZmNWQz
MmVkOWEwY2NhMjU1YWQ0OGFkNmJjNTg5OS4uNzAyMWVkMzY4YTU1OGE4MGRmNDAwMGUzY2FlYmJi
ZmJkMzVhM2JlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJUcmFja0xp
c3RCYXNlLmgiCisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM2LDE2ICszNywxNCBAQCBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJh
Y2tMaXN0IGZpbmFsIDogcHVibGljIFRyYWNrTGlzdEJhc2UgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoVGV4dFRyYWNrTGlzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0VHJh
Y2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVtZW50LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrTGlzdD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBh
dXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IFRleHRUcmFja0xpc3QoZWxlbWVudCwgY29udGV4dCkp
OworICAgICAgICBhdXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IFRleHRUcmFja0xpc3QoY29udGV4
dCkpOwogICAgICAgICBsaXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIGxp
c3Q7CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFja0xpc3QoKTsKIAotICAgIHZvaWQgY2xl
YXJFbGVtZW50KCkgb3ZlcnJpZGU7Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBpbnQgZ2V0VHJhY2tJbmRleChUZXh0VHJhY2smKTsKICAgICBpbnQgZ2V0VHJh
Y2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2smKTsKQEAgLTU4LDE5ICs1
NywyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoUmVmPFRleHRUcmFjaz4mJik7CiAgICAg
dm9pZCByZW1vdmUoVHJhY2tCYXNlJiwgYm9vbCBzY2hlZHVsZUV2ZW50ID0gdHJ1ZSkgb3ZlcnJp
ZGU7CiAKKyAgICB2b2lkIHNldER1cmF0aW9uKE1lZGlhVGltZSBkdXJhdGlvbikgeyBtX2R1cmF0
aW9uID0gZHVyYXRpb247IH0KKyAgICBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kdXJhdGlvbjsgfQorCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIFRleHRUcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFRleHRUcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAogICAgIHZvaWQgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRy
YWNrJik7CiAKICAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+IG1fYWRkVHJhY2tUcmFja3M7
CiAgICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+PiBtX2VsZW1lbnRUcmFja3M7CisgICAgTWVk
aWFUaW1lIG1fZHVyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dFRyYWNrTGlzdCkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7
IHJldHVybiB0cmFja0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRleHRU
cmFja0xpc3Q7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVO
QUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRs
CmluZGV4IGRmOWNiZTEzMGJjYTczYmE2NDBmOTc4YzkxZWYxNDQ0YzIxMTFlN2EuLmE3ZWYzNDRh
YjFjMWZiMWRlODg5Nzc5MGY0YjMyODRhOTdmNmVmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbApAQCAtMjYsOCArMjYsNiBAQAogWwogICAgIEFjdGl2
ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1WSURFTywKLSAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCiAgICAgRXhw
b3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFRleHRUcmFja0xpc3QgOiBFdmVudFRhcmdldCB7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCmluZGV4IGU4Zjk1ZjkzMzEwM2FkODQyYWQ4MjcxMzM2
MmYzNTFmNmRkODc3M2QuLjUxMTBhNTY2NzkxMTE5ZDU0MThiMzQ2YmNhYTA2NzI1YTE3NjM1ZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTMyLDggKzMyLDYg
QEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IHNfdW5pcXVlSWQgPSAwOwpAQCAt
NDgsOCArNDYsOSBAQCBzdGF0aWMgUmVmUHRyPExvZ2dlcj4mIG51bGxMb2dnZXIoKQogfQogI2Vu
ZGlmCiAKLVRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkK
LSAgICA6IG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlkKQorVHJhY2tCYXNlOjpUcmFja0Jhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdl
KQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICAsIG1fdW5p
cXVlSWQoKytzX3VuaXF1ZUlkKQogICAgICwgbV9pZChpZCkKICAgICAsIG1fbGFiZWwobGFiZWwp
CiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpAQCAtNzAsMjEgKzY5LDI2IEBAIFRyYWNrQmFz
ZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21T
dHJpbmcmIGxhYmVsLCBjCiAjZW5kaWYKIH0KIAotRWxlbWVudCogVHJhY2tCYXNlOjplbGVtZW50
KCkKK3ZvaWQgVHJhY2tCYXNlOjpzZXRUcmFja0xpc3QoVHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0
KQogewotICAgIHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsKKyAgICBtX3RyYWNrTGlzdCA9
IG1ha2VXZWFrUHRyKHRyYWNrTGlzdCk7CiB9CiAKLXZvaWQqIFRyYWNrQmFzZTo6b3BhcXVlUm9v
dCgpCit2b2lkIFRyYWNrQmFzZTo6Y2xlYXJUcmFja0xpc3QoKQogewotICAgIGlmIChhdXRvKiBh
c3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzc29jaWF0ZWRF
bGVtZW50LT5vcGFxdWVSb290KCk7Ci0gICAgcmV0dXJuIHRoaXM7CisgICAgbV90cmFja0xpc3Qg
PSBudWxscHRyOworfQorCitUcmFja0xpc3RCYXNlKiBUcmFja0Jhc2U6OnRyYWNrTGlzdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdHJhY2tMaXN0LmdldCgpOwogfQogCi12b2lkIFRyYWNrQmFz
ZTo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKK3Zv
aWQqIFRyYWNrQmFzZTo6b3BhcXVlUm9vdCgpCiB7Ci0gICAgbV9tZWRpYUVsZW1lbnQgPSBlbGVt
ZW50OworICAgIGlmIChhdXRvIHRyYWNrTGlzdCA9IHRoaXMtPnRyYWNrTGlzdCgpKQorICAgICAg
ICByZXR1cm4gdHJhY2tMaXN0LT5vcGFxdWVSb290KCk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAK
IC8vIFNlZTogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2JjcDQ3I3NlY3Rpb24tMi4xCkBA
IC0xNDgsOCArMTUyLDggQEAgdm9pZCBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGNvbnN0IEF0b21T
dHJpbmcmIGxhbmd1YWdlKQogCiAgICAgbV92YWxpZEJDUDQ3TGFuZ3VhZ2UgPSBlbXB0eUF0b20o
KTsKIAotICAgIGF1dG8gZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKLSAgICBpZiAoIWVsZW1l
bnQpCisgICAgYXV0byBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CkBAIC0x
NTgsNyArMTYyLDcgQEAgdm9pZCBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJp
bmcmIGxhbmd1YWdlKQogICAgIGVsc2UKICAgICAgICAgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRo
ZSBsYW5ndWFnZSAnIiwgbGFuZ3VhZ2UsICInIGlzIG5vdCBhIHZhbGlkIEJDUCA0NyBsYW5ndWFn
ZSB0YWcuIik7CiAKLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKTsK
KyAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiB9CiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKQEAgLTE3NCw4ICsxNzgsOCBAQCBXVEZMb2dDaGFubmVsJiBUcmFja0Jhc2U6Omxv
Z0NoYW5uZWwoKSBjb25zdAogfQogI2VuZGlmCiAKLU1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNr
QmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBs
YWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCi0gICAgOiBUcmFja0Jhc2UodHlwZSwg
aWQsIGxhYmVsLCBsYW5ndWFnZSkKK01lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CisgICAgOiBUcmFja0Jhc2UoY29udGV4dCwgdHlwZSwgaWQsIGxhYmVsLCBsYW5ndWFnZSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKaW5kZXggYWY0NTQ0MWQ5Mzc5
NDA5NTRjNTZiNjljNWExYWNmYjQxYjVhMmUyMi4uZTNkYjQ0M2RjOWEzYjg4NjdiYjBhMGNkNzUx
MTRlMjZkZmVjM2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0y
NywxOCArMjcsMTkgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MTWVkaWFF
bGVtZW50OwogY2xhc3MgU291cmNlQnVmZmVyOworY2xhc3MgVHJhY2tMaXN0QmFzZTsKIAogY2xh
c3MgVHJhY2tCYXNlCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+CisgICAgLCBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKQEAgLTQ5LDIyICs1MCwxMCBA
QCBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsgQmFzZVRyYWNrLCBUZXh0VHJhY2ssIEF1ZGlvVHJh
Y2ssIFZpZGVvVHJhY2sgfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KIAotICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpOwotICAgIHZvaWQqIG9wYXF1ZVJv
b3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlh
RWxlbWVudD4pOwotICAgIFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50KCkg
eyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLQogICAgIHZpcnR1YWwgQXRvbVN0cmluZyBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRv
bVN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9Ci0KICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29u
c3QgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbVN0cmlu
ZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9Ci0KICAgICBBdG9tU3RyaW5nIHZhbGlkQkNQ
NDdMYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWRCQ1A0N0xhbmd1YWdlOyB9CiAgICAg
QXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpOwotCi0gICAgdmlydHVh
bCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAwOwogCiAgICAgdmlydHVhbCBpbnQgdW5pcXVlSWQoKSBj
b25zdCB7IHJldHVybiBtX3VuaXF1ZUlkOyB9CiAKQEAgLTczLDYgKzYyLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIqIGJ1ZmZlcikgeyBtX3NvdXJj
ZUJ1ZmZlciA9IGJ1ZmZlcjsgfQogI2VuZGlmCiAKKyAgICB2b2lkIHNldFRyYWNrTGlzdChUcmFj
a0xpc3RCYXNlJik7CisgICAgdm9pZCBjbGVhclRyYWNrTGlzdCgpOworICAgIFRyYWNrTGlzdEJh
c2UqIHRyYWNrTGlzdCgpIGNvbnN0OworICAgIHZvaWQqIG9wYXF1ZVJvb3QoKTsKKwogICAgIHZp
cnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECkBAIC04Myw5ICs3NywxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAg
IFRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYg
bGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBUcmFja0Jhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9t
U3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOwogCi0gICAgV2Vha1B0
cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudCB7IG51bGxwdHIgfTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwg
PSBsYWJlbDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5n
Jik7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFNvdXJjZUJ1ZmZlciogbV9zb3Vy
Y2VCdWZmZXIgeyBudWxscHRyIH07CkBAIC0xMDIsNiArOTgsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRp
ZmllciB7IG51bGxwdHIgfTsKICNlbmRpZgorICAgIFdlYWtQdHI8VHJhY2tMaXN0QmFzZT4gbV90
cmFja0xpc3Q7CiB9OwogCiBjbGFzcyBNZWRpYVRyYWNrQmFzZSA6IHB1YmxpYyBUcmFja0Jhc2Ug
ewpAQCAtMTEwLDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChj
b25zdCBBdG9tU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVRyYWNrQmFzZShUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBNZWRpYVRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxh
YmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CiAKICAgICB2b2lkIHNldEtpbmRJbnRl
cm5hbChjb25zdCBBdG9tU3RyaW5nJik7CiAKQEAgLTEyMCw2ICsxMTcsMTEgQEAgcHJpdmF0ZToK
ICAgICBBdG9tU3RyaW5nIG1fa2luZDsKIH07CiAKK2lubGluZSB2b2lkKiByb290KFRyYWNrQmFz
ZSogdHJhY2spCit7CisgICAgcmV0dXJuIHRyYWNrLT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmNwcAppbmRleCAwMTNhMjNjOTgxYmFlOWEwOTRlMDM3ZmNhMDI2NDkxNDQ4
MTUzNDliLi4wZjA1MzUzMzdmZmZlMWJlNjAzNWExN2JiMzYyMWM4NGMxNjk0NTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJUcmFja0V2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KQEAgLTM5LDM3ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUcmFja0xpc3RCYXNlKTsKIAotVHJhY2tMaXN0
QmFzZTo6VHJhY2tMaXN0QmFzZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RC
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgdHlwZSkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBt
X3R5cGUodHlwZSkKIHsKLSAgICBBU1NFUlQoIWNvbnRleHQgfHwgaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKTsKIH0KIAogVHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UoKQogewotICAgIGNsZWFy
RWxlbWVudCgpOwogfQogCi12b2lkIFRyYWNrTGlzdEJhc2U6OmNsZWFyRWxlbWVudCgpCit2b2lk
KiBUcmFja0xpc3RCYXNlOjpvcGFxdWVSb290KCkKIHsKLSAgICBtX2VsZW1lbnQgPSBudWxscHRy
OwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2luYmFuZFRyYWNrcykgewotICAgICAgICB0cmFj
ay0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgICAgICB0cmFjay0+Y2xlYXJDbGllbnQo
KTsKLSAgICB9Ci19Ci0KLUVsZW1lbnQqIFRyYWNrTGlzdEJhc2U6OmVsZW1lbnQoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7Ci19Ci0KLXZvaWQqIFRyYWNrTGlzdEJhc2U6
Om9wYXF1ZVJvb3QoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9
IGVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGFzc29jaWF0ZWRFbGVtZW50LT5vcGFxdWVSb290
KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHJvb3RPYnNlcnZlciA9IG1f
b3BhcXVlUm9vdE9ic2VydmVyLmdldCgpKQorICAgICAgICByZXR1cm4gKCpyb290T2JzZXJ2ZXIp
KCk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIHVuc2lnbmVkIFRyYWNrTGlzdEJhc2U6Omxlbmd0
aCgpIGNvbnN0CkBAIC04MywxMCArNjYsOCBAQCB2b2lkIFRyYWNrTGlzdEJhc2U6OnJlbW92ZShU
cmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQpCiAgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodHJhY2subWVkaWFFbGVtZW50KCkp
IHsKLSAgICAgICAgQVNTRVJUKHRyYWNrLm1lZGlhRWxlbWVudCgpID09IG1fZWxlbWVudCk7Ci0g
ICAgICAgIHRyYWNrLnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICB9CisgICAgaWYgKHRy
YWNrLnRyYWNrTGlzdCgpID09IHRoaXMpCisgICAgICAgIHRyYWNrLmNsZWFyVHJhY2tMaXN0KCk7
CiAKICAgICBSZWY8VHJhY2tCYXNlPiB0cmFja1JlZiA9ICptX2luYmFuZFRyYWNrc1tpbmRleF07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggZmEwMGY4
NjBmYmY5MDhkM2QyMDc3ZTFkMmRiODYyOWIyMGE0MmQ5OS4uOWQzZTY4MWU3ZGU0YTYxOTRiNjg2
NzBmNTRkZjU1ZTYyMmJiOWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0xpc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xp
c3RCYXNlLmgKQEAgLTI5LDE0ICsyOSwxMyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhU
TUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgVHJhY2tCYXNlOwogCiBjbGFz
cyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKQEAg
LTQ0LDYgKzQzLDkgQEAgY2xhc3MgVHJhY2tMaXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRy
YWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW4KIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5UcmFja0xpc3RCYXNlKCk7CiAKKyAgICBlbnVtIFR5cGUgeyBCYXNlVHJhY2tMaXN0LCBU
ZXh0VHJhY2tMaXN0LCBBdWRpb1RyYWNrTGlzdCwgVmlkZW9UcmFja0xpc3QgfTsKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwogICAgIHZpcnR1YWwgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSYpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoVHJhY2tCYXNlJiwgYm9vbCBzY2hlZHVsZUV2
ZW50ID0gdHJ1ZSk7CkBAIC01NCwxMCArNTYsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8VHJhY2tMaXN0QmFzZT46OmRlcmVmOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0Owot
ICAgIHZvaWQqIG9wYXF1ZVJvb3QoKSBjb25zdDsKLSAgICBXZWFrUHRyPEhUTUxNZWRpYUVsZW1l
bnQ+IG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZvaWQq
IG9wYXF1ZVJvb3QoKTsKKworICAgIHVzaW5nIE9wYXF1ZVJvb3RPYnNlcnZlciA9IFdURjo6T2Jz
ZXJ2ZXI8dm9pZCooKT47CisgICAgdm9pZCBzZXRPcGFxdWVSb290T2JzZXJ2ZXIoY29uc3QgT3Bh
cXVlUm9vdE9ic2VydmVyJiBvYnNlcnZlcikgeyBtX29wYXF1ZVJvb3RPYnNlcnZlciA9IG1ha2VX
ZWFrUHRyKG9ic2VydmVyKTsgfTsKIAogICAgIC8vIE5lZWRzIHRvIGJlIHB1YmxpYyBzbyB0cmFj
a3MgY2FuIGNhbGwgaXQKICAgICB2b2lkIHNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKQEAgLTY2LDcg
KzY4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbnlUcmFja0VuYWJsZWQoKSBjb25zdDsKIAog
cHJvdGVjdGVkOgotICAgIFRyYWNrTGlzdEJhc2UoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Piwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFRyYWNrTGlzdEJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFR5cGUpOwogCiAgICAgdm9pZCBzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUmVm
PFRyYWNrQmFzZT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbW92ZVRyYWNrRXZlbnQoUmVmPFRy
YWNrQmFzZT4mJik7CkBAIC04MCwxMCArODIsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtX2Vs
ZW1lbnQ7CisgICAgVHlwZSBtX3R5cGU7CisgICAgV2Vha1B0cjxPcGFxdWVSb290T2JzZXJ2ZXI+
IG1fb3BhcXVlUm9vdE9ic2VydmVyOwogICAgIGJvb2wgbV9pc0NoYW5nZUV2ZW50U2NoZWR1bGVk
IHsgZmFsc2UgfTsKIH07CiAKK2lubGluZSB2b2lkKiByb290KFRyYWNrTGlzdEJhc2UqIHRyYWNr
TGlzdCkKK3sKKyAgICByZXR1cm4gdHJhY2tMaXN0LT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmluZGV4IGVkNzU1YTI4MGVmM2Y4M2FhOTE2ZTIx
OWMxMjFiMGQ3YWI0OWIzYzYuLmQzMDRmYjY4MjE4MmI0MjExYzczZTExYjA5MTYxZTVjZWRiMGRi
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNyAr
MzQsNiBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKQEAgLTgwLDkgKzc5LDggQEAgY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFj
azo6Y29tbWVudGFyeUtleXdvcmQoKQogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1WaWRl
b1RyYWNrOjpWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQmIGNsaWVudCwgVmlkZW9UcmFja1By
aXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNl
OjpWaWRlb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRy
YWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQotICAgICwgbV9jbGllbnQoJmNsaWVudCkKK1ZpZGVvVHJh
Y2s6OlZpZGVvVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmlkZW9UcmFj
a1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1l
ZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRl
LmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNr
UHJpdmF0ZSkKICAgICAsIG1fc2VsZWN0ZWQodHJhY2tQcml2YXRlLnNlbGVjdGVkKCkpCiB7CkBA
IC0xMzAsOCArMTI4LDIxIEBAIHZvaWQgVmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQoY29uc3QgYm9v
bCBzZWxlY3RlZCkKICAgICBtX3NlbGVjdGVkID0gc2VsZWN0ZWQ7CiAgICAgbV9wcml2YXRlLT5z
ZXRTZWxlY3RlZChzZWxlY3RlZCk7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9y
RWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja1Nl
bGVjdGVkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6YWRk
Q2xpZW50KFZpZGVvVHJhY2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50
cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3Zv
aWQgVmlkZW9UcmFjazo6Y2xlYXJDbGllbnQoVmlkZW9UcmFja0NsaWVudCYgY2xpZW50KQorewor
ICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJl
bW92ZShjbGllbnQpOwogfQogCiBzaXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgp
CkBAIC0xNDIsMTYgKzE1MywyNSBAQCBzaXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRl
eCgpCiB2b2lkIFZpZGVvVHJhY2s6OnNlbGVjdGVkQ2hhbmdlZChib29sIHNlbGVjdGVkKQogewog
ICAgIHNldFNlbGVjdGVkKHNlbGVjdGVkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10g
KGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdl
ZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6aWRDaGFuZ2VkKGNvbnN0
IEF0b21TdHJpbmcmIGlkKQogewogICAgIHNldElkKGlkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFj
aChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja0lkQ2hh
bmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6bGFiZWxDaGFuZ2Vk
KGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKQogewogICAgIHNldExhYmVsKGxhYmVsKTsKKyAgICBt
X2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQu
dmlkZW9UcmFja0xhYmVsQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9U
cmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQpAQCAtMTYx
LDEwICsxODEsOSBAQCB2b2lkIFZpZGVvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9t
U3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBWaWRlb1RyYWNrOjp3aWxsUmVtb3ZlKCkKIHsKLSAg
ICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKG1lZGlhRWxlbWVudCgpLmdldCgpKTsKLSAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50LT5yZW1vdmVWaWRlb1Ry
YWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkg
eworICAgICAgICBjbGllbnQud2lsbFJlbW92ZVZpZGVvVHJhY2soKnRoaXMpOworICAgIH0pOwog
fQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTE4MiwxMiArMjAxLDExIEBAIHZvaWQg
VmlkZW9UcmFjazo6c2V0S2luZChjb25zdCBBdG9tU3RyaW5nJiBraW5kKQogCiAgICAgLy8gMy4g
SWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwg
dGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNo
YW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVy
KQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBu
YW1lZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAg
ICAgLy8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4K
LSAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgY2xpZW50LnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CkBAIC0xOTksMTcgKzIxNywxNSBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldExhbmd1YWdlKGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogICAgIC8vIHNoYXJlZCBiZXR3ZWVuIGFsbCB0cmFja3Mg
dGhhdCBzdXBwb3J0IHNldHRpbmcgbGFuZ3VhZ2UuCiAKICAgICAvLyAyLiBVcGRhdGUgdGhpcyBh
dHRyaWJ1dGUgdG8gdGhlIG5ldyB2YWx1ZS4KLSAgICBNZWRpYVRyYWNrQmFzZTo6c2V0TGFuZ3Vh
Z2UobGFuZ3VhZ2UpOworICAgIFRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOwogCiAg
ICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBu
b3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50
IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291
cmNlQnVmZmVyKQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVs
ZUNoYW5nZUV2ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBs
ZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVu
Y2VkIGJ5CiAgICAgLy8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlh
RWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVtZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgp
LT5lbnN1cmVWaWRlb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBtX2NsaWVu
dHMuZm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFj
a0xhbmd1YWdlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKICNlbmRpZgpAQCAtMjE4LDM1
ICsyMzQsMzAgQEAgdm9pZCBWaWRlb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogewog
ICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2
YXRlOjpBbHRlcm5hdGl2ZToKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmFs
dGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5h
dGl2ZUtleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2
YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmNhcHRp
b25zS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdv
cmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWlu
OgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7Cisg
ICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOgotICAgICAgICBzZXRLaW5kSW50
ZXJuYWwoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9U
cmFjazo6c2lnbktleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJh
Y2tQcml2YXRlOjpTdWJ0aXRsZXM6Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNr
OjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRp
dGxlc0tleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2
YXRlOjpDb21tZW50YXJ5OgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6Y29t
bWVudGFyeUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFy
eUtleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRl
OjpOb25lOgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoZW1wdHlTdHJpbmcoKSk7CisgICAgICAg
IHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgVmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50
KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNl
dE1lZGlhRWxlbWVudChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
dm9pZCBWaWRlb1RyYWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5o
CmluZGV4IDE3OWU3MTNiYzM2NjllNWQ0NDg0MTdlNDJiZTI5YmIxMGMzOTE4ODguLmVmODQ4OGU3
YjU5ODFmMTMxNzIyYmZiZDY3NmQ2ZjRiMTZkZjUxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFjay5oCkBAIC0zMCwyMyArMzAsMzAgQEAKIAogI2luY2x1ZGUgIlRyYWNrQmFz
ZS5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlv
bjsKIGNsYXNzIFZpZGVvVHJhY2s7CitjbGFzcyBWaWRlb1RyYWNrTGlzdDsKIAotY2xhc3MgVmlk
ZW9UcmFja0NsaWVudCB7CitjbGFzcyBWaWRlb1RyYWNrQ2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFZpZGVvVHJhY2tDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5WaWRlb1Ry
YWNrQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0
ZWRDaGFuZ2VkKFZpZGVvVHJhY2smKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tJ
ZENoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrS2lu
ZENoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrTGFi
ZWxDaGFuZ2VkKFZpZGVvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0xh
bmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJh
Y2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxs
UmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJikgeyB9CiB9OwogCiBjbGFzcyBWaWRlb1RyYWNr
IGZpbmFsIDogcHVibGljIE1lZGlhVHJhY2tCYXNlLCBwcml2YXRlIFZpZGVvVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRl
b1RyYWNrQ2xpZW50JiBjbGllbnQsIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisg
ICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFjayhjb250ZXh0LCB0cmFja1By
aXZhdGUpKTsKICAgICB9CiAgICAgdmlydHVhbCB+VmlkZW9UcmFjaygpOwogCkBAIC02MCwyNiAr
NjcsMjMgQEAgcHVibGljOgogICAgIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGVkOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOwogCi0g
ICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAg
VmlkZW9UcmFja0NsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAg
ICB2b2lkIGFkZENsaWVudChWaWRlb1RyYWNrQ2xpZW50Jik7CisgICAgdm9pZCBjbGVhckNsaWVu
dChWaWRlb1RyYWNrQ2xpZW50Jik7CiAKICAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpOwog
Ci0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICB2b2lkIHNldEtpbmQoY29uc3QgQXRvbVN0
cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZp
bmFsOwotI2VuZGlmCiAKICAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbigp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRQcml2YXRlKFZpZGVvVHJhY2tQcml2YXRlJik7Ci0gICAg
dm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Pikgb3ZlcnJpZGU7
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9n
Z2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgVmlkZW9U
cmFjayhWaWRlb1RyYWNrQ2xpZW50JiwgVmlkZW9UcmFja1ByaXZhdGUmKTsKKyAgICBWaWRlb1Ry
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBWaWRlb1RyYWNrUHJpdmF0ZSYpOwogCiAgICAg
Ym9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAKQEAgLTEw
MCw3ICsxMDQsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJWaWRlb1RyYWNrIjsgfQogI2VuZGlmCiAKLSAgICBWaWRlb1Ry
YWNrQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBXZWFrUHRyPFZpZGVvVHJhY2tM
aXN0PiBtX3ZpZGVvVHJhY2tMaXN0OworICAgIFdlYWtIYXNoU2V0PFZpZGVvVHJhY2tDbGllbnQ+
IG1fY2xpZW50czsKICAgICBSZWY8VmlkZW9UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBi
b29sIG1fc2VsZWN0ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaWRsCmluZGV4IDc0NzIzZGJhZGQ1ZTllMzcxYzNmMmQxNjdiYmQ3NTE3MjE1NThj
MGQuLjJjNjBiMmIyZTcwNjUzMzg4ZDlhNGVjYzAwMzlhMzJmMzY2MGIyYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbApAQCAtMjUsOCArMjUsNyBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVu
dFJvb3QsCi0gICAgR2VuZXJhdGVBZGRPcGFxdWVSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGUsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFZpZGVvVHJhY2sgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFja0xpc3QuY3BwCmluZGV4IDg0ODY1NjZkMThjODRlNmY0YTY4YWFmYmU4YTNj
MDU4MjQ3NGQzYjAuLjdhOTFhNTkxZWFhYThmMjE0NmM0ZWIzOTk3MmI1YTdiMzk2OWQxYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCkBAIC0yOSwx
MyArMjksMTIgQEAKIAogI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0LmgiCiAKLSNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFjay5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChXZWFrUHRyPEhUTUxN
ZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0g
ICAgOiBUcmFja0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitWaWRlb1RyYWNrTGlzdDo6Vmlk
ZW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNr
TGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3QpCiB7CiB9CiAK
QEAgLTUzLDggKzUyLDggQEAgdm9pZCBWaWRlb1RyYWNrTGlzdDo6YXBwZW5kKFJlZjxWaWRlb1Ry
YWNrPiYmIHRyYWNrKQogICAgIH0KICAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5zZXJ0aW9u
SW5kZXgsIHRyYWNrLnB0cigpKTsKIAotICAgIEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgp
IHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtZWRpYUVsZW1lbnQoKSk7Ci0gICAgdHJhY2st
PnNldE1lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQoKSk7CisgICAgaWYgKCF0cmFjay0+dHJhY2tM
aXN0KCkpCisgICAgICAgIHRyYWNrLT5zZXRUcmFja0xpc3QoKnRoaXMpOwogCiAgICAgc2NoZWR1
bGVBZGRUcmFja0V2ZW50KFdURk1vdmUodHJhY2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuaAppbmRleCA5NjYwZGY2ZmUyOTc3NGRkZGYzYmM5MzZmMzQ0
MTI5NGQ4YzBkYWIzLi4yNWNlY2JmZWJiZTRjMmFhYmZjMjc3ZjJkNjA4NDE2ODJjZWY2MDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCkBAIC0zNSw5ICsz
NSw5IEBAIGNsYXNzIFZpZGVvVHJhY2s7CiAKIGNsYXNzIFZpZGVvVHJhY2tMaXN0IGZpbmFsIDog
cHVibGljIFRyYWNrTGlzdEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFj
a0xpc3Q+IGNyZWF0ZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG93bmVyLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja0xpc3Q+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgYXV0
byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrTGlzdChvd25lciwgY29udGV4dCkpOwor
ICAgICAgICBhdXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2tMaXN0KGNvbnRleHQp
KTsKICAgICAgICAgbGlzdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiBsaXN0
OwogICAgIH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0g
ICAgVmlkZW9UcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOworICAgIFZpZGVvVHJhY2tMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKIAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
IH07CkBAIC02Miw0ICs2Miw4IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZpZGVvVHJhY2tMaXN0
KSA9PSBzaXplb2YoVHJhY2tMaXN0QmFzZSksICIiKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpUcmFja0xpc3RCYXNlJiB0
cmFja0xpc3QpIHsgcmV0dXJuIHRyYWNrTGlzdC50eXBlKCkgPT0gV2ViQ29yZTo6VHJhY2tMaXN0
QmFzZTo6VmlkZW9UcmFja0xpc3Q7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwog
I2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5pZGwKaW5kZXggYWIyYjdlNmMyM2ViZTBlM2I4MGI2NzNhYjk1OThhNDE3ODhk
ZTdkYi4uMjMxYjg0MGVhMDZmMDMwOWZjZjdhNDhkNzE2YWRkNGE5NzM3ODIzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKQEAgLTI2LDggKzI2LDYg
QEAKIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCi0gICAgR2VuZXJhdGVBZGRPcGFx
dWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBWaWRlb1RyYWNrTGlzdCA6
IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437567</attachid>
            <date>2021-09-07 15:57:52 -0700</date>
            <delta_ts>2021-09-07 20:20:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229924-20210907155752.patch</filename>
            <type>text/plain</type>
            <size>109645</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmYmYxMThlMjE1ZDM3
M2M3ZTc5YzQ3YmY0ZjM4NDRiNjA3MjFkYi4uOTIxZTY2ZGZlMWU2ZjEyZmEzNDQyYTJiMzVkZGIx
ZDY1YTBkOGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAyMS0wOS0wNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBWaWRlbyxB
dWRpbyxUZXh0VHJhY2sgYW5kIFRyYWNrTGlzdHMgdG8gbm90IGRlcGVuZCBvbiBIVE1MTWVkaWFF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
cmFja0Jhc2UgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMgY3VycmVudGx5IGFyZSBvbmx5IGFibGUg
dG8gaGFuZGxlIGEgc2luZ2xlICJjbGllbnQiCisgICAgICAgIGF0IGEgdGltZSwgd2hpY2ggbWVh
bnMgYSBjb21wbGljYXRlZCByZS1zZW5kaW5nIG9mIG5vdGlmaWNhdGlvbnMgZnJvbSBvbmUgY2xp
ZW50IHRvCisgICAgICAgIHRoZSBuZXh0IHRvIGVuc3VyZSBldmVyeXRoaW5nIGZsb3dzIHRvIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGlzCisgICAgICAgIGNvbXBsaWNh
dGVkIGNsaWVudCBoZWlyYXJjaHksIFRyYWNrcyBhbmQgdGhlaXIgVHJhY2tMaXN0cyBiZWluZyB0
aWdodGx5IGJvdW5kIHRvIHRoZWlyCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBtYWtl
IE1TRS1pbi1hLVdvcmtlciBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIGltcGxlbWVudC4KKworICAg
ICAgICBSZWZhY3RvciBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIHRvIGhh
dmUgbXVsdGlwbGUgY2xpZW50cywgdHJhY2tlZCBieQorICAgICAgICBhIFdlYWtIYXNoU2V0LiBS
ZW1vdmUgSFRNTE1lZGlhRWxlbWVudCBmcm9tIHRoYXQgY2xhc3MgaGVpcmFyY2h5LCBhbmQgcmVw
bGFjZSBpdCB3aXRoCisgICAgICAgIGEgV2Vha1B0ciB0byB0aGVpciBUcmFja0xpc3QgZm9yIG9w
YXF1ZVJvb3QgcHVycG9zZXMuCisKKyAgICAgICAgU2ltaWxhcmx5LCByZWZhY3RvciBBdWRpb1Ry
YWNrTGlzdCwgVmlkZW9UcmFja0xpc3QsIGFuZCBUZXh0VHJhY2tMaXN0IHRvIG5vdCByZXF1aXJl
CisgICAgICAgIGEgYmFja3BvaW50ZXIgdG8gSFRNTE1lZGlhRWxlbWVudCwgYW5kIHVzZSBhIFdl
YWtQdHI8dm9pZD4gaW5zdGVhZCwgYWxsb3dpbmcgZWl0aGVyCisgICAgICAgIFNvdXJjZUJ1ZmZl
ciBvciBIVE1MTWVkaWFFbGVtZW50IHRvIGJlIHRoZSBsaXN0J3Mgb3BhcXVlUm9vdC4KKworICAg
ICAgICBBIFRyYWNrQmFzZSBuZWVkZWQgYWNjZXNzIHRvIGEgSFRNTE1lZGlhRWxlbWVudCBvbmx5
IGZvciB0aGUgbmVjZXNzaXR5IG9mIG91dHB1dHRpbmcKKyAgICAgICAgYSB3YXJuaW5nIHRvIHRo
ZSBjb25zb2xlIHdoZW4gYSBsYW5ndWFnZSBlcnJvciBvY2N1cnJlZDsgaW5zdGVhZCwgbWFrZSBU
cmFja0Jhc2UgYQorICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgYW5kIHBhc3Mg
YSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBUcmFja0Jhc2UgKGFuZAorICAgICAgICBh
bGwgaXRzIGRlcml2ZWQgY2xhc3NlcykgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIEEg
VHJhY2tMaXN0QmFzZSBub3cgaGFzIGEgdHlwZSgpIG1ldGhvZCwgd2hpY2ggYWxsb3dzIGl0IHRv
IGJlIHNhZmVseSBjYXN0IHRvIEF1ZGlvVHJhY2ssCisgICAgICAgIFZpZGVvVHJhY2ssIGFuZCBU
ZXh0VHJhY2ssIHRocm91Z2ggdHlwZSB0cmFpdCBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICBU
ZXh0VHJhY2sgdXNlZCBIVE1MTWVkaWFFbGVtZW50IHRvIHJldHJpZXZlIGl0cyBUZXh0VHJhY2tM
aXN0IGZvciBjZXJ0YWluIG9wZXJhdGlvbnMsCisgICAgICAgIGFuZCBub3cgdGhhdCBlYWNoIFRy
YWNrQmFzZSBoYXMgYSBiYWNrcG9pbnRlciB0byBpdHMgVHJhY2tMaXN0LCB0aGlzIGlzIG5vIGxv
bmdlciBuZWNlc3NhcnkuCisKKyAgICAgICAgVGV4dFRyYWNrTGlzdCBub3cgaGFzIHNldER1cmF0
aW9uKCkvZHVyYXRpb24oKSBtZW1iZXIgZnVuY3Rpb25zLCBzbyB0aGF0IHdoZW4gVGV4dFRyYWNr
CisgICAgICAgIHJlY2VpdmVzIGEgY3VlIHdpdGggYW4gaW5kZWZpbml0ZSBkdXJhdGlvbiwgdGhh
dCBjdWUncyBlbmRUaW1lIGNhbiBiZSBjYWxjdWxhdGVkLgorCisgICAgICAgIFRoZSBBdWRpb1Ry
YWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIElETHMgcHJldmlvdXNseSBzcGVjaWZpZWQg
R2VuZXJhdGVJc1JlYWNoYWJsZSwKKyAgICAgICAgd2l0aCBhIHBhcmFtZXRlciBvZiBJbXBsRWxl
bWVudFJvb3QsIHdoaWNoIHJlcXVpcmVkIGFuIGVsZW1lbnQoKSBtZXRob2Qgb24gZWFjaDsgbm93
CisgICAgICAgIHRoYXQgVHJhY2tCYXNlIGhhcyBhbiBvcGFxdWVSb290KCkgbWV0aG9kLCB0aGlz
IHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRp
b1RyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrTGFiZWxDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYW5ndWFn
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92
ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxUcmFja0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjppZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OndpbGxSZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tJZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0xhbmd1YWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50Ojp3aWxsUmVtb3Zl
QXVkaW9UcmFjayk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0OjpyZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGw6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
RGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Oklu
YmFuZEdlbmVyaWNUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0
b21hdGljSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2s6On5UZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0ZXh0
VHJhY2tMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZUFsbEN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3VlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tBZGRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpjbGVhclRy
YWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnRyYWNrTGlzdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZSk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6aWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0Jhc2U6Omxhbmd1YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrQmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldElk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFiZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzZXRPcGFxdWVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OnJvb3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZWxlY3RlZENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6aWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjp3aWxsUmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZpZGVvVHJh
Y2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVudDo6dmlkZW9U
cmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZp
ZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVu
dDo6dmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrQ2xpZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tDbGllbnQ6OndpbGxSZW1vdmVWaWRlb1RyYWNrKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6CiAyMDIxLTA4LTIzICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIERlLWZsYWtlIG1lZGlhIHBhaW50aW5n
IHRlc3RzIGJ5IGRlbGF5aW5nIHJlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgdW50aWwg
ZWxlbWVudCBpcyBhYmxlIHRvIHBhaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNjdhNjFiYzg0MWRkYmY5NDkxNzdj
YTFlZGU3MWVlYzA3ODkwN2JlNS4uZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRlMDY0
NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNzQsNiArNzQsNyBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZl
cihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KHNvdXJjZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICwgbV9wcml2YXRlKFdURk1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihbdGhpc10geyByZXR1cm4g
b3BhcXVlUm9vdCgpOyB9KQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3Rh
cnQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNjMyLDIyICs2MzMsMjggQEAgdWludDY0
X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiAKIFZpZGVvVHJhY2tM
aXN0JiBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdmlkZW9UcmFj
a3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKChpc1JlbW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkp
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsK
KyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2V0T3BhcXVlUm9vdE9i
c2VydmVyKG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsKKyAgICB9CiAgICAgcmV0dXJuICptX3ZpZGVv
VHJhY2tzOwogfQogCiBBdWRpb1RyYWNrTGlzdCYgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrcygp
CiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVk
aW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVkKCkgPyBudWxscHRyIDog
bV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRpb1Ry
YWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVk
aW9UcmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7Cisg
ICAgfQogICAgIHJldHVybiAqbV9hdWRpb1RyYWNrczsKIH0KIAogVGV4dFRyYWNrTGlzdCYgU291
cmNlQnVmZmVyOjp0ZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAg
ICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRyKChpc1Jl
bW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpKSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykgeworICAgICAgICBtX3Rl
eHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVS
b290UHJvdmlkZXIpOworICAgIH0KICAgICByZXR1cm4gKm1fdGV4dFRyYWNrczsKIH0KIApAQCAt
Nzc5LDcgKzc4Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHN0ZXBzIDUuMi4xLTUuMi44LjEgYXMgcGVyIEVkaXRvcidzIERyYWZ0
IDA5IEphbnVhcnkgMjAxNSwgYW5kIHJlb3JkZXIgdGhpcwogICAgICAgICAgICAgLy8gNS4yLjEg
TGV0IG5ldyBhdWRpbyB0cmFjayBiZSBhIG5ldyBBdWRpb1RyYWNrIG9iamVjdC4KICAgICAgICAg
ICAgIC8vIDUuMi4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGlk
IHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KLSAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9U
cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSgqdGhpcywgKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICphdWRpb1RyYWNrSW5mby50cmFjayk7CisgICAgICAgICAg
ICBuZXdBdWRpb1RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbmV3QXVkaW9U
cmFjay0+c2V0U291cmNlQnVmZmVyKHRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjIuMyBJZiBh
dWRpb1RyYWNrcy5sZW5ndGggZXF1YWxzIDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CkBAIC04MDEsNyArODA5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAgICAgICAg
IC8vIDUuMi43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBub3QgY2Fu
Y2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBB
dWRpb1RyYWNrTGlzdCBvYmplY3QKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1
ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3
QXVkaW9UcmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVu
dCgpLT5hZGRBdWRpb1RyYWNrKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAogICAgICAgICAg
ICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVj
KCkpOwogCkBAIC04MTQsNyArODIyLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RlcHMgNS4zLjEtNS4zLjguMSBhcyBwZXIgRWRp
dG9yJ3MgRHJhZnQgMDkgSmFudWFyeSAyMDE1LCBhbmQgcmVvcmRlciB0aGlzCiAgICAgICAgICAg
ICAvLyA1LjMuMSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0
LgogICAgICAgICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBp
dCB0byB0aGUgaWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgotICAgICAgICAgICAgYXV0
byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKCp0aGlzLCAqdmlkZW9UcmFja0lu
Zm8udHJhY2spOworICAgICAgICAgICAgYXV0byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnZpZGVvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIG5ld1ZpZGVvVHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAg
ICBuZXdWaWRlb1RyYWNrLT5zZXRTb3VyY2VCdWZmZXIodGhpcyk7CiAKICAgICAgICAgICAgIC8v
IDUuMy4zIElmIHZpZGVvVHJhY2tzLmxlbmd0aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKQEAgLTgzNiw3ICs4NDUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQog
ICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50
IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAg
IC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFj
ZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNl
ZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50Lgot
ICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygp
LmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+
bWVkaWFFbGVtZW50KCktPmFkZFZpZGVvVHJhY2sobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwog
CiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlw
dGlvbi0+Y29kZWMoKSk7CiAKQEAgLTg1MSw3ICs4NjAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlh
bGl6YQogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdGVwcyA1LjQuMS01LjQuOC4x
IGFzIHBlciBFZGl0b3IncyBEcmFmdCAwOSBKYW51YXJ5IDIwMTUsIGFuZCByZW9yZGVyIHRoaXMK
ICAgICAgICAgICAgIC8vIDUuNC4xIExldCBuZXcgdGV4dCB0cmFjayBiZSBhIG5ldyBUZXh0VHJh
Y2sgb2JqZWN0IHdpdGggaXRzIHByb3BlcnRpZXMgcG9wdWxhdGVkIHdpdGggdGhlCiAgICAgICAg
ICAgICAvLyBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBz
ZWdtZW50LgotICAgICAgICAgICAgYXV0byBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6
OmNyZWF0ZShkb2N1bWVudCgpLCAqdGhpcywgdGV4dFRyYWNrUHJpdmF0ZSk7CisgICAgICAgICAg
ICBhdXRvIG5ld1RleHRUcmFjayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHRUcmFja1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VGV4dFRyYWNrLT5hZGRDbGllbnQo
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBu
ZXcgdGV4dCB0cmFjayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3Rp
dmUKICAgICAgICAgICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KQEAgLTg2OCw3ICs4NzgsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQogICAgICAgICAgICAgLy8gNS40LjYgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90
IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1
c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBv
biB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1l
bnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YWRkVGV4dFRyYWNrKG5ld1Rl
eHRUcmFjay5jb3B5UmVmKCkpOwogCiAgICAgICAgICAgICBtX3RleHRDb2RlY3MuYXBwZW5kKHRl
eHRUcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOwogCkBAIC0xMDIzLDkgKzEwMzMsMjQg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYgdHJhY2spCiAKICAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250
YWlucyh0cmFjaykpCiAgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKK30KIAotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVs
ZW1lbnQoKS0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCh0cmFjayk7Cit2b2lkIFNvdXJjZUJ1
ZmZlcjo6dmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQoreworICAgIGlm
IChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAg
ICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlcjo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAg
ICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisg
ICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2sp
Cit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJh
Y2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYg
dHJhY2spCkBAIC0xMDUwLDkgKzEwNzUsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKIAogICAgIGlmIChtX2F1ZGlvVHJh
Y2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAgbV9hdWRpb1Ry
YWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQogCi0gICAgaWYgKCFpc1JlbW92ZWQoKSkK
LSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQodHJhY2spOwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRp
b1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQo
QXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1Ry
YWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFuZ3VhZ2VD
aGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1f
YXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2No
ZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKQEAgLTEwNzcsMzkgKzExMTcsMTggQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiAKICAg
ICBpZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAg
ICAgICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQotICAgIGlmICghaXNS
ZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrTW9k
ZUNoYW5nZWQodHJhY2spOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmICghaXNSZW1v
dmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrQWRkQ3Vl
KHRyYWNrLCBjdWUpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBjdWVMaXN0KQotewotICAg
IGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4
dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3VlTGlzdCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyOjp0
ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17
Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYgdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmIGN1ZUxpc3QpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrJiB0cmFjaykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3Nv
dXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZUxpc3Qp
OworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykp
CisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFj
aykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKKyAgICBpZiAobV90ZXh0VHJhY2tz
ICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3RleHRUcmFja3Mt
PnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikKQEAgLTExMTks
OCArMTEzOCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KQogewotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlv
bkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc291cmNlLT5zZXREdXJhdGlvbkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBp
ZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0
aW9uKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIaWdoZXN0
UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CmluZGV4IGVlY2QzMWJmYzVmNGJhMmYzZjY2MDgwN2RlYTYyNTE3Nzc1YmE3NmIuLjg4OGQyZDZl
OThkYWJmOTdkYWJlMWM5MWYyNDhiMTA4NWQ2OTJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtNjksNiArNjksOSBAQCBj
bGFzcyBTb3VyY2VCdWZmZXIgZmluYWwKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNv
dXJjZUJ1ZmZlcik7CiBwdWJsaWM6CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFy
Z2V0OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9y
eTsKKwogICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7
CiAKQEAgLTEzNSw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyAgICB2b2lkKiBvcGFxdWVSb290KCkgeyBy
ZXR1cm4gdGhpczsgfQorCiBwcml2YXRlOgogICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtMTYxLDE1ICsxNjYsMjAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKICAgICB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7Ci0gICAgLy8gVmlkZW9UcmFja0NsaWVudAot
ICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCBhdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZv
aWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBh
dWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKwogICAgIC8vIFRl
eHRUcmFja0NsaWVudAogICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikg
ZmluYWw7CiAgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUo
VGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJh
Y2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisKKyAgICAvLyBWaWRlb1RyYWNr
Q2xpZW50CisgICAgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFs
OworICAgIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAg
ICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFsOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQpAQCAtMjA5LDYgKzIxOSw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEFwcGVuZE1vZGUgbV9tb2RlIHsgQXBwZW5kTW9kZTo6U2VnbWVu
dHMgfTsKIAorICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7
CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggOGY5OTBkYWYyYTRhNWZiZTRj
NDYxMTIwZDIwY2ZmOGJkMmVmODkyMy4uMDdkNDkyYzQwZjNjZmQ2M2MxN2NiZDZjMWRkZWMzZjAy
YTczNzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbApAQCAtMzgsNiArMzgsNyBAQAogICAgIENvbmRpdGlvbmFsPU1FRElB
X1NPVVJDRSwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlhU291cmNlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU291cmNlQnVmZmVyIDogRXZlbnRUYXJnZXQgewogICAg
IGF0dHJpYnV0ZSBBcHBlbmRNb2RlIG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmgKaW5kZXggZWY3MmQ5YjdhYWJkYzk5ZTczMGZmZGVlODBlMTAxMzU5ZjBh
ZmQwZi4uZjA1OGM5OWQ5MzVjMWY3M2JhOWY1OTE4NWI1MTRhNzkwNGQ3NDU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaApAQCAtMzYsMTMgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFja0Jhc2UmKTsKIAotaW5saW5lIHZvaWQqIHJv
b3QoVHJhY2tCYXNlKiB0cmFjaykKLXsKLSAgICBpZiAodHJhY2stPmVsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPmVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHRyYWNrOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiZTAxMmY5N2IwMDQ4OTQy
YTEwMGUzMjAzNGFhMGI3ZmQwYmM5ODllLi42OWZkMjFlNjJjZGEyNDUyMTg1NmZjYzhlNWQ2YmFl
N2Q3MzhlMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTQ1MCw2ICs0NTAsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9zaG91bGRB
dWRpb1BsYXliYWNrUmVxdWlyZVVzZXJHZXN0dXJlKGRvY3VtZW50LnRvcERvY3VtZW50KCkuYXVk
aW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkKICAgICAsIG1fc2hvdWxkVmlkZW9QbGF5YmFja1JlcXVpcmVVc2VyR2VzdHVy
ZShkb2N1bWVudC50b3BEb2N1bWVudCgpLnZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KCkgJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgLCBtX3ZvbHVtZUxv
Y2tlZChkZWZhdWx0Vm9sdW1lTG9ja2VkKCkpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihb
dGhpc10geyByZXR1cm4gb3BhcXVlUm9vdCgpOyB9KQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgLCBtX3JlbW90ZShSZW1vdGVQbGF5YmFjazo6Y3JlYXRlKCp0aGlz
KSkKICNlbmRpZgpAQCAtNTQ0LDEzICs1NDUsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlQ29u
ZmlndXJhdGlvbkNoYW5nZU9ic2VydmVyKCp0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKG1fYXVk
aW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyRWxlbWVudCgpOwotICAgIGlm
IChtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJFbGVtZW50KCk7Ci0g
ICAgaWYgKG1fdmlkZW9UcmFja3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyRWxlbWVu
dCgpOwotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBpZiAoaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZEV2ZW50KSB8fCBtX3JlbW90ZS0+aGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzKCkp
IHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGZh
bHNlOwpAQCAtMTg2OSw2ICsxODYzLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9U
cmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9B
bmRWaWRlbygpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tLaW5kQ2hh
bmdlZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1
ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNr
TGFiZWxDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tz
ICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1f
YXVkaW9UcmFja3MgJiYgbV9hdWRpb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBt
X2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAg
cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKIHsKICAgICBib29sIHRyYWNrSXNM
b2FkZWQgPSB0cnVlOwpAQCAtMTg4NCw4ICsxOTAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogICAgIH0KIAogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFkZGVkIHRyYWNrLCBjcmVhdGUgdGhlIGxpc3Qgb2YgdGV4
dCB0cmFja3MuCi0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcyA9
IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGVuc3VyZVRleHRUcmFja3MoKTsKIAog
ICAgIC8vIE1hcmsgdGhpcyB0cmFjayBhcyAiY29uZmlndXJlZCIgc28gY29uZmlndXJlVGV4dFRy
YWNrcyB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4uCiAgICAgdHJhY2suc2V0SGFzQmVlbkNv
bmZpZ3VyZWQodHJ1ZSk7CkBAIC0xOTA0LDYgKzE5MjAsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogI2VuZGlmCiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0
cmFjaykKK3sKKyAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlv
bnMgJiYgdHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNr
Lm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCisgICAgICAgIHRyYWNrLnNldE1v
ZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworCisgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBt
X3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TGFiZWxDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRyYWNrcyAm
JiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRy
YWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJh
Y2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmICh0cmFjay50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgcmVtb3ZlVGV4dFRyYWNr
KHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKQEAgLTE5MTEsMTAgKzE5NTQsMjcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sm
IHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9BbmRWaWRlbygpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykK
IHsKLSAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNrLm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCi0gICAgICAgIHRyYWNrLnNldE1vZGUoVGV4
dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYWJl
bENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYg
bV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV92aWRl
b1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICByZW1v
dmVWaWRlb1RyYWNrKHRyYWNrKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkln
bm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKQpAQCAtNDA4NywxNSArNDE0NywxNCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIHNldEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0
YXRlKEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRlOjpQcmV2ZW50ZWRBdXRvcGxheSk7CiAgICAg
fQogCi0gICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoKnRoaXMsIHRyYWNrKSk7
CisgICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0cmFjaykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQogewogICAgIC8v
IDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKICAgICAvLyAxLiBBc3Nv
Y2lhdGUgdGhlIHJlbGV2YW50IGRhdGEgd2l0aCBhIG5ldyB0ZXh0IHRyYWNrIGFuZCBpdHMgY29y
cmVzcG9uZGluZyBuZXcgVGV4dFRyYWNrIG9iamVjdC4KLSAgICBhdXRvIHRleHRUcmFjayA9IElu
YmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCksICp0aGlzLCB0cmFjayk7Ci0gICAgdGV4
dFRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQoKSwgdHJhY2spOwogCiAg
ICAgLy8gMi4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIGtpbmQsIGxhYmVsLCBhbmQgbGFuZ3Vh
Z2UgYmFzZWQgb24gdGhlIHNlbWFudGljcyBvZiB0aGUgcmVsZXZhbnQgZGF0YSwKICAgICAvLyBh
cyBkZWZpbmVkIGJ5IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9uLiBJZiB0aGVyZSBpcyBubyBs
YWJlbCBpbiB0aGF0IGRhdGEsIHRoZW4gdGhlIGxhYmVsIG11c3QKQEAgLTQxMjUsNyArNDE4NCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKLSAg
ICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSgqdGhpcywgdHJhY2spKTsKKyAgICBh
dXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0cmFjayk7CisgICAgYWRkVmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrKQpAQCAtNDE0OCw2ICs0MjA4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFJlZjxBdWRpb1RyYWNrPiYmIHRyYWNrKQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xpZW50KCp0aGlzKTsKICAg
ICBlbnN1cmVBdWRpb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQx
NjUsNiArNDIyNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFJlZjxU
ZXh0VHJhY2s+JiYgdHJhY2spCiAgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IHBh
Z2UtPmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuY2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZW5zdXJlVGV4
dFRyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQxNzMsMTIgKzQyMzUs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNr
PiYmIHRyYWNrKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dn
ZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICBlbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNr
KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhSZWY8QXVk
aW9UcmFjaz4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICB0cmFj
ay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIG1fYXVkaW9UcmFja3MtPnJlbW92ZSh0cmFjay5n
ZXQoKSk7CiB9CiAKQEAgLTQxODcsMTQgKzQyNTAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2soUmVmPFRleHRUcmFjaz4mJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2
ZW4KICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSB7ICp0aGlzIH07CiAgICAgaWYg
KGF1dG8gY3VlcyA9IG1ha2VSZWZQdHIodHJhY2stPmN1ZXMoKSkpCiAgICAgICAgIHRleHRUcmFj
a1JlbW92ZUN1ZXModHJhY2ssICpjdWVzKTsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAg
ICB0cmFjay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIGlmIChtX3RleHRUcmFja3MpCiAgICAg
ICAgIG1fdGV4dFRyYWNrcy0+cmVtb3ZlKHRyYWNrLCBzY2hlZHVsZUV2ZW50KTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNrPiYmIHRy
YWNrKQogewotICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOworICAgIHRyYWNrLT5jbGVhckNsaWVu
dCgqdGhpcyk7CiAgICAgbV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKIH0KIApAQCAtNDIz
MSw3ICs0Mjk0LDcgQEAgRXhjZXB0aW9uT3I8VGV4dFRyYWNrJj4gSFRNTE1lZGlhRWxlbWVudDo6
YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QKIAogICAgIC8vIDUuIENyZWF0
ZSBhIG5ldyB0ZXh0IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5ldyBvYmplY3QsIGFuZCBz
ZXQgaXRzIHRleHQgdHJhY2sga2luZCB0byBraW5kLCBpdHMgdGV4dAogICAgIC8vIHRyYWNrIGxh
YmVsIHRvIGxhYmVsLCBpdHMgdGV4dCB0cmFjayBsYW5ndWFnZSB0byBsYW5ndWFnZS4uLgotICAg
IGF1dG8gdHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgdGhpcywga2luZCwg
ZW1wdHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlKTsKKyAgICBhdXRvIHRyYWNrID0gVGV4dFRy
YWNrOjpjcmVhdGUoJmRvY3VtZW50KCksIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBsYW5n
dWFnZSk7CiAgICAgYXV0byYgdHJhY2tSZWZlcmVuY2UgPSB0cmFjay5nZXQoKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICB0cmFja1JlZmVyZW5jZS5zZXRMb2dnZXIobG9nZ2VyKCks
IGxvZ0lkZW50aWZpZXIoKSk7CkBAIC00MjU0LDI0ICs0MzE3LDMxIEBAIEV4Y2VwdGlvbk9yPFRl
eHRUcmFjayY+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0CiAKIEF1ZGlvVHJhY2tMaXN0JiBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVBdWRp
b1RyYWNrcygpCiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJh
Y2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghbV9hdWRpb1RyYWNr
cykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVkaW9U
cmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7CisgICAg
fQogCiAgICAgcmV0dXJuICptX2F1ZGlvVHJhY2tzOwogfQogCiBUZXh0VHJhY2tMaXN0JiBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNr
cykKLSAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFr
UHRyKHRoaXMpLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX3RleHRUcmFja3MpIHsKKyAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNr
TGlzdDo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
KyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVSb290
UHJvdmlkZXIpOworICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0aW9uTWVk
aWFUaW1lKCkpOworICAgIH0KIAogICAgIHJldHVybiAqbV90ZXh0VHJhY2tzOwogfQogCiBWaWRl
b1RyYWNrTGlzdCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlVmlkZW9UcmFja3MoKQogewotICAg
IGlmICghbV92aWRlb1RyYWNrcykKLSAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tM
aXN0OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92
aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zZXRPcGFxdWVS
b290T2JzZXJ2ZXIobV9vcGFxdWVSb290UHJvdmlkZXIpOworICAgIH0KIAogICAgIHJldHVybiAq
bV92aWRlb1RyYWNrczsKIH0KQEAgLTUwNDcsNiArNTExNyw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoKQogICAgIGlmIChub3cgPiBkdXIpCiAg
ICAgICAgIHNlZWtJbnRlcm5hbChkdXIpOwogCisgICAgaWYgKG1fdGV4dFRyYWNrcykKKyAgICAg
ICAgbV90ZXh0VHJhY2tzLT5zZXREdXJhdGlvbihkdXIpOworCiAgICAgZW5kUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCA2ZTFjOWY5ZDU2YjExZDE2MTZiZDY3MTFmOTc3ZWI1ZGZlMzEyYmY4Li4zMmVk
Y2NkODA5NDc1OGM4YzRiNDI2NjJjY2Y3MWY0ZjRiMjY4ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlZpc2liaWxp
dHlDaGFuZ2VDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMp
CkBAIC0zODMsMTcgKzM4NCwyOCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50
CiAgICAgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOwor
ICAgIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2
b2lkIGF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQg
YXVkaW9UcmFja0xhbmd1YWdlQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB3
aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrJikgZmluYWw7CiAKICAgICAvLyBUZXh0VHJh
Y2tDbGllbnQKLSAgICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNr
JiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFj
a0xhYmVsQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0xhbmd1
YWdlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMo
VGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOworICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmlu
YWw7CisgICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikg
ZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNr
Q3VlJikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIGZp
bmFsOwogCiAgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZvaWQgdmlkZW9UcmFja0tpbmRD
aGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvVHJhY2tMYWJlbENoYW5n
ZWQoVmlkZW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdl
ZChWaWRlb1RyYWNrJikgZmluYWw7CiAgICAgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrKFZpZGVv
VHJhY2smKSBmaW5hbDsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24qKTsKQEAgLTExNTcsNiArMTE2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEJsb2I+IG1fYmxvYjsKICAgICBVUkwgbV9ibG9iVVJMRm9yUmVhZGluZzsKICAgICBNZWRp
YVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKKyAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1f
b3BhcXVlUm9vdFByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgYm9vbCBtX2hhc05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCBiODY1YzcyYTJkM2RjNDliZmU3YTZlNDE0
MTc1NWQ4OWJmY2U5YTdkLi4xYmYxOWFlY2Q3MWM1YzVlYWM2OGZmYWM2ZDMyYjk4N2ExMTUwZTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQogewogICAgIGlmICht
X3RyYWNrKSB7CiAgICAgICAgIG1fdHJhY2stPmNsZWFyRWxlbWVudCgpOwotICAgICAgICBtX3Ry
YWNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7
CiAgICAgfQogfQogCkBAIC0xNTIsNiArMTUyLDcgQEAgTG9hZGFibGVUZXh0VHJhY2smIEhUTUxU
cmFja0VsZW1lbnQ6OnRyYWNrKCkKICAgICAgICAgaWYgKCFUZXh0VHJhY2s6OmlzVmFsaWRLaW5k
S2V5d29yZChraW5kKSkKICAgICAgICAgICAgIGtpbmQgPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKTsKICAgICAgICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUoKnRo
aXMsIGtpbmQsIGxhYmVsKCksIHNyY2xhbmcoKSk7CisgICAgICAgIG1fdHJhY2stPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgfQogICAgIEFTU0VSVChtX3RyYWNrLT50cmFja0VsZW1lbnQoKSA9PSB0
aGlzKTsKIApAQCAtMjk5LDQ0ICszMDAsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTFRyYWNr
RWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdAogICAgIHJl
dHVybiBudWxsQXRvbSgpOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0tp
bmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQodHJhY2sp
OwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayYgdHJhY2spCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayYpCiB7CiAgICAgLy8gU2luY2Ugd2UndmUgbW92ZWQgdG8gYSBuZXcgcGFyZW50
LCB3ZSBtYXkgbm93IGJlIGFibGUgdG8gbG9hZC4KICAgICBpZiAocmVhZHlTdGF0ZSgpID09IEhU
TUxUcmFja0VsZW1lbnQ6Ok5PTkUpCiAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwotCi0gICAgaWYg
KGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNr
TW9kZUNoYW5nZWQodHJhY2spOwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFj
a0FkZEN1ZXMoVGV4dFRyYWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgY3VlcykK
LXsKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcGFyZW50
LT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKLX0KLSAgICAKLXZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0
VHJhY2tDdWVMaXN0JiBjdWVzKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVu
dCgpKQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZXMpOwot
fQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNr
JiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3VlKHRyYWNrLCBjdWUp
OwotfQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4
dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50
ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRy
YWNrLCBjdWUpOwogfQogCiBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVu
dDo6bWVkaWFFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmgKaW5kZXggZjc4OTg5OGQxZjdkZDcwZTM2NTcxOThhMjkxYzhkYjQyNzJhOGFjYy4uYjg2MmQ0
OWE0YTkyYzMzNjczNTU4OTFjYjY0Njg1ZTY4MDE1ZTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmgKQEAgLTg0LDExICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
ZXh0VHJhY2tDbGllbnQKICAgICB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYp
IGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBmaW5hbDsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwg
Y29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVt
b3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5M
b2FkVVJMKGNvbnN0IFVSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmNwcAppbmRleCBjYWI3NzgyMWE5NDdjZDhlYzdhMjIwOTVmNzlhMjI2OTlmZDBjMzMzLi4zY2I3
MThkM2RjMjdlNTgzYjVhNWRmMTA5M2EwMzY1MjdjMDJlY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tM
aXN0LmgiCiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc1LDkgKzc1LDggQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVu
dGFyeUtleXdvcmQoKQogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1BdWRpb1RyYWNrOjpB
dWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVudCwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKLSAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpBdWRpb1Ry
YWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0
ZS5sYW5ndWFnZSgpKQotICAgICwgbV9jbGllbnQoJmNsaWVudCkKK0F1ZGlvVHJhY2s6OkF1ZGlv
VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tC
YXNlOjpBdWRpb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCks
IHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkK
ICAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogewpAQCAtMTA3LDYgKzEw
NiwxNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OnNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICBzZXRJZChtX3ByaXZhdGUtPmlkKCkpOwogfQogCit2b2lkIEF1ZGlv
VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQoreworICAgIFRy
YWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOworCisgICAgbV9jbGllbnRzLmZvckVhY2go
WyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYW5ndWFnZUNo
YW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCiBib29sIEF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5k
KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZSA9PSBh
bHRlcm5hdGl2ZUtleXdvcmQoKQpAQCAtMTIzLDYgKzEzMSwyMSBAQCB2b2lkIEF1ZGlvVHJhY2s6
OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ByaXZh
dGUtPnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChh
dXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCgq
dGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6YWRkQ2xpZW50KEF1ZGlvVHJh
Y2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGll
bnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6
Y2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2Ns
aWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwog
fQogCiBzaXplX3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpIGNvbnN0CkBAIC0xMzcs
MTggKzE2MCwyNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OmVuYWJsZWRDaGFuZ2VkKGJvb2wgZW5hYmxl
ZCkKIAogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJh
Y2s6OmlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBzZXRJZChpZCk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LmF1ZGlvVHJhY2tJZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlv
VHJhY2s6OmxhYmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKIHsKICAgICBzZXRM
YWJlbChsYWJlbCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQp
IHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoKnRoaXMpOworICAgIH0p
OwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5n
JiBsYW5ndWFnZSkKQEAgLTE1OCwxMSArMTg4LDkgQEAgdm9pZCBBdWRpb1RyYWNrOjpsYW5ndWFn
ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgQXVkaW9UcmFjazo6
d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtZWRpYUVsZW1l
bnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBl
bGVtZW50LT5yZW1vdmVBdWRpb1RyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92ZUF1ZGlvVHJh
Y2soKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9t
UHJpdmF0ZSgpCkBAIC0xOTUsMTEgKzIyMyw2IEBAIHZvaWQgQXVkaW9UcmFjazo6dXBkYXRlS2lu
ZEZyb21Qcml2YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgQXVkaW9UcmFjazo6c2V0TWVkaWFFbGVt
ZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6
OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogdm9pZCBBdWRpb1RyYWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5oCmluZGV4IDk5YTQ1MzI4YzI5ZWEwYjJjNWVjZjQyN2YxN2E0NWMwNDQxN2ZkZjcuLjM3NTEw
YThjZDJmOGY0MDE1MzU4OTI1ZGY5OWRhZWM5OGYxOTYwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFjay5oCkBAIC0zMCwyMiArMzAsMjkgQEAKIAogI2luY2x1ZGUgIkF1ZGlv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1dl
YWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFjazsK
K2NsYXNzIEF1ZGlvVHJhY2tMaXN0OwogCi1jbGFzcyBBdWRpb1RyYWNrQ2xpZW50IHsKK2NsYXNz
IEF1ZGlvVHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXVkaW9UcmFja0NsaWVu
dD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7
Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFj
ayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrSWRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNr
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9U
cmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1Ry
YWNrJikgeyB9CiB9OwogCiBjbGFzcyBBdWRpb1RyYWNrIGZpbmFsIDogcHVibGljIE1lZGlhVHJh
Y2tCYXNlLCBwcml2YXRlIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1
ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNr
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
ZGlvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXVkaW9UcmFjayhjb250ZXh0LCB0cmFja1ByaXZhdGUpKTsKICAgICB9CiAgICAgdmly
dHVhbCB+QXVkaW9UcmFjaygpOwogCkBAIC01OSwyMSArNjYsMjIgQEAgcHVibGljOgogICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQg
c2V0RW5hYmxlZChjb25zdCBib29sKTsKIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7
IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBhZGRDbGllbnQoQXVkaW9UcmFja0Ns
aWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYpOwogCiAgICAg
c2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKSBjb25zdDsKIAogICAgIGNvbnN0IEF1ZGlvVHJhY2tQ
cml2YXRlJiBwcml2YXRlVHJhY2soKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KICAgICB2
b2lkIHNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgc2V0TWVkaWFF
bGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZp
bmFsOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50
JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICBBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBBdWRpb1RyYWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBpc1ZhbGlkS2luZChjb25z
dCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAKQEAgLTkyLDcgKzEwMCw4IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1
ZGlvVHJhY2siOyB9CiAjZW5kaWYKIAotICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xpZW50IHsg
bnVsbHB0ciB9OworICAgIFdlYWtQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja0xpc3Q7
CisgICAgV2Vha0hhc2hTZXQ8QXVkaW9UcmFja0NsaWVudD4gbV9jbGllbnRzOwogICAgIFJlZjxB
dWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAppbmRleCAzOTM0
NjY2ZjVmYzA2MjE3ZDNlM2VlOWM1ZTAxZDRjYTczMWMwZWZhLi5iOTQzY2Y1NWVkOWYxNTkzZTcz
MzI3NWQ3OWNjNjAyOGIwMDI2MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwKQEAgLTI2LDggKzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCisgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFjayB7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKaW5kZXggNjQwNTgxNzFkNDVhODgxZWYxZTBk
YzZkOGVlM2QzNDMzZDU2MWRjYS4uMzNhMDdkNGVjNzFkMTg4YmI5NTg3ZDBkOWJhODgyN2EzOTYx
NDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAK
QEAgLTMwLDEyICszMCwxMSBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAKICNpbmNs
dWRlICJBdWRpb1RyYWNrLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChXZWFrUHRy
PEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgOiBUcmFja0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitBdWRpb1RyYWNrTGlz
dDo6QXVkaW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IFRyYWNrTGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3QpCiB7
CiB9CiAKQEAgLTUzLDEzICs1MiwyMSBAQCB2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUmVm
PEF1ZGlvVHJhY2s+JiYgdHJhY2spCiAgICAgfQogICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChp
bnNlcnRpb25JbmRleCwgdHJhY2sucHRyKCkpOwogCi0KLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRp
YUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwot
ICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJh
Y2stPnRyYWNrTGlzdCgpKQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAog
ICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKK3ZvaWQgQXVk
aW9UcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQp
Cit7CisgICAgYXV0byYgYXVkaW9UcmFjayA9IGRvd25jYXN0PEF1ZGlvVHJhY2s+KHRyYWNrKTsK
KyAgICBpZiAoYXVkaW9UcmFjay50cmFja0xpc3QoKSA9PSB0aGlzKQorICAgICAgICBhdWRpb1Ry
YWNrLmNsZWFyVHJhY2tMaXN0KCk7CisKKyAgICBUcmFja0xpc3RCYXNlOjpyZW1vdmUodHJhY2ss
IHNjaGVkdWxlRXZlbnQpOworfQorCiBBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKaW5kZXgg
OGFlMDM0MjAxNDJmZTFjZjYzODBlZmQzZGJlODEyMmM0YjQ0OGQ3ZS4uOTVmZDkwYjRjYWJiYmQ4
MzgwYzVhYzBiNTM5OThmMTRhY2FmNDVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBBdWRpb1RyYWNrOwogCiBj
bGFzcyBBdWRpb1RyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVk
aWFFbGVtZW50PiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYo
Km5ldyBBdWRpb1RyYWNrTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5l
ZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CkBAIC00OCwxMiArNDgsMTMgQEAg
cHVibGljOgogICAgIEF1ZGlvVHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAg
IEF1ZGlvVHJhY2sqIGxhc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEp
OyB9CiAgICAgdm9pZCBhcHBlbmQoUmVmPEF1ZGlvVHJhY2s+JiYpOworICAgIHZvaWQgcmVtb3Zl
KFRyYWNrQmFzZSYsIGJvb2wgc2NoZWR1bGVFdmVudCA9IHRydWUpIGZpbmFsOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEF1ZGlvVHJhY2tMaXN0KFdlYWtQ
dHI8SFRNTE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBBdWRp
b1RyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiB9OwpAQCAtNjEsNCArNjIsOCBAQCBz
dGF0aWNfYXNzZXJ0KHNpemVvZihBdWRpb1RyYWNrTGlzdCkgPT0gc2l6ZW9mKFRyYWNrTGlzdEJh
c2UpLCAiIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVybiB0cmFj
a0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OkF1ZGlvVHJhY2tMaXN0OyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCmluZGV4IGM0
NTU0Y2YyZDIwN2Y2M2ZhN2UzOTlkYWU0NzQ5ZTZjOTEyNzQ3ZGEuLjhiZTVkMGYxYmU4NTZmN2Ni
MTMyODNiMzEyOTM1ZDNlNTM1NTNmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaWRsCkBAIC0yNiw4ICsyNiw2IEBACiBbCiAgICAgQWN0aXZlRE9NT2Jq
ZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bEVsZW1lbnRSb290LAotICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBvc2VkPVdp
bmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgOiBFdmVudFRhcmdldCB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKaW5kZXggODM4MDIzMmI3OTI4
YTI3YjkzMjM2ODA2YzAyODUyOWYwN2JiZWE4MC4uZmE3OGYzYmJlMjkxOGRjYWE4Mzg0OTc3Yzkz
NzlhYTQ4NWQ0NGQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZERhdGFUZXh0VHJhY2suY3BwCkBAIC0zMCwyMiArMzAsMjIgQEAKICNpZiBFTkFCTEUoVklERU8p
CiAKICNpbmNsdWRlICJEYXRhQ3VlLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kRGF0YVRleHRUcmFj
ayk7CiAKLWlubGluZSBJbmJhbmREYXRhVGV4dFRyYWNrOjpJbmJhbmREYXRhVGV4dFRyYWNrKERv
Y3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFj
a1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwg
Y2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kRGF0YVRleHRUcmFjazo6SW5iYW5k
RGF0YVRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQcml2
YXRlKQogewogfQogCi1SZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gSW5iYW5kRGF0YVRleHRUcmFj
azo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmREYXRhVGV4dFRy
YWNrPiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJhY2sg
PSBhZG9wdFJlZigqbmV3IEluYmFuZERhdGFUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJh
Y2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZERh
dGFUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkpOwogICAgIHRleHRUcmFjay0+c3Vz
cGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KQEAgLTcwLDggKzcwLDkg
QEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgbWVkaWFFbGVtZW50KCkpIHsKLSAgICAg
ICAgY3VlLT5zZXRFbmRUaW1lKG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpKTsK
KyAgICBhdXRvKiB0ZXh0VHJhY2tMaXN0ID0gZG93bmNhc3Q8VGV4dFRyYWNrTGlzdD4odHJhY2tM
aXN0KCkpOworICAgIGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgdGV4dFRyYWNrTGlz
dCAmJiB0ZXh0VHJhY2tMaXN0LT5kdXJhdGlvbigpLmlzVmFsaWQoKSkgeworICAgICAgICBjdWUt
PnNldEVuZFRpbWUodGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKSk7CiAgICAgICAgIG1faW5jb21w
bGV0ZUN1ZU1hcC5hcHBlbmQoJmN1ZS5nZXQoKSk7CiAgICAgfQogCkBAIC0xMDEsOCArMTAyLDkg
QEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYKICAgICBjdWUtPndpbGxDaGFuZ2UoKTsKIAogICAg
IE1lZGlhVGltZSBlbmQgPSBpbkVuZDsKLSAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgp
ICYmIG1lZGlhRWxlbWVudCgpKQotICAgICAgICBlbmQgPSBtZWRpYUVsZW1lbnQoKS0+ZHVyYXRp
b25NZWRpYVRpbWUoKTsKKyAgICBhdXRvKiB0ZXh0VHJhY2tMaXN0ID0gZG93bmNhc3Q8VGV4dFRy
YWNrTGlzdD4odHJhY2tMaXN0KCkpOworICAgIGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkg
JiYgdGV4dFRyYWNrTGlzdCAmJiB0ZXh0VHJhY2tMaXN0LT5kdXJhdGlvbigpLmlzVmFsaWQoKSkK
KyAgICAgICAgZW5kID0gdGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKTsKICAgICBlbHNlCiAgICAg
ICAgIG1faW5jb21wbGV0ZUN1ZU1hcC5yZW1vdmVGaXJzdChjdWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCmluZGV4IGY2YjUwZjQ3YTlh
NDUyNDY2M2U1NmJlMWI2MWI2MDM3ODIzNmYzMTQuLjI1MDE4NGFhNzUwYWM2ODM0MWRjNjFhMjg5
N2RmYzEyYjA4NWExODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kRGF0YVRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgRGF0YUN1ZTsKIGNsYXNz
IEluYmFuZERhdGFUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEluYmFuZERhdGFUZXh0VHJhY2spOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8
SW5iYW5kRGF0YVRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSYpOwogICAgIHZpcnR1YWwgfkluYmFuZERhdGFUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToK
LSAgICBJbmJhbmREYXRhVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIEluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1lbnQm
LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICB2b2lkIGFkZERhdGFDdWUoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNp
Z25lZCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDU1NmU0NDllODc2MmFmMTUwNWM5MTA5MDM2N2Vl
MTU4ZGQzYTAyOWYuLjIzOTFkNWVkZTU3MjYwMWFiNzk0ZDMyNTVhNmZlOWUxNWQ0YjgzZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRy
YWNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRlICJWVFRSZWdpb25MaXN0Lmgi
CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBA
IC02MywxNCArNjQsMTQgQEAgdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpyZW1vdmUoVGV4
dFRyYWNrQ3VlJiBwdWJsaWNDdWUpCiAgICAgICAgIG1fZGF0YVRvQ3VlTWFwLnJlbW92ZShjdWVJ
ZGVudGlmaWVyKTsKIH0KIAotaW5saW5lIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OkluYmFuZEdl
bmVyaWNUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDogSW5iYW5kVGV4
dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkKK2lubGluZSBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogSW5iYW5kVGV4dFRy
YWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpCiB7CiB9CiAKLVJlZjxJbmJhbmRHZW5lcmljVGV4
dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQorUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKIHsKLSAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5k
R2VuZXJpY1RleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICBh
dXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhkb2N1
bWVudCwgdHJhY2tQcml2YXRlKSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsK
ICAgICByZXR1cm4gdGV4dFRyYWNrOwogfQpAQCAtODMsOCArODQsOCBAQCB2b2lkIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKFRleHRUcmFja0N1ZUdlbmVyaWMm
IGN1ZSwgSW5iYQogCiAgICAgY3VlLnNldFN0YXJ0VGltZShpbmJhbmRDdWUuc3RhcnRUaW1lKCkp
OwogICAgIE1lZGlhVGltZSBlbmRUaW1lID0gaW5iYW5kQ3VlLmVuZFRpbWUoKTsKLSAgICBpZiAo
ZW5kVGltZS5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAg
ZW5kVGltZSA9IG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpOworICAgIGlmIChl
bmRUaW1lLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHRleHRUcmFja0xpc3QoKSAmJiB0ZXh0VHJh
Y2tMaXN0KCktPmR1cmF0aW9uKCkuaXNWYWxpZCgpKQorICAgICAgICBlbmRUaW1lID0gdGV4dFRy
YWNrTGlzdCgpLT5kdXJhdGlvbigpOwogICAgIGN1ZS5zZXRFbmRUaW1lKGVuZFRpbWUpOwogICAg
IGN1ZS5zZXRUZXh0KGluYmFuZEN1ZS5jb250ZW50KCkpOwogICAgIGN1ZS5zZXRJZChpbmJhbmRD
dWUuaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5oCmluZGV4IGZlOTUzNDhkM2ZiYjFiODM2NDA4NTc0YjI3MDEwYTc2ZDNhMzFi
MGQuLjQ1OTdiMmExYzZmNzNiNTY5MWI0NzU4NzEzNTQyMzI3MjkyZTU4YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCkBAIC01
MywxMSArNTMsMTEgQEAgcHJpdmF0ZToKIGNsYXNzIEluYmFuZEdlbmVyaWNUZXh0VHJhY2sgZmlu
YWwgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrLCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVudCB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmRHZW5lcmljVGV4dFRyYWNrKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IGNyZWF0ZShEb2N1
bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBz
dGF0aWMgUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmRHZW5lcmljVGV4dFRyYWNr
KCk7CiAKIHByaXZhdGU6Ci0gICAgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhEb2N1bWVudCYsIFRl
eHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAg
dm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSBmaW5hbDsKICAgICB2b2lkIHVw
ZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCmluZGV4IDljZmExNGRmMmFlOTU4NjZj
NTNiOGIxMDNiNmQ4NTlkNGJmZDVkOWMuLmM2ZmVhMzVlZDM4YjA0ODYwM2QyY2U4MWRmYWJiMDI2
MTg4NDIwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJhbmREYXRhVGV4dFRyYWNrLmgiCiAj
aW5jbHVkZSAiSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRU
cmFja1ByaXZhdGUuaCIKQEAgLTM5LDI0ICszOCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJhbmRUZXh0VHJhY2spOwogCi1SZWY8SW5i
YW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCitSZWY8SW5iYW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKIHsK
ICAgICBzd2l0Y2ggKHRyYWNrUHJpdmF0ZS5jdWVGb3JtYXQoKSkgewogICAgIGNhc2UgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0OjpEYXRhOgotICAgICAgICByZXR1cm4gSW5iYW5k
RGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7Cisg
ICAgICAgIHJldHVybiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIHRyYWNr
UHJpdmF0ZSk7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6Okdl
bmVyaWM6Ci0gICAgICAgIHJldHVybiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoZG9j
dW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICBjYXNlIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6V2ViVlRUOgotICAgICAgICByZXR1cm4g
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2
YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKGRvY3Vt
ZW50LCB0cmFja1ByaXZhdGUpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBhdXRvIHRleHRUcmFjayA9IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwg
Y2xpZW50LCB0cmFja1ByaXZhdGUpOworICAgIGF1dG8gdGV4dFRyYWNrID0gSW5iYW5kRGF0YVRl
eHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpOwogICAgIHRleHRUcmFjay0+
c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KIAotSW5iYW5kVGV4
dFRyYWNrOjpJbmJhbmRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGll
bnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDog
VGV4dFRyYWNrKCZkb2N1bWVudCwgJmNsaWVudCwgZW1wdHlBdG9tKCksIHRyYWNrUHJpdmF0ZS5p
ZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCksIEluQmFu
ZCkKK0luYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogVGV4dFRyYWNrKCZk
b2N1bWVudCwgZW1wdHlBdG9tKCksIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFi
ZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCksIEluQmFuZCkKICAgICAsIG1fcHJpdmF0ZSh0
cmFja1ByaXZhdGUpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CkBAIC0xNTks
MTAgKzE1OCw5IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjp3aWxsUmVtb3Zl
KCkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKG1lZGlhRWxlbWVudCgpLmdldCgp
KTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50LT5yZW1v
dmVUZXh0VHJhY2soKnRoaXMpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xp
ZW50KSB7CisgICAgICAgIGNsaWVudC53aWxsUmVtb3ZlVGV4dFRyYWNrKCp0aGlzKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCkBA
IC0xOTcsMTQgKzE5NSw2IEBAIE1lZGlhVGltZSBJbmJhbmRUZXh0VHJhY2s6OnN0YXJ0VGltZVZh
cmlhbmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdGFydFRpbWVWYXJpYW5jZSgp
OwogfQogCi12b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNldE1lZGlhRWxlbWVu
dChlbGVtZW50KTsKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBtX3ByaXZhdGUtPnNl
dExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKLSNlbmRpZgotfQotCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TG9nZ2VyKGNvbnN0
IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggYmIxMmMxNTlkZTc0Zjky
OTQ1MzY5NTQxZDc4NzJlNmM1YzFhY2I0Ny4uZjI4YTFkNDg1YTU5OWI2ODljMGY2MTA0ZDZmM2Y4
NDEwYzVlMDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRl
eHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmRUZXh0VHJhY2spOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQm
LCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGlj
IFJlZjxJbmJhbmRUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2soKTsKIAogICAgIGJvb2wgaXND
bG9zZWRDYXB0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDksMTMgKzQ5LDEyIEBAIHB1Ymxp
YzoKICAgICBBdG9tU3RyaW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Jik7Ci0gICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Pikg
b3ZlcnJpZGU7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIo
Y29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoK
LSAgICBJbmJhbmRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlJik7CisgICAgSW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgdm9pZCBzZXRNb2RlSW50ZXJuYWwoTW9kZSk7CiAg
ICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCAyYWE5ZjNiMDNhYjNh
MTQ0ZTkyNzEzYTY1ZmFmM2ZmY2RmNWFhN2FjLi4yMjIzYTU3MmFhMGY2Y2E5NGMyZDI3NGYxZWMz
NzU0YmM1MjVmNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kV2ViVlRUVGV4dFRyYWNr
KTsKIAotaW5saW5lIEluYmFuZFdlYlZUVFRleHRUcmFjazo6SW5iYW5kV2ViVlRUVGV4dFRyYWNr
KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRU
cmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVu
dCwgY2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIHRy
YWNrUHJpdmF0ZSkKIHsKIH0KIAotUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorUmVmPEluYmFuZFRleHRU
cmFjaz4gSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJh
Y2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50
LCB0cmFja1ByaXZhdGUpKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5i
YW5kV2ViVlRUVGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpKTsKICAgICB0ZXh0VHJh
Y2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAppbmRleCAz
MTUyMzU3MjliNWZiZDk5ZjYzNGZhN2Q2Yzc3NmMyN2JjNmMxYzUyLi45MWZhMDM5OGE0ZjljMGU3
YTU0OTc2NjI0OGZhMzA1NmY4MTc1NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRXZWJWVFRUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMg
SW5iYW5kVGV4dFRyYWNrLCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChJbmJhbmRXZWJWVFRUZXh0VHJhY2spOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGll
bnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0
VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2
aXJ0dWFsIH5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToKLSAgICBJbmJhbmRX
ZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlJik7CisgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBwYXJzZXIoKTsKICAgICB2
b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcAppbmRleCAzMWNiZjBhNjU4ZDg1M2RjOTkxMDU4ZTFmMmE5ZmNiOTlmZTc3OWQ0Li4z
ODM1NzY0MTE2ZDA5MjU5ODg3OGI2NWE4ZmQ4YTgyNTkwM2VkNWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTG9hZGFi
bGVUZXh0VHJhY2spOwogCiBMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soSFRN
TFRyYWNrRWxlbWVudCYgdHJhY2ssIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IFRleHRUcmFjaygmdHJhY2suZG9j
dW1lbnQoKSwgJnRyYWNrLCBraW5kLCBlbXB0eVN0cmluZygpLCBsYWJlbCwgbGFuZ3VhZ2UsIFRy
YWNrRWxlbWVudCkKKyAgICA6IFRleHRUcmFjaygmdHJhY2suZG9jdW1lbnQoKSwga2luZCwgZW1w
dHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlLCBUcmFja0VsZW1lbnQpCiAgICAgLCBtX3RyYWNr
RWxlbWVudCgmdHJhY2spCiB7CiB9CkBAIC05NiwxMSArOTYsNiBAQCB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwpCiAgICAgfSk7CiB9CiAKLUVsZW1l
bnQqIExvYWRhYmxlVGV4dFRyYWNrOjplbGVtZW50KCkKLXsKLSAgICByZXR1cm4gbV90cmFja0Vs
ZW1lbnQ7Ci19Ci0KIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4
dFRyYWNrTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1fbG9h
ZGVyLmdldCgpID09ICZsb2FkZXIpOwpAQCAtMTE0LDggKzEwOSw3IEBAIHZvaWQgTG9hZGFibGVU
ZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4dFRyYWNrTG9hZGVyJiBsb2FkZXIpCiAgICAg
ICAgIG1fY3Vlcy0+YWRkKFdURk1vdmUobmV3Q3VlKSk7CiAgICAgfQogCi0gICAgaWYgKGNsaWVu
dCgpKQotICAgICAgICBjbGllbnQoKS0+dGV4dFRyYWNrQWRkQ3VlcygqdGhpcywgKm1fY3Vlcyk7
CisgICAgVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKCptX2N1ZXMpOwogfQogCiB2b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKFRleHRUcmFja0xvYWRlciYgbG9h
ZGVyLCBib29sIGxvYWRpbmdGYWlsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmgKaW5kZXggMDhkZmFhZDI4ZGNkZDFkOGFiNWNiMGZiNmFlMmY4NjFi
ZTc5MDhiMy4uYjdmYjQzZjk3ZTA4ZTc3YjY5NmRjM2FkYWM4NGRkNmY0OWYxNzRjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaApAQCAtNTYsNyAr
NTYsNiBAQCBwcml2YXRlOgogCiAgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgZmluYWw7Ci0gICAgRWxlbWVudCogZWxlbWVudCgpIGZp
bmFsOwogCiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5jcHAKaW5kZXggZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4MWE1NzVk
ZDBmMThjNS4uNWNlMjZlNmFkYTQwNWYwOWYzMWZmYzczODhjYTg4OTgzMGNjOGFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgIkRhdGFDdWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCkBAIC04OCwyMCArODcsMTkgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGZvcmNl
ZEtleXdvcmQoKQogCiBUZXh0VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCkK
IHsKLSAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRy
LCBudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJh
Y2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gb2ZmOwogfQogCiBUZXh0
VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0
aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCBudWxs
cHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBU
ZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRv
bSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gYXV0
b21hdGljOwogfQogCi1UZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQotICAgIDogVHJhY2tCYXNl
KFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQorVGV4dFRyYWNrOjpU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgQXRvbVN0cmlu
ZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBj
b25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQorICAgIDogVHJh
Y2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdl
KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX2NsaWVudChjbGllbnQp
CiAgICAgLCBtX3RyYWNrVHlwZSh0eXBlKQogewogICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5
d29yZCgpKQpAQCAtMTE2LDkgKzExNCw5IEBAIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjCiAgICAg
ICAgIG1fa2luZCA9IEtpbmQ6Ok1ldGFkYXRhOwogfQogCi1SZWY8VGV4dFRyYWNrPiBUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBj
b25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0
cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQorUmVmPFRleHRUcmFjaz4g
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBr
aW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewotICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYo
Km5ldyBUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFn
ZSwgQWRkVHJhY2spKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgVGV4dFRy
YWNrKGRvY3VtZW50LCBraW5kLCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOwogICAg
IHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0K
QEAgLTEyNiw4ICsxMjQsOSBAQCBSZWY8VGV4dFRyYWNrPiBUZXh0VHJhY2s6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjbwogVGV4dFRyYWNrOjp+
VGV4dFRyYWNrKCkKIHsKICAgICBpZiAobV9jdWVzKSB7Ci0gICAgICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVz
KTsKKyAgICAgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICAgICAgfSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgo
KTsgKytpKQogICAgICAgICAgICAgbV9jdWVzLT5pdGVtKGkpLT5zZXRUcmFjayhudWxscHRyKTsK
ICAgICB9CkBAIC0xMzcsNiArMTM2LDIzIEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAg
fQogfQogCitUZXh0VHJhY2tMaXN0KiBUZXh0VHJhY2s6OnRleHRUcmFja0xpc3QoKSBjb25zdAor
eworICAgIHJldHVybiBkb3duY2FzdDxUZXh0VHJhY2tMaXN0Pih0cmFja0xpc3QoKSk7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrOjphZGRDbGllbnQoVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFk
ZChjbGllbnQpOworfQorCit2b2lkIFRleHRUcmFjazo6Y2xlYXJDbGllbnQoVGV4dFRyYWNrQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsK
KyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7Cit9CisKIERvY3VtZW50JiBUZXh0VHJhY2s6
OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKQEAgLTIwMCwxOSArMjE2LDE1IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQgbmV3
S2luZCkKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VC
dWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGwsIHRoZW4gcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBldmVudCBuYW1lZCBjaGFuZ2UgYXQgc291cmNl
QnVmZmVyLnRleHRUcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVyKQotICAgICAgICBtX3Nv
dXJjZUJ1ZmZlci0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8v
IDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0
aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQogICAgIC8vIHRoZSB0ZXh0VHJh
Y2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVt
ZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuc2NoZWR1
bGVDaGFuZ2VFdmVudCgpOwogI2VuZGlmCiAKICAgICBpZiAob2xkS2luZCAhPSBtX2tpbmQpIHsK
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX2tpbmQpOwotICAgICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQoKnRo
aXMpOworICAgICAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgewor
ICAgICAgICAgICAgY2xpZW50LnRleHRUcmFja0tpbmRDaGFuZ2VkKCp0aGlzKTsKKyAgICAgICAg
fSk7CiAgICAgfQogfQogCkBAIC0yNTIsOCArMjY0LDExIEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRN
b2RlKE1vZGUgbW9kZSkKIAogICAgIC8vIElmIG1vZGUgY2hhbmdlcyB0byBkaXNhYmxlZCwgcmVt
b3ZlIHRoaXMgdHJhY2sncyBjdWVzIGZyb20gdGhlIGNsaWVudAogICAgIC8vIGJlY2F1c2UgdGhl
eSB3aWxsIG5vIGxvbmdlciBiZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGN1ZXMoKSBmdW5jdGlvbi4K
LSAgICBpZiAobW9kZSA9PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2NsaWVudCAmJiBtX2N1ZXMpCi0g
ICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICBpZiAobW9kZSA9PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2N1ZXMpIHsKKyAgICAgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgICAgIGNsaWVudC50
ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAgICAgICAgfSk7CisgICAgfQog
CiAgICAgaWYgKG1vZGUgIT0gTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCkBAIC0yNjIsOCArMjc3
LDkgQEAgdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2RlKQogCiAgICAgbV9tb2RlID0g
bW9kZTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja01v
ZGVDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrTW9kZUNoYW5nZWQoKnRoaXMpOworICAg
IH0pOwogfQogCiBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQpAQCAtMjg1LDkg
KzMwMSwxMCBAQCB2b2lkIFRleHRUcmFjazo6cmVtb3ZlQWxsQ3VlcygpCiAKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+dGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7Ci0gICAgCisgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRU
cmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgIH0pOworCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIG1fY3Vlcy0+aXRl
bShpKS0+c2V0VHJhY2sobnVsbHB0cik7CiAgICAgCkBAIC0zNDEsOCArMzU4LDkgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjphZGRDdWUoUmVmPFRleHRUcmFja0N1ZT4mJiBjdWUpCiAg
ICAgY3VlLT5zZXRUcmFjayh0aGlzKTsKICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkuYWRk
KGN1ZS5jb3B5UmVmKCkpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+
dGV4dFRyYWNrQWRkQ3VlKCp0aGlzLCBjdWUpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlz
LCBjdWVdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFja0FkZEN1ZSgq
dGhpcywgY3VlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zNjYsOCArMzg0
LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3Vl
JiBjdWUpCiAgICAgbV9jdWVzLT5yZW1vdmUoY3VlKTsKICAgICBjdWUuc2V0SXNBY3RpdmUoZmFs
c2UpOwogICAgIGN1ZS5zZXRUcmFjayhudWxscHRyKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGll
bnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFj
a1JlbW92ZUN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBA
IC00NjAsMzIgKzQ3OSwzMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBUZXh0VHJhY2s6OnJlbW92ZVJl
Z2lvbihWVFRSZWdpb24mIHJlZ2lvbikKIAogdm9pZCBUZXh0VHJhY2s6OmN1ZVdpbGxDaGFuZ2Uo
VGV4dFRyYWNrQ3VlJiBjdWUpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gVGhlIGN1ZSBtYXkgbmVlZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1l
ZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVlLCBtYXkgbmVlZCB0bwotICAgIC8vIGJlIHJlLXJl
bmRlcmVkLCBldGMsIHNvIHJlbW92ZSBpdCBiZWZvcmUgdGhlIG1vZGlmaWNhdGlvbi4uLgotICAg
IG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGllbnRz
LmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgLy8gVGhlIGN1ZSBtYXkgbmVl
ZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVl
LCBtYXkgbmVlZCB0bworICAgICAgICAvLyBiZSByZS1yZW5kZXJlZCwgZXRjLCBzbyByZW1vdmUg
aXQgYmVmb3JlIHRoZSBtb2RpZmljYXRpb24uLi4KKyAgICAgICAgY2xpZW50LnRleHRUcmFja1Jl
bW92ZUN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBUZXh0VHJhY2s6OmN1ZURp
ZENoYW5nZShUZXh0VHJhY2tDdWUmIGN1ZSkKIHsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAg
ICByZXR1cm47Ci0KICAgICAvLyBNYWtlIHN1cmUgdGhlIFRleHRUcmFja0N1ZUxpc3Qgb3JkZXIg
aXMgdXAtdG8tZGF0ZS4KICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkudXBkYXRlQ3VlSW5k
ZXgoY3VlKTsKIAogICAgIC8vIC4uLiBhbmQgYWRkIGl0IGJhY2sgYWdhaW4uCi0gICAgbV9jbGll
bnQtPnRleHRUcmFja0FkZEN1ZSgqdGhpcywgY3VlKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
Jl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrQWRkQ3VlKCp0aGlz
LCBjdWUpOworICAgIH0pOwogfQogCiBpbnQgVGV4dFRyYWNrOjp0cmFja0luZGV4KCkKIHsKICAg
ICBpZiAoIW1fdHJhY2tJbmRleCkgewotICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQorICAg
ICAgICBpZiAoIW1fdGV4dFRyYWNrTGlzdCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICBtX3RyYWNrSW5kZXggPSBtX21lZGlhRWxlbWVudC0+ZW5zdXJlVGV4dFRyYWNrcygpLmdldFRy
YWNrSW5kZXgoKnRoaXMpOworICAgICAgICBtX3RyYWNrSW5kZXggPSBtX3RleHRUcmFja0xpc3Qt
PmdldFRyYWNrSW5kZXgoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4gbV90cmFja0luZGV4LnZh
bHVlKCk7CiB9CkBAIC01MTIsOSArNTI5LDkgQEAgVGV4dFRyYWNrQ3VlTGlzdCYgVGV4dFRyYWNr
OjplbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkKIGludCBUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxh
dGl2ZVRvUmVuZGVyZWRUcmFja3MoKQogewogICAgIGlmICghbV9yZW5kZXJlZFRyYWNrSW5kZXgp
IHsKLSAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgaWYgKCFtX3RleHRUcmFj
a0xpc3QpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgbV9yZW5kZXJlZFRyYWNrSW5k
ZXggPSBtX21lZGlhRWxlbWVudC0+ZW5zdXJlVGV4dFRyYWNrcygpLmdldFRyYWNrSW5kZXhSZWxh
dGl2ZVRvUmVuZGVyZWRUcmFja3MoKnRoaXMpOworICAgICAgICBtX3JlbmRlcmVkVHJhY2tJbmRl
eCA9IG1fdGV4dFRyYWNrTGlzdC0+Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNr
cygqdGhpcyk7CiAgICAgfQogICAgIHJldHVybiBtX3JlbmRlcmVkVHJhY2tJbmRleC52YWx1ZSgp
OwogfQpAQCAtNTk3LDcgKzYxNCw2IEBAIGNvbnN0IGNoYXIqIFRleHRUcmFjazo6YWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJUZXh0VHJhY2siOwogfQogCi0jaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKIHZvaWQgVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9t
U3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICAvLyAxMS4xIGxhbmd1YWdlLCBvbiBzZXR0aW5nOgpA
QCAtNjExLDE1ICs2MjcsMzUgQEAgdm9pZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKQogCiAgICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRy
aWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmly
ZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudGV4
dFRyYWNrcy4KLSAgICBpZiAobV9zb3VyY2VCdWZmZXIpCi0gICAgICAgIG1fc291cmNlQnVmZmVy
LT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwotCiAgICAgLy8gNC4gUXVldWUg
YSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBUZXh0VHJh
Y2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAgICAgLy8gdGhlIHRleHRUcmFja3MgYXR0cmli
dXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgotICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKLSAg
ICAgICAgbWVkaWFFbGVtZW50KCktPmVuc3VyZVRleHRUcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAg
ICAgY2xpZW50LnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrOjpzZXRJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKK3sKKyAgICBUcmFj
a0Jhc2U6OnNldElkKGlkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrSWRDaGFuZ2VkKCp0aGlzKTsKKyAgICB9
KTsKK30KKwordm9pZCBUZXh0VHJhY2s6OnNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVs
KQoreworICAgIFRyYWNrQmFzZTo6c2V0TGFiZWwobGFiZWwpOworICAgIG1fY2xpZW50cy5mb3JF
YWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tMYWJl
bENoYW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFRleHRUcmFjazo6bmV3Q3Vlc0F2
YWlsYWJsZShjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBsaXN0KQoreworICAgIG1fY2xpZW50cy5m
b3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tBZGRD
dWVzKCp0aGlzLCBsaXN0KTsKKyAgICB9KTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDc0NjMyZWE0
YzBkOWEwMzdhN2I2NjAxMTc3ZDM0YzlhOWMxNTNlNjIuLjhiMzE2ZTdhZGE0OWMzMDI4OTUyNDVi
MGE3MThlY2Q0ZDg5MjllMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApA
QCAtMzIsMzAgKzMyLDM2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5j
bHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0xpc3Q7
CiBjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OwogY2xhc3MgVlRUUmVnaW9uOwogY2xhc3MgVlRUUmVn
aW9uTGlzdDsKIAotY2xhc3MgVGV4dFRyYWNrQ2xpZW50IHsKK2NsYXNzIFRleHRUcmFja0NsaWVu
dCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0VHJhY2tDbGllbnQ+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5UZXh0VHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrSWRDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja0xhYmVsQ2hhbmdlZChUZXh0VHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBU
ZXh0VHJhY2tDdWVMaXN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShU
ZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNr
UmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIHsgfQogfTsKIAogY2xhc3MgVGV4dFRy
YWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4
dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHRUcmFjaz4gY3JlYXRlKERvY3Vt
ZW50KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRv
bVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBs
YW5ndWFnZSk7CisgICAgc3RhdGljIFJlZjxUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCosIGNv
bnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3Ry
aW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOwogICAgIHZpcnR1YWwgflRl
eHRUcmFjaygpOwogCiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1lbnVPZmZJdGVtKCk7
CkBAIC02NCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
c3VidGl0bGVzS2V5d29yZCgpOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChj
b25zdCBBdG9tU3RyaW5nJik7CiAKKyAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tMaXN0KCkg
Y29uc3Q7CisKICAgICBlbnVtIGNsYXNzIEtpbmQgeyBTdWJ0aXRsZXMsIENhcHRpb25zLCBEZXNj
cmlwdGlvbnMsIENoYXB0ZXJzLCBNZXRhZGF0YSwgRm9yY2VkIH07CiAgICAgS2luZCBraW5kKCkg
Y29uc3Q7CiAKQEAgLTg4LDcgKzk2LDggQEAgcHVibGljOgogCiAgICAgVGV4dFRyYWNrQ3VlTGlz
dCogY3Vlc0ludGVybmFsKCkgY29uc3QgeyByZXR1cm4gbV9jdWVzLmdldCgpOyB9CiAKLSAgICB2
b2lkIGNsZWFyQ2xpZW50KCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KKyAgICB2
b2lkIGFkZENsaWVudChUZXh0VHJhY2tDbGllbnQmKTsKKyAgICB2b2lkIGNsZWFyQ2xpZW50KFRl
eHRUcmFja0NsaWVudCYpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkQ3VlKFJlZjxUZXh0
VHJhY2tDdWU+JiYpOwogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlQ3VlKFRl
eHRUcmFja0N1ZSYpOwpAQCAtMTIyLDkgKzEzMSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
bW92ZUFsbEN1ZXMoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdm9pZCBzZXRM
YW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7Ci0jZW5kaWYKKyAgICB2b2lkIHNl
dExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKworICAgIHZvaWQgc2V0SWQoY29u
c3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbVN0
cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzSW5iYW5kKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIApAQCAtMTM5LDIwICsxNDksMjIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDdWVzTm90SW5UaW1lUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcyYpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0
VHJhY2tDbGllbnQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBp
ZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlLCBU
ZXh0VHJhY2tUeXBlKTsKKyAgICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3Ry
aW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwog
CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7Ci0gICAgVGV4dFRyYWNrQ2xpZW50KiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgYm9vbCBoYXNDdWUoVGV4dFRyYWNr
Q3VlJiwgVGV4dFRyYWNrQ3VlOjpDdWVNYXRjaFJ1bGVzID0gVGV4dFRyYWNrQ3VlOjpNYXRjaEFs
bEZpZWxkcyk7CiAgICAgdm9pZCBzZXRLaW5kKEtpbmQpOwogCisgICAgdm9pZCBuZXdDdWVzQXZh
aWxhYmxlKGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKTsKKwogICAgIFJlZlB0cjxUZXh0VHJhY2tD
dWVMaXN0PiBtX2N1ZXM7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbV9zdHls
ZVNoZWV0czsKKyAgICBXZWFrSGFzaFNldDxUZXh0VHJhY2tDbGllbnQ+IG1fY2xpZW50czsKIAog
cHJpdmF0ZToKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFRleHRUcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCBvdmVy
cmlkZTsKIApAQCAtMTY2LDYgKzE3OCw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogbG9n
Q2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlRleHRUcmFjayI7IH0KICNlbmRp
ZgogCisgICAgV2Vha1B0cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja0xpc3Q7CisKICAgICBW
VFRSZWdpb25MaXN0JiBlbnN1cmVWVFRSZWdpb25MaXN0KCk7CiAgICAgUmVmUHRyPFZUVFJlZ2lv
bkxpc3Q+IG1fcmVnaW9uczsKIApAQCAtMTczLDcgKzE4Nyw2IEBAIHByaXZhdGU6CiAKICAgICBN
b2RlIG1fbW9kZSB7IE1vZGU6OkRpc2FibGVkIH07CiAgICAgS2luZCBtX2tpbmQgeyBLaW5kOjpT
dWJ0aXRsZXMgfTsKLSAgICBUZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OwogICAgIFRleHRUcmFj
a1R5cGUgbV90cmFja1R5cGU7CiAgICAgUmVhZGluZXNzU3RhdGUgbV9yZWFkaW5lc3NTdGF0ZSB7
IE5vdExvYWRlZCB9OwogICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX3RyYWNrSW5kZXg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKaW5kZXggYWExYjA0YTI3MmM5OTJmMTJl
Y2I3MTA4M2U2NzA5NTg4ZWMyYjg4OC4uMmU1ZjU3MmY0MTAyNWVmNjgxZWQ3MTNmMDFmZjZiYjU4
ZjY2NDA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbApAQCAtMzAs
NyArMzAsNyBAQCBlbnVtIFRleHRUcmFja0tpbmQgeyAic3VidGl0bGVzIiwgImNhcHRpb25zIiwg
ImRlc2NyaXB0aW9ucyIsICJjaGFwdGVycyIsICJtZXRhZAogICAgIEFjdGl2ZURPTU9iamVjdCwK
ICAgICBDb25kaXRpb25hbD1WSURFTywKICAgICBFeHBvcnRUb1dyYXBwZWRGdW5jdGlvbiwKLSAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKKyAgICBHZW5lcmF0ZUlzUmVh
Y2hhYmxlLAogICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBTa2lwVlRhYmxlVmFsaWRh
dGlvbiwKICAgICBFeHBvc2VkPVdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5jcHAKaW5kZXggZmY5YTE0OTljZDUxNjg4Y2E4ZGJjMzBmMDFkYjRiNmM2MmI5
NmRjYy4uMjI5MjY1NzM3YWNjYzBhMzBjMmQxNzk4ZWEwODFjZWJhNGRjN2RkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRyYWNrLmgiCkBAIC0zOSwy
NyArMzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoVGV4dFRyYWNrTGlzdCk7CiAKLVRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QoV2Vh
a1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQotICAgIDogVHJhY2tMaXN0QmFzZShlbGVtZW50LCBjb250ZXh0KQorVGV4dFRyYWNr
TGlzdDo6VGV4dFRyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAg
IDogVHJhY2tMaXN0QmFzZShjb250ZXh0LCBUcmFja0xpc3RCYXNlOjpUZXh0VHJhY2tMaXN0KQog
ewogfQogCiBUZXh0VHJhY2tMaXN0Ojp+VGV4dFRyYWNrTGlzdCgpCiB7Ci0gICAgY2xlYXJFbGVt
ZW50KCk7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrTGlzdDo6Y2xlYXJFbGVtZW50KCkKLXsKLSAgICBU
cmFja0xpc3RCYXNlOjpjbGVhckVsZW1lbnQoKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9l
bGVtZW50VHJhY2tzKSB7Ci0gICAgICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7
Ci0gICAgICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHRy
YWNrIDogbV9hZGRUcmFja1RyYWNrcykgewotICAgICAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50
KG51bGxwdHIpOwotICAgICAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKLSAgICB9CiB9CiAKIHVu
c2lnbmVkIFRleHRUcmFja0xpc3Q6Omxlbmd0aCgpIGNvbnN0CkBAIC0yMDMsOCArMTg4LDggQEAg
dm9pZCBUZXh0VHJhY2tMaXN0OjphcHBlbmQoUmVmPFRleHRUcmFjaz4mJiB0cmFjaykKIAogICAg
IGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRyYWNrKTsKIAotICAgIEFTU0VSVCgh
dHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtZWRpYUVs
ZW1lbnQoKSk7Ci0gICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQoKSk7Cisg
ICAgaWYgKCF0cmFjay0+dHJhY2tMaXN0KCkpCisgICAgICAgIHRyYWNrLT5zZXRUcmFja0xpc3Qo
KnRoaXMpOwogCiAgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KFdURk1vdmUodHJhY2spKTsKIH0K
QEAgLTIzMyw4ICsyMTgsOCBAQCB2b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2Um
IHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQpCiAKICAgICBpbnZhbGlkYXRlVHJhY2tJbmRleGVz
QWZ0ZXJUcmFjayh0ZXh0VHJhY2spOwogCi0gICAgQVNTRVJUKCF0cmFjay5tZWRpYUVsZW1lbnQo
KSB8fCAhZWxlbWVudCgpIHx8IHRyYWNrLm1lZGlhRWxlbWVudCgpID09IGVsZW1lbnQoKSk7Ci0g
ICAgdHJhY2suc2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOworICAgIGlmICh0cmFjay50cmFja0xp
c3QoKSA9PSB0aGlzKQorICAgICAgICB0cmFjay5jbGVhclRyYWNrTGlzdCgpOwogCiAgICAgUmVm
PFRyYWNrQmFzZT4gdHJhY2tSZWYgPSAqKCp0cmFja3MpW2luZGV4XTsKICAgICB0cmFja3MtPnJl
bW92ZShpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCmlu
ZGV4IGNkMmZmN2JkMGU2ZjVkMzJlZDlhMGNjYTI1NWFkNDhhZDZiYzU4OTkuLjcwMjFlZDM2OGE1
NThhODBkZjQwMDBlM2NhZWJiYmZiZDM1YTNiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFZJREVPKQog
CiAjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiwxNiArMzcsMTQgQEAgY2xhc3MgVGV4dFRy
YWNrOwogY2xhc3MgVGV4dFRyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRUcmFja0xpc3QpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8VGV4dFRyYWNrTGlzdD4gY3JlYXRlKFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVu
dD4gZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBzdGF0aWMg
UmVmPFRleHRUcmFja0xpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIHsKLSAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tMaXN0
KGVsZW1lbnQsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBU
ZXh0VHJhY2tMaXN0KGNvbnRleHQpKTsKICAgICAgICAgbGlzdC0+c3VzcGVuZElmTmVlZGVkKCk7
CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tMaXN0
KCk7CiAKLSAgICB2b2lkIGNsZWFyRWxlbWVudCgpIG92ZXJyaWRlOwotCiAgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IGdldFRyYWNrSW5kZXgoVGV4dFRyYWNr
Jik7CiAgICAgaW50IGdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRy
YWNrJik7CkBAIC01OCwxOSArNTcsMjcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKFJlZjxU
ZXh0VHJhY2s+JiYpOwogICAgIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSYsIGJvb2wgc2NoZWR1bGVF
dmVudCA9IHRydWUpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXREdXJhdGlvbihNZWRpYVRpbWUg
ZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CisgICAgY29uc3QgTWVkaWFUaW1l
JiBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKwogICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBUZXh0VHJhY2tMaXN0KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBUZXh0VHJhY2tM
aXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGludmFsaWRhdGVUcmFja0luZGV4
ZXNBZnRlclRyYWNrKFRleHRUcmFjayYpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+
PiBtX2FkZFRyYWNrVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNlPj4gbV9lbGVt
ZW50VHJhY2tzOworICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRleHRU
cmFja0xpc3QpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRyYWNrTGlz
dEJhc2UmIHRyYWNrTGlzdCkgeyByZXR1cm4gdHJhY2tMaXN0LnR5cGUoKSA9PSBXZWJDb3JlOjpU
cmFja0xpc3RCYXNlOjpUZXh0VHJhY2tMaXN0OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmlkbAppbmRleCBkZjljYmUxMzBiY2E3M2JhNjQwZjk3OGM5MWVmMTQ0
NGMyMTExZTdhLi5hN2VmMzQ0YWIxYzFmYjFkZTg4OTc3OTBmNGIzMjg0YTk3ZjZlZmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKQEAgLTI2LDggKzI2
LDYgQEAKIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0g
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCi0gICAgR2VuZXJhdGVBZGRP
cGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBUZXh0VHJhY2tMaXN0
IDogRXZlbnRUYXJnZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAppbmRleCBlOGY5NWY5
MzMxMDNhZDg0MmFkODI3MTMzNjJmMzUxZjZkZDg3NzNkLi41MTEwYTU2Njc5MTExOWQ1NDE4YjM0
NmJjYWEwNjcyNWExNzYzNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwCkBAIC0zMiw4ICszMiw2IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGludCBz
X3VuaXF1ZUlkID0gMDsKQEAgLTQ4LDggKzQ2LDkgQEAgc3RhdGljIFJlZlB0cjxMb2dnZXI+JiBu
dWxsTG9nZ2VyKCkKIH0KICNlbmRpZgogCi1UcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRv
bVN0cmluZyYgbGFuZ3VhZ2UpCi0gICAgOiBtX3VuaXF1ZUlkKCsrc191bmlxdWVJZCkKK1RyYWNr
QmFzZTo6VHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFR5cGUgdHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNv
bnRleHQpCisgICAgLCBtX3VuaXF1ZUlkKCsrc191bmlxdWVJZCkKICAgICAsIG1faWQoaWQpCiAg
ICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkKQEAgLTcwLDIx
ICs2OSwyNiBAQCBUcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgYwogI2VuZGlmCiB9CiAKLUVsZW1lbnQq
IFRyYWNrQmFzZTo6ZWxlbWVudCgpCit2b2lkIFRyYWNrQmFzZTo6c2V0VHJhY2tMaXN0KFRyYWNr
TGlzdEJhc2UmIHRyYWNrTGlzdCkKIHsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7
CisgICAgbV90cmFja0xpc3QgPSBtYWtlV2Vha1B0cih0cmFja0xpc3QpOwogfQogCi12b2lkKiBU
cmFja0Jhc2U6Om9wYXF1ZVJvb3QoKQordm9pZCBUcmFja0Jhc2U6OmNsZWFyVHJhY2tMaXN0KCkK
IHsKLSAgICBpZiAoYXV0byogYXNzb2NpYXRlZEVsZW1lbnQgPSBlbGVtZW50KCkpCi0gICAgICAg
IHJldHVybiBhc3NvY2lhdGVkRWxlbWVudC0+b3BhcXVlUm9vdCgpOwotICAgIHJldHVybiB0aGlz
OworICAgIG1fdHJhY2tMaXN0ID0gbnVsbHB0cjsKK30KKworVHJhY2tMaXN0QmFzZSogVHJhY2tC
YXNlOjp0cmFja0xpc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYWNrTGlzdC5nZXQoKTsK
IH0KIAotdm9pZCBUcmFja0Jhc2U6OnNldE1lZGlhRWxlbWVudChXZWFrUHRyPEhUTUxNZWRpYUVs
ZW1lbnQ+IGVsZW1lbnQpCit2b2lkKiBUcmFja0Jhc2U6Om9wYXF1ZVJvb3QoKQogewotICAgIG1f
bWVkaWFFbGVtZW50ID0gZWxlbWVudDsKKyAgICBpZiAoYXV0byB0cmFja0xpc3QgPSB0aGlzLT50
cmFja0xpc3QoKSkKKyAgICAgICAgcmV0dXJuIHRyYWNrTGlzdC0+b3BhcXVlUm9vdCgpOworICAg
IHJldHVybiB0aGlzOwogfQogCiAvLyBTZWU6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9i
Y3A0NyNzZWN0aW9uLTIuMQpAQCAtMTQ4LDggKzE1Miw4IEBAIHZvaWQgVHJhY2tCYXNlOjpzZXRM
YW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIG1fdmFsaWRCQ1A0N0xh
bmd1YWdlID0gZW1wdHlBdG9tKCk7CiAKLSAgICBhdXRvIGVsZW1lbnQgPSB0aGlzLT5lbGVtZW50
KCk7Ci0gICAgaWYgKCFlbGVtZW50KQorICAgIGF1dG8gY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0
cmluZyBtZXNzYWdlOwpAQCAtMTU4LDcgKzE2Miw3IEBAIHZvaWQgVHJhY2tCYXNlOjpzZXRMYW5n
dWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKICAgICBlbHNlCiAgICAgICAgIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJUaGUgbGFuZ3VhZ2UgJyIsIGxhbmd1YWdlLCAiJyBpcyBub3QgYSB2
YWxpZCBCQ1AgNDcgbGFuZ3VhZ2UgdGFnLiIpOwogCi0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgbWVzc2FnZSk7CisgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOwogfQog
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xNzQsOCArMTc4LDggQEAgV1RGTG9nQ2hh
bm5lbCYgVHJhY2tCYXNlOjpsb2dDaGFubmVsKCkgY29uc3QKIH0KICNlbmRpZgogCi1NZWRpYVRy
YWNrQmFzZTo6TWVkaWFUcmFja0Jhc2UoVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQotICAg
IDogVHJhY2tCYXNlKHR5cGUsIGlkLCBsYWJlbCwgbGFuZ3VhZ2UpCitNZWRpYVRyYWNrQmFzZTo6
TWVkaWFUcmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSB0eXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKQorICAgIDogVHJhY2tCYXNlKGNvbnRleHQsIHR5cGUsIGlkLCBs
YWJlbCwgbGFuZ3VhZ2UpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVHJhY2tCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5o
CmluZGV4IGFmNDU0NDFkOTM3OTQwOTU0YzU2YjY5YzVhMWFjZmI0MWI1YTJlMjIuLmUzZGI0NDNk
YzlhM2I4ODY3YmIwYTBjZDc1MTE0ZTI2ZGZlYzNkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0Jhc2UuaApAQCAtMjcsMTggKzI3LDE5IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAK
KyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgPHd0Zi9M
b2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBFbGVtZW50
OwotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFNvdXJjZUJ1ZmZlcjsKK2NsYXNzIFRy
YWNrTGlzdEJhc2U7CiAKIGNsYXNzIFRyYWNrQmFzZQogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8
VHJhY2tCYXNlPgorICAgICwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgogI2VuZGlm
CkBAIC00OSwyMiArNTAsMTAgQEAgcHVibGljOgogICAgIGVudW0gVHlwZSB7IEJhc2VUcmFjaywg
VGV4dFRyYWNrLCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrIH07CiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1lbnQoKTsK
LSAgICB2b2lkKiBvcGFxdWVSb290KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldE1lZGlhRWxlbWVu
dChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+KTsKLSAgICBXZWFrUHRyPEhUTUxNZWRpYUVsZW1l
bnQ+IG1lZGlhRWxlbWVudCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9Ci0KICAgICB2aXJ0
dWFsIEF0b21TdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldElkKGNvbnN0IEF0b21TdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQotCiAgICAgQXRv
bVN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICB2b2lkIHNldExh
YmVsKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQotCiAgICAg
QXRvbVN0cmluZyB2YWxpZEJDUDQ3TGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkQkNQ
NDdMYW5ndWFnZTsgfQogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBt
X2xhbmd1YWdlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJp
bmcmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpID0gMDsKIAogICAgIHZpcnR1
YWwgaW50IHVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVJZDsgfQogCkBAIC03Myw2
ICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVy
KiBidWZmZXIpIHsgbV9zb3VyY2VCdWZmZXIgPSBidWZmZXI7IH0KICNlbmRpZgogCisgICAgdm9p
ZCBzZXRUcmFja0xpc3QoVHJhY2tMaXN0QmFzZSYpOworICAgIHZvaWQgY2xlYXJUcmFja0xpc3Qo
KTsKKyAgICBUcmFja0xpc3RCYXNlKiB0cmFja0xpc3QoKSBjb25zdDsKKyAgICB2b2lkKiBvcGFx
dWVSb290KCk7CisKICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0ID0gMDsKIAogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtODMsOSArNzcsMTEgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByb3RlY3RlZDoKLSAgICBUcmFja0Jhc2UoVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQs
IGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7Cisg
ICAgVHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1
YWdlKTsKIAotICAgIFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQgeyBu
dWxscHRyIH07CisgICAgdmlydHVhbCB2b2lkIHNldElkKGNvbnN0IEF0b21TdHJpbmcmIGlkKSB7
IG1faWQgPSBpZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRMYWJlbChjb25zdCBBdG9tU3RyaW5n
JiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGFuZ3Vh
Z2UoY29uc3QgQXRvbVN0cmluZyYpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBT
b3VyY2VCdWZmZXIqIG1fc291cmNlQnVmZmVyIHsgbnVsbHB0ciB9OwpAQCAtMTAyLDYgKzk4LDcg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25z
dCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CiAjZW5kaWYKKyAgICBXZWFrUHRy
PFRyYWNrTGlzdEJhc2U+IG1fdHJhY2tMaXN0OwogfTsKIAogY2xhc3MgTWVkaWFUcmFja0Jhc2Ug
OiBwdWJsaWMgVHJhY2tCYXNlIHsKQEAgLTExMCw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEtpbmQoY29uc3QgQXRvbVN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
TWVkaWFUcmFja0Jhc2UoVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJp
bmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CisgICAgTWVkaWFUcmFja0Jh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBj
b25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOwogCiAg
ICAgdm9pZCBzZXRLaW5kSW50ZXJuYWwoY29uc3QgQXRvbVN0cmluZyYpOwogCkBAIC0xMjAsNiAr
MTE3LDExIEBAIHByaXZhdGU6CiAgICAgQXRvbVN0cmluZyBtX2tpbmQ7CiB9OwogCitpbmxpbmUg
dm9pZCogcm9vdChUcmFja0Jhc2UqIHRyYWNrKQoreworICAgIHJldHVybiB0cmFjay0+b3BhcXVl
Um9vdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKaW5kZXggMDEzYTIzYzk4MWJhZTlh
MDk0ZTAzN2ZjYTAyNjQ5MTQ0ODE1MzQ5Yi4uMGYwNTM1MzM3ZmZmZTFiZTYwMzVhMTdiYjM2MjFj
ODRjMTY5NDU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xp
c3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
Y3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgogCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVHJhY2tFdmVudC5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0zOSwzNyArMzgsMjEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVHJhY2tMaXN0
QmFzZSk7CiAKLVRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UoV2Vha1B0cjxIVE1MTWVkaWFF
bGVtZW50PiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorVHJhY2tM
aXN0QmFzZTo6VHJhY2tMaXN0QmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBU
eXBlIHR5cGUpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fZWxlbWVu
dChlbGVtZW50KQorICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgQVNTRVJUKCFjb250ZXh0IHx8
IGlzPERvY3VtZW50Pihjb250ZXh0KSk7CiB9CiAKIFRyYWNrTGlzdEJhc2U6On5UcmFja0xpc3RC
YXNlKCkKIHsKLSAgICBjbGVhckVsZW1lbnQoKTsKIH0KIAotdm9pZCBUcmFja0xpc3RCYXNlOjpj
bGVhckVsZW1lbnQoKQordm9pZCogVHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCgpCiB7Ci0gICAg
bV9lbGVtZW50ID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9pbmJhbmRUcmFj
a3MpIHsKLSAgICAgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICAgICAg
dHJhY2stPmNsZWFyQ2xpZW50KCk7Ci0gICAgfQotfQotCi1FbGVtZW50KiBUcmFja0xpc3RCYXNl
OjplbGVtZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbGVtZW50LmdldCgpOwotfQotCi12
b2lkKiBUcmFja0xpc3RCYXNlOjpvcGFxdWVSb290KCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byog
YXNzb2NpYXRlZEVsZW1lbnQgPSBlbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBhc3NvY2lhdGVk
RWxlbWVudC0+b3BhcXVlUm9vdCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChhdXRv
KiByb290T2JzZXJ2ZXIgPSBtX29wYXF1ZVJvb3RPYnNlcnZlci5nZXQoKSkKKyAgICAgICAgcmV0
dXJuICgqcm9vdE9ic2VydmVyKSgpOworICAgIHJldHVybiB0aGlzOwogfQogCiB1bnNpZ25lZCBU
cmFja0xpc3RCYXNlOjpsZW5ndGgoKSBjb25zdApAQCAtODMsMTAgKzY2LDggQEAgdm9pZCBUcmFj
a0xpc3RCYXNlOjpyZW1vdmUoVHJhY2tCYXNlJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2ZW50KQog
ICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHRy
YWNrLm1lZGlhRWxlbWVudCgpKSB7Ci0gICAgICAgIEFTU0VSVCh0cmFjay5tZWRpYUVsZW1lbnQo
KSA9PSBtX2VsZW1lbnQpOwotICAgICAgICB0cmFjay5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7
Ci0gICAgfQorICAgIGlmICh0cmFjay50cmFja0xpc3QoKSA9PSB0aGlzKQorICAgICAgICB0cmFj
ay5jbGVhclRyYWNrTGlzdCgpOwogCiAgICAgUmVmPFRyYWNrQmFzZT4gdHJhY2tSZWYgPSAqbV9p
bmJhbmRUcmFja3NbaW5kZXhdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrTGlzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0
QmFzZS5oCmluZGV4IGZhMDBmODYwZmJmOTA4ZDNkMjA3N2UxZDJkYjg2MjliMjBhNDJkOTkuLjlk
M2U2ODFlN2RlNGE2MTk0YjY4NjcwZjU0ZGY1NWU2MjJiYjllMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCkBAIC0yOSwxNCArMjksMTMgQEAKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVk
ZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgRWxlbWVudDsKIGNsYXNz
IFRyYWNrQmFzZTsKIAogY2xhc3MgVHJhY2tMaXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRy
YWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CkBAIC00NCw2ICs0Myw5IEBAIGNsYXNzIFRyYWNrTGlzdEJhc2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhY2tMaXN0QmFzZSgpOwogCisgICAgZW51bSBUeXBl
IHsgQmFzZVRyYWNrTGlzdCwgVGV4dFRyYWNrTGlzdCwgQXVkaW9UcmFja0xpc3QsIFZpZGVvVHJh
Y2tMaXN0IH07CisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKICAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjb250
YWlucyhUcmFja0Jhc2UmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRyYWNrQmFz
ZSYsIGJvb2wgc2NoZWR1bGVFdmVudCA9IHRydWUpOwpAQCAtNTQsMTAgKzU2LDEwIEBAIHB1Ymxp
YzoKICAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+OjpkZXJlZjsKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyRWxlbWVudCgpOwotICAgIEVsZW1lbnQq
IGVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkKiBvcGFxdWVSb290KCkgY29uc3Q7Ci0gICAgV2Vh
a1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Vs
ZW1lbnQ7IH0KKyAgICB2b2lkKiBvcGFxdWVSb290KCk7CisKKyAgICB1c2luZyBPcGFxdWVSb290
T2JzZXJ2ZXIgPSBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+OworICAgIHZvaWQgc2V0T3BhcXVlUm9v
dE9ic2VydmVyKGNvbnN0IE9wYXF1ZVJvb3RPYnNlcnZlciYgb2JzZXJ2ZXIpIHsgbV9vcGFxdWVS
b290T2JzZXJ2ZXIgPSBtYWtlV2Vha1B0cihvYnNlcnZlcik7IH07CiAKICAgICAvLyBOZWVkcyB0
byBiZSBwdWJsaWMgc28gdHJhY2tzIGNhbiBjYWxsIGl0CiAgICAgdm9pZCBzY2hlZHVsZUNoYW5n
ZUV2ZW50KCk7CkBAIC02Niw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW55VHJhY2tF
bmFibGVkKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBUcmFja0xpc3RCYXNlKFdlYWtQdHI8
SFRNTE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBUcmFja0xp
c3RCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBlKTsKIAogICAgIHZvaWQgc2NoZWR1
bGVBZGRUcmFja0V2ZW50KFJlZjxUcmFja0Jhc2U+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVSZW1v
dmVUcmFja0V2ZW50KFJlZjxUcmFja0Jhc2U+JiYpOwpAQCAtODAsMTAgKzgyLDE2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lk
IGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4gbV9lbGVtZW50OworICAgIFR5cGUgbV90eXBlOworICAgIFdlYWtQdHI8
T3BhcXVlUm9vdE9ic2VydmVyPiBtX29wYXF1ZVJvb3RPYnNlcnZlcjsKICAgICBib29sIG1faXND
aGFuZ2VFdmVudFNjaGVkdWxlZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9pZCogcm9vdChU
cmFja0xpc3RCYXNlKiB0cmFja0xpc3QpCit7CisgICAgcmV0dXJuIHRyYWNrTGlzdC0+b3BhcXVl
Um9vdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
VklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAppbmRleCBlZDc1
NWEyODBlZjNmODNhYTkxNmUyMTljMTIxYjBkN2FiNDliM2M2Li45N2YwMWFjYzY1OWEwZGMwZTUx
ZDBlZTE4ZDAzNjQwMzYxOWFjZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFjay5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC04MCw5ICs3OSw4IEBAIGNvbnN0IEF0
b21TdHJpbmcmIFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkKICAgICByZXR1cm4gY29t
bWVudGFyeTsKIH0KIAotVmlkZW9UcmFjazo6VmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50JiBj
bGllbnQsIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCi0gICAgOiBNZWRpYVRyYWNr
QmFzZShNZWRpYVRyYWNrQmFzZTo6VmlkZW9UcmFjaywgdHJhY2tQcml2YXRlLmlkKCksIHRyYWNr
UHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2UoKSkKLSAgICAsIG1fY2xpZW50
KCZjbGllbnQpCitWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgOiBNZWRpYVRy
YWNrQmFzZShjb250ZXh0LCBNZWRpYVRyYWNrQmFzZTo6VmlkZW9UcmFjaywgdHJhY2tQcml2YXRl
LmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2UoKSkKICAg
ICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCiAgICAgLCBtX3NlbGVjdGVkKHRyYWNrUHJpdmF0
ZS5zZWxlY3RlZCgpKQogewpAQCAtMTMwLDggKzEyOCwyMSBAQCB2b2lkIFZpZGVvVHJhY2s6OnNl
dFNlbGVjdGVkKGNvbnN0IGJvb2wgc2VsZWN0ZWQpCiAgICAgbV9zZWxlY3RlZCA9IHNlbGVjdGVk
OwogICAgIG1fcHJpdmF0ZS0+c2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOwogCi0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCgqdGhpcyk7
CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAg
Y2xpZW50LnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCit2
b2lkIFZpZGVvVHJhY2s6OmFkZENsaWVudChWaWRlb1RyYWNrQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFk
ZChjbGllbnQpOworfQorCit2b2lkIFZpZGVvVHJhY2s6OmNsZWFyQ2xpZW50KFZpZGVvVHJhY2tD
bGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkp
OworICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKIH0KIAogc2l6ZV90IFZpZGVvVHJhY2s6
OmluYmFuZFRyYWNrSW5kZXgoKQpAQCAtMTQyLDE2ICsxNTMsMjUgQEAgc2l6ZV90IFZpZGVvVHJh
Y2s6OmluYmFuZFRyYWNrSW5kZXgoKQogdm9pZCBWaWRlb1RyYWNrOjpzZWxlY3RlZENoYW5nZWQo
Ym9vbCBzZWxlY3RlZCkKIHsKICAgICBzZXRTZWxlY3RlZChzZWxlY3RlZCk7CisgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnZpZGVv
VHJhY2tTZWxlY3RlZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIFZpZGVvVHJh
Y2s6OmlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBzZXRJZChpZCk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LnZpZGVvVHJhY2tJZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIFZpZGVv
VHJhY2s6OmxhYmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKIHsKICAgICBzZXRM
YWJlbChsYWJlbCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQp
IHsKKyAgICAgICAgY2xpZW50LnZpZGVvVHJhY2tMYWJlbENoYW5nZWQoKnRoaXMpOworICAgIH0p
OwogfQogCiB2b2lkIFZpZGVvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5n
JiBsYW5ndWFnZSkKQEAgLTE2MSwxNCArMTgxLDExIEBAIHZvaWQgVmlkZW9UcmFjazo6bGFuZ3Vh
Z2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiB2b2lkIFZpZGVvVHJhY2s6
OndpbGxSZW1vdmUoKQogewotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIobWVkaWFFbGVt
ZW50KCkuZ2V0KCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGVs
ZW1lbnQtPnJlbW92ZVZpZGVvVHJhY2soKnRoaXMpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0
aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC53aWxsUmVtb3ZlVmlkZW9UcmFj
aygqdGhpcyk7CisgICAgfSk7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotCiB2b2lk
IFZpZGVvVHJhY2s6OnNldEtpbmQoY29uc3QgQXRvbVN0cmluZyYga2luZCkKIHsKICAgICAvLyAx
MC4xIGtpbmQsIG9uIHNldHRpbmc6CkBAIC0xODIsMTIgKzE5OSwxMSBAQCB2b2lkIFZpZGVvVHJh
Y2s6OnNldEtpbmQoY29uc3QgQXRvbVN0cmluZyYga2luZCkKIAogICAgIC8vIDMuIElmIHRoZSBz
b3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGwsIHRoZW4gcXVl
dWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBldmVudCBuYW1lZCBjaGFuZ2UgYXQg
c291cmNlQnVmZmVyLnZpZGVvVHJhY2tzLgotICAgIGlmIChtX3NvdXJjZUJ1ZmZlcikKLSAgICAg
ICAgbV9zb3VyY2VCdWZmZXItPnZpZGVvVHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwot
CiAgICAgLy8gNC4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hh
bmdlIGF0IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQogICAgIC8vIHRo
ZSB2aWRlb1RyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgbWVk
aWFFbGVtZW50KCktPmVuc3VyZVZpZGVvVHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwor
ICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNs
aWVudC52aWRlb1RyYWNrS2luZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIFZp
ZGVvVHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQpAQCAtMTk5
LDU0ICsyMTUsNDUgQEAgdm9pZCBWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9tU3Ry
aW5nJiBsYW5ndWFnZSkKICAgICAvLyBzaGFyZWQgYmV0d2VlbiBhbGwgdHJhY2tzIHRoYXQgc3Vw
cG9ydCBzZXR0aW5nIGxhbmd1YWdlLgogCiAgICAgLy8gMi4gVXBkYXRlIHRoaXMgYXR0cmlidXRl
IHRvIHRoZSBuZXcgdmFsdWUuCi0gICAgTWVkaWFUcmFja0Jhc2U6OnNldExhbmd1YWdlKGxhbmd1
YWdlKTsKKyAgICBUcmFja0Jhc2U6OnNldExhbmd1YWdlKGxhbmd1YWdlKTsKIAogICAgIC8vIDMu
IElmIHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGws
IHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBldmVudCBuYW1lZCBj
aGFuZ2UgYXQgc291cmNlQnVmZmVyLnZpZGVvVHJhY2tzLgotICAgIGlmIChtX3NvdXJjZUJ1ZmZl
cikKLSAgICAgICAgbV9zb3VyY2VCdWZmZXItPnZpZGVvVHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VF
dmVudCgpOwotCiAgICAgLy8gNC4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQg
bmFtZWQgY2hhbmdlIGF0IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQog
ICAgIC8vIHRoZSB2aWRlb1RyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQu
Ci0gICAgaWYgKG1lZGlhRWxlbWVudCgpKQotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJl
VmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVh
Y2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnZpZGVvVHJhY2tMYW5ndWFn
ZUNoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCi0jZW5kaWYKLQogdm9pZCBWaWRlb1RyYWNr
Ojp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQogewogICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5k
KCkpIHsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpBbHRlcm5hdGl2ZToKLSAgICAgICAg
c2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKKyAgICAg
ICAgc2V0S2luZChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0
S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKTsKKyAgICAgICAgc2V0
S2luZChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpNYWluOgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwo
VmlkZW9UcmFjazo6bWFpbktleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6
bWFpbktleXdvcmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2
YXRlOjpTaWduOgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6c2lnbktleXdv
cmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c2lnbktleXdvcmQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpTdWJ0aXRsZXM6Ci0gICAg
ICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOworICAg
ICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpDb21tZW50YXJ5OgotICAgICAgICBz
ZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSk7CisgICAgICAg
IHNldEtpbmQoVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIFZpZGVvVHJhY2tQcml2YXRlOjpOb25lOgotICAgICAgICBzZXRLaW5kSW50
ZXJuYWwoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHNldEtpbmQoZW1wdHlTdHJpbmcoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgVmlkZW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4g
ZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKLX0K
LQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBWaWRlb1RyYWNrOjpzZXRMb2dnZXIo
Y29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCmluZGV4IDE3OWU3MTNiYzM2NjllNWQ0NDg0
MTdlNDJiZTI5YmIxMGMzOTE4ODguLmVmODQ4OGU3YjU5ODFmMTMxNzIyYmZiZDY3NmQ2ZjRiMTZk
ZjUxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oCkBAIC0zMCwyMyAr
MzAsMzAgQEAKIAogI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQ
cml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbjsKIGNsYXNzIFZpZGVvVHJhY2s7CitjbGFz
cyBWaWRlb1RyYWNrTGlzdDsKIAotY2xhc3MgVmlkZW9UcmFja0NsaWVudCB7CitjbGFzcyBWaWRl
b1RyYWNrQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFZpZGVvVHJhY2tDbGllbnQ+IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrQ2xpZW50KCkgPSBkZWZhdWx0OwotICAg
IHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2smKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tJZENoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrTGFiZWxDaGFuZ2VkKFZpZGVvVHJhY2smKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNr
JikgeyB9CiB9OwogCiBjbGFzcyBWaWRlb1RyYWNrIGZpbmFsIDogcHVibGljIE1lZGlhVHJhY2tC
YXNlLCBwcml2YXRlIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFZpZGVvVHJhY2s+IGNyZWF0ZShWaWRlb1RyYWNrQ2xpZW50JiBjbGllbnQsIFZpZGVv
VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmlkZW9UcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVv
VHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVmlkZW9UcmFjayhjb250ZXh0LCB0cmFja1ByaXZhdGUpKTsKICAgICB9CiAgICAgdmlydHVh
bCB+VmlkZW9UcmFjaygpOwogCkBAIC02MCwyNiArNjcsMjMgQEAgcHVibGljOgogICAgIGJvb2wg
c2VsZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGVkOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkKGNvbnN0IGJvb2wpOwogCi0gICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFs
IHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgVmlkZW9UcmFja0NsaWVudCogY2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICB2b2lkIGFkZENsaWVudChWaWRlb1RyYWNr
Q2xpZW50Jik7CisgICAgdm9pZCBjbGVhckNsaWVudChWaWRlb1RyYWNrQ2xpZW50Jik7CiAKICAg
ICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpOwogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
ICAgICB2b2lkIHNldEtpbmQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwotI2VuZGlmCiAKICAgICBjb25zdCBN
ZWRpYURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRQcml2
YXRlKFZpZGVvVHJhY2tQcml2YXRlJik7Ci0gICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0
cjxIVE1MTWVkaWFFbGVtZW50Pikgb3ZlcnJpZGU7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgVmlkZW9UcmFjayhWaWRlb1RyYWNrQ2xpZW50JiwgVmlk
ZW9UcmFja1ByaXZhdGUmKTsKKyAgICBWaWRlb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBWaWRlb1RyYWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9t
U3RyaW5nJikgY29uc3QgZmluYWw7CiAKQEAgLTEwMCw3ICsxMDQsOCBAQCBwcml2YXRlOgogICAg
IGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJWaWRlb1Ry
YWNrIjsgfQogI2VuZGlmCiAKLSAgICBWaWRlb1RyYWNrQ2xpZW50KiBtX2NsaWVudCB7IG51bGxw
dHIgfTsKKyAgICBXZWFrUHRyPFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVvVHJhY2tMaXN0OworICAg
IFdlYWtIYXNoU2V0PFZpZGVvVHJhY2tDbGllbnQ+IG1fY2xpZW50czsKICAgICBSZWY8VmlkZW9U
cmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBib29sIG1fc2VsZWN0ZWQgeyBmYWxzZSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCmluZGV4IDc0NzIzZGJh
ZGQ1ZTllMzcxYzNmMmQxNjdiYmQ3NTE3MjE1NThjMGQuLjJjNjBiMmIyZTcwNjUzMzg4ZDlhNGVj
YzAwMzlhMzJmMzY2MGIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmlkbApAQCAtMjUsOCArMjUsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAg
R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCi0gICAgR2VuZXJhdGVBZGRPcGFx
dWVSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0g
aW50ZXJmYWNlIFZpZGVvVHJhY2sgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
aWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCmluZGV4
IDg0ODY1NjZkMThjODRlNmY0YTY4YWFmYmU4YTNjMDU4MjQ3NGQzYjAuLjdhOTFhNTkxZWFhYThm
MjE0NmM0ZWIzOTk3MmI1YTdiMzk2OWQxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFja0xpc3QuY3BwCkBAIC0yOSwxMyArMjksMTIgQEAKIAogI2luY2x1ZGUgIlZp
ZGVvVHJhY2tMaXN0LmgiCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiVmlkZW9UcmFjay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZpZGVvVHJhY2tMaXN0
OjpWaWRlb1RyYWNrTGlzdChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBUcmFja0xpc3RCYXNlKGVsZW1lbnQs
IGNvbnRleHQpCitWaWRlb1RyYWNrTGlzdDo6VmlkZW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0
QmFzZTo6VmlkZW9UcmFja0xpc3QpCiB7CiB9CiAKQEAgLTUzLDggKzUyLDggQEAgdm9pZCBWaWRl
b1RyYWNrTGlzdDo6YXBwZW5kKFJlZjxWaWRlb1RyYWNrPiYmIHRyYWNrKQogICAgIH0KICAgICBt
X2luYmFuZFRyYWNrcy5pbnNlcnQoaW5zZXJ0aW9uSW5kZXgsIHRyYWNrLnB0cigpKTsKIAotICAg
IEFTU0VSVCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9
PSBtZWRpYUVsZW1lbnQoKSk7Ci0gICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChtZWRpYUVsZW1l
bnQoKSk7CisgICAgaWYgKCF0cmFjay0+dHJhY2tMaXN0KCkpCisgICAgICAgIHRyYWNrLT5zZXRU
cmFja0xpc3QoKnRoaXMpOwogCiAgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KFdURk1vdmUodHJh
Y2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
a0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaAppbmRl
eCA5NjYwZGY2ZmUyOTc3NGRkZGYzYmM5MzZmMzQ0MTI5NGQ4YzBkYWIzLi4yNWNlY2JmZWJiZTRj
MmFhYmZjMjc3ZjJkNjA4NDE2ODJjZWY2MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5oCkBAIC0zNSw5ICszNSw5IEBAIGNsYXNzIFZpZGVvVHJhY2s7CiAK
IGNsYXNzIFZpZGVvVHJhY2tMaXN0IGZpbmFsIDogcHVibGljIFRyYWNrTGlzdEJhc2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFja0xpc3Q+IGNyZWF0ZShXZWFrUHRyPEhUTUxN
ZWRpYUVsZW1lbnQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAg
IHN0YXRpYyBSZWY8VmlkZW9UcmFja0xpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBWaWRl
b1RyYWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgICAgICBhdXRvIGxpc3QgPSBhZG9wdFJl
ZigqbmV3IFZpZGVvVHJhY2tMaXN0KGNvbnRleHQpKTsKICAgICAgICAgbGlzdC0+c3VzcGVuZElm
TmVlZGVkKCk7CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgVmlkZW9UcmFja0xpc3QoV2Vha1B0cjxI
VE1MTWVkaWFFbGVtZW50PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFZpZGVvVHJh
Y2tMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIH07CkBAIC02Miw0ICs2Miw4IEBAIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKFZpZGVvVHJhY2tMaXN0KSA9PSBzaXplb2YoVHJhY2tMaXN0QmFzZSks
ICIiKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpUcmFja0xpc3RCYXNlJiB0cmFja0xpc3QpIHsgcmV0dXJuIHRyYWNrTGlz
dC50eXBlKCkgPT0gV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3Q7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGwKaW5kZXggYWIyYjdl
NmMyM2ViZTBlM2I4MGI2NzNhYjk1OThhNDE3ODhkZTdkYi4uMjMxYjg0MGVhMDZmMDMwOWZjZjdh
NDhkNzE2YWRkNGE5NzM3ODIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5pZGwKQEAgLTI2LDggKzI2LDYgQEAKIFsKICAgICBBY3RpdmVET01PYmplY3Qs
CiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxl
bWVudFJvb3QsCi0gICAgR2VuZXJhdGVBZGRPcGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93
CiBdIGludGVyZmFjZSBWaWRlb1RyYWNrTGlzdCA6IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437585</attachid>
            <date>2021-09-07 20:20:21 -0700</date>
            <delta_ts>2021-09-08 09:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229924-20210907202019.patch</filename>
            <type>text/plain</type>
            <size>109824</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmYmYxMThlMjE1ZDM3
M2M3ZTc5YzQ3YmY0ZjM4NDRiNjA3MjFkYi4uOTIxZTY2ZGZlMWU2ZjEyZmEzNDQyYTJiMzVkZGIx
ZDY1YTBkOGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAyMS0wOS0wNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBWaWRlbyxB
dWRpbyxUZXh0VHJhY2sgYW5kIFRyYWNrTGlzdHMgdG8gbm90IGRlcGVuZCBvbiBIVE1MTWVkaWFF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
cmFja0Jhc2UgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMgY3VycmVudGx5IGFyZSBvbmx5IGFibGUg
dG8gaGFuZGxlIGEgc2luZ2xlICJjbGllbnQiCisgICAgICAgIGF0IGEgdGltZSwgd2hpY2ggbWVh
bnMgYSBjb21wbGljYXRlZCByZS1zZW5kaW5nIG9mIG5vdGlmaWNhdGlvbnMgZnJvbSBvbmUgY2xp
ZW50IHRvCisgICAgICAgIHRoZSBuZXh0IHRvIGVuc3VyZSBldmVyeXRoaW5nIGZsb3dzIHRvIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGlzCisgICAgICAgIGNvbXBsaWNh
dGVkIGNsaWVudCBoZWlyYXJjaHksIFRyYWNrcyBhbmQgdGhlaXIgVHJhY2tMaXN0cyBiZWluZyB0
aWdodGx5IGJvdW5kIHRvIHRoZWlyCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBtYWtl
IE1TRS1pbi1hLVdvcmtlciBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIGltcGxlbWVudC4KKworICAg
ICAgICBSZWZhY3RvciBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIHRvIGhh
dmUgbXVsdGlwbGUgY2xpZW50cywgdHJhY2tlZCBieQorICAgICAgICBhIFdlYWtIYXNoU2V0LiBS
ZW1vdmUgSFRNTE1lZGlhRWxlbWVudCBmcm9tIHRoYXQgY2xhc3MgaGVpcmFyY2h5LCBhbmQgcmVw
bGFjZSBpdCB3aXRoCisgICAgICAgIGEgV2Vha1B0ciB0byB0aGVpciBUcmFja0xpc3QgZm9yIG9w
YXF1ZVJvb3QgcHVycG9zZXMuCisKKyAgICAgICAgU2ltaWxhcmx5LCByZWZhY3RvciBBdWRpb1Ry
YWNrTGlzdCwgVmlkZW9UcmFja0xpc3QsIGFuZCBUZXh0VHJhY2tMaXN0IHRvIG5vdCByZXF1aXJl
CisgICAgICAgIGEgYmFja3BvaW50ZXIgdG8gSFRNTE1lZGlhRWxlbWVudCwgYW5kIHVzZSBhIFdl
YWtQdHI8dm9pZD4gaW5zdGVhZCwgYWxsb3dpbmcgZWl0aGVyCisgICAgICAgIFNvdXJjZUJ1ZmZl
ciBvciBIVE1MTWVkaWFFbGVtZW50IHRvIGJlIHRoZSBsaXN0J3Mgb3BhcXVlUm9vdC4KKworICAg
ICAgICBBIFRyYWNrQmFzZSBuZWVkZWQgYWNjZXNzIHRvIGEgSFRNTE1lZGlhRWxlbWVudCBvbmx5
IGZvciB0aGUgbmVjZXNzaXR5IG9mIG91dHB1dHRpbmcKKyAgICAgICAgYSB3YXJuaW5nIHRvIHRo
ZSBjb25zb2xlIHdoZW4gYSBsYW5ndWFnZSBlcnJvciBvY2N1cnJlZDsgaW5zdGVhZCwgbWFrZSBU
cmFja0Jhc2UgYQorICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgYW5kIHBhc3Mg
YSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBUcmFja0Jhc2UgKGFuZAorICAgICAgICBh
bGwgaXRzIGRlcml2ZWQgY2xhc3NlcykgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIEEg
VHJhY2tMaXN0QmFzZSBub3cgaGFzIGEgdHlwZSgpIG1ldGhvZCwgd2hpY2ggYWxsb3dzIGl0IHRv
IGJlIHNhZmVseSBjYXN0IHRvIEF1ZGlvVHJhY2ssCisgICAgICAgIFZpZGVvVHJhY2ssIGFuZCBU
ZXh0VHJhY2ssIHRocm91Z2ggdHlwZSB0cmFpdCBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICBU
ZXh0VHJhY2sgdXNlZCBIVE1MTWVkaWFFbGVtZW50IHRvIHJldHJpZXZlIGl0cyBUZXh0VHJhY2tM
aXN0IGZvciBjZXJ0YWluIG9wZXJhdGlvbnMsCisgICAgICAgIGFuZCBub3cgdGhhdCBlYWNoIFRy
YWNrQmFzZSBoYXMgYSBiYWNrcG9pbnRlciB0byBpdHMgVHJhY2tMaXN0LCB0aGlzIGlzIG5vIGxv
bmdlciBuZWNlc3NhcnkuCisKKyAgICAgICAgVGV4dFRyYWNrTGlzdCBub3cgaGFzIHNldER1cmF0
aW9uKCkvZHVyYXRpb24oKSBtZW1iZXIgZnVuY3Rpb25zLCBzbyB0aGF0IHdoZW4gVGV4dFRyYWNr
CisgICAgICAgIHJlY2VpdmVzIGEgY3VlIHdpdGggYW4gaW5kZWZpbml0ZSBkdXJhdGlvbiwgdGhh
dCBjdWUncyBlbmRUaW1lIGNhbiBiZSBjYWxjdWxhdGVkLgorCisgICAgICAgIFRoZSBBdWRpb1Ry
YWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIElETHMgcHJldmlvdXNseSBzcGVjaWZpZWQg
R2VuZXJhdGVJc1JlYWNoYWJsZSwKKyAgICAgICAgd2l0aCBhIHBhcmFtZXRlciBvZiBJbXBsRWxl
bWVudFJvb3QsIHdoaWNoIHJlcXVpcmVkIGFuIGVsZW1lbnQoKSBtZXRob2Qgb24gZWFjaDsgbm93
CisgICAgICAgIHRoYXQgVHJhY2tCYXNlIGhhcyBhbiBvcGFxdWVSb290KCkgbWV0aG9kLCB0aGlz
IHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRp
b1RyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrTGFiZWxDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYW5ndWFn
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92
ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxUcmFja0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjppZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OndpbGxSZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tJZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0xhbmd1YWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50Ojp3aWxsUmVtb3Zl
QXVkaW9UcmFjayk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0OjpyZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGw6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
RGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Oklu
YmFuZEdlbmVyaWNUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0
b21hdGljSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2s6On5UZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0ZXh0
VHJhY2tMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZUFsbEN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3VlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tBZGRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpjbGVhclRy
YWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnRyYWNrTGlzdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZSk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6aWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0Jhc2U6Omxhbmd1YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrQmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldElk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFiZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzZXRPcGFxdWVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OnJvb3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZWxlY3RlZENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6aWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjp3aWxsUmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZpZGVvVHJh
Y2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVudDo6dmlkZW9U
cmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZp
ZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVu
dDo6dmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrQ2xpZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tDbGllbnQ6OndpbGxSZW1vdmVWaWRlb1RyYWNrKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6CiAyMDIxLTA4LTIzICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIERlLWZsYWtlIG1lZGlhIHBhaW50aW5n
IHRlc3RzIGJ5IGRlbGF5aW5nIHJlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgdW50aWwg
ZWxlbWVudCBpcyBhYmxlIHRvIHBhaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNjdhNjFiYzg0MWRkYmY5NDkxNzdj
YTFlZGU3MWVlYzA3ODkwN2JlNS4uZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRlMDY0
NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNzQsNiArNzQsNyBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZl
cihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KHNvdXJjZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICwgbV9wcml2YXRlKFdURk1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihbdGhpc10geyByZXR1cm4g
b3BhcXVlUm9vdCgpOyB9KQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3Rh
cnQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNjMyLDIyICs2MzMsMjggQEAgdWludDY0
X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiAKIFZpZGVvVHJhY2tM
aXN0JiBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdmlkZW9UcmFj
a3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKChpc1JlbW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkp
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsK
KyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2V0T3BhcXVlUm9vdE9i
c2VydmVyKG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsKKyAgICB9CiAgICAgcmV0dXJuICptX3ZpZGVv
VHJhY2tzOwogfQogCiBBdWRpb1RyYWNrTGlzdCYgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrcygp
CiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVk
aW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVkKCkgPyBudWxscHRyIDog
bV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRpb1Ry
YWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVk
aW9UcmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7Cisg
ICAgfQogICAgIHJldHVybiAqbV9hdWRpb1RyYWNrczsKIH0KIAogVGV4dFRyYWNrTGlzdCYgU291
cmNlQnVmZmVyOjp0ZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAg
ICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRyKChpc1Jl
bW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpKSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykgeworICAgICAgICBtX3Rl
eHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVS
b290UHJvdmlkZXIpOworICAgIH0KICAgICByZXR1cm4gKm1fdGV4dFRyYWNrczsKIH0KIApAQCAt
Nzc5LDcgKzc4Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHN0ZXBzIDUuMi4xLTUuMi44LjEgYXMgcGVyIEVkaXRvcidzIERyYWZ0
IDA5IEphbnVhcnkgMjAxNSwgYW5kIHJlb3JkZXIgdGhpcwogICAgICAgICAgICAgLy8gNS4yLjEg
TGV0IG5ldyBhdWRpbyB0cmFjayBiZSBhIG5ldyBBdWRpb1RyYWNrIG9iamVjdC4KICAgICAgICAg
ICAgIC8vIDUuMi4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGlk
IHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KLSAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9U
cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSgqdGhpcywgKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICphdWRpb1RyYWNrSW5mby50cmFjayk7CisgICAgICAgICAg
ICBuZXdBdWRpb1RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbmV3QXVkaW9U
cmFjay0+c2V0U291cmNlQnVmZmVyKHRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjIuMyBJZiBh
dWRpb1RyYWNrcy5sZW5ndGggZXF1YWxzIDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CkBAIC04MDEsNyArODA5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAgICAgICAg
IC8vIDUuMi43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBub3QgY2Fu
Y2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBB
dWRpb1RyYWNrTGlzdCBvYmplY3QKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1
ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3
QXVkaW9UcmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVu
dCgpLT5hZGRBdWRpb1RyYWNrKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAogICAgICAgICAg
ICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVj
KCkpOwogCkBAIC04MTQsNyArODIyLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RlcHMgNS4zLjEtNS4zLjguMSBhcyBwZXIgRWRp
dG9yJ3MgRHJhZnQgMDkgSmFudWFyeSAyMDE1LCBhbmQgcmVvcmRlciB0aGlzCiAgICAgICAgICAg
ICAvLyA1LjMuMSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0
LgogICAgICAgICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBp
dCB0byB0aGUgaWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgotICAgICAgICAgICAgYXV0
byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKCp0aGlzLCAqdmlkZW9UcmFja0lu
Zm8udHJhY2spOworICAgICAgICAgICAgYXV0byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnZpZGVvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIG5ld1ZpZGVvVHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAg
ICBuZXdWaWRlb1RyYWNrLT5zZXRTb3VyY2VCdWZmZXIodGhpcyk7CiAKICAgICAgICAgICAgIC8v
IDUuMy4zIElmIHZpZGVvVHJhY2tzLmxlbmd0aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKQEAgLTgzNiw3ICs4NDUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQog
ICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50
IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAg
IC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFj
ZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNl
ZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50Lgot
ICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygp
LmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+
bWVkaWFFbGVtZW50KCktPmFkZFZpZGVvVHJhY2sobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwog
CiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlw
dGlvbi0+Y29kZWMoKSk7CiAKQEAgLTg1MSw3ICs4NjAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlh
bGl6YQogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdGVwcyA1LjQuMS01LjQuOC4x
IGFzIHBlciBFZGl0b3IncyBEcmFmdCAwOSBKYW51YXJ5IDIwMTUsIGFuZCByZW9yZGVyIHRoaXMK
ICAgICAgICAgICAgIC8vIDUuNC4xIExldCBuZXcgdGV4dCB0cmFjayBiZSBhIG5ldyBUZXh0VHJh
Y2sgb2JqZWN0IHdpdGggaXRzIHByb3BlcnRpZXMgcG9wdWxhdGVkIHdpdGggdGhlCiAgICAgICAg
ICAgICAvLyBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBz
ZWdtZW50LgotICAgICAgICAgICAgYXV0byBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6
OmNyZWF0ZShkb2N1bWVudCgpLCAqdGhpcywgdGV4dFRyYWNrUHJpdmF0ZSk7CisgICAgICAgICAg
ICBhdXRvIG5ld1RleHRUcmFjayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHRUcmFja1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VGV4dFRyYWNrLT5hZGRDbGllbnQo
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBu
ZXcgdGV4dCB0cmFjayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3Rp
dmUKICAgICAgICAgICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KQEAgLTg2OCw3ICs4NzgsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQogICAgICAgICAgICAgLy8gNS40LjYgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90
IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1
c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBv
biB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1l
bnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YWRkVGV4dFRyYWNrKG5ld1Rl
eHRUcmFjay5jb3B5UmVmKCkpOwogCiAgICAgICAgICAgICBtX3RleHRDb2RlY3MuYXBwZW5kKHRl
eHRUcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOwogCkBAIC0xMDIzLDkgKzEwMzMsMjQg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYgdHJhY2spCiAKICAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250
YWlucyh0cmFjaykpCiAgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKK30KIAotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVs
ZW1lbnQoKS0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCh0cmFjayk7Cit2b2lkIFNvdXJjZUJ1
ZmZlcjo6dmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQoreworICAgIGlm
IChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAg
ICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlcjo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAg
ICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisg
ICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2sp
Cit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJh
Y2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYg
dHJhY2spCkBAIC0xMDUwLDkgKzEwNzUsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKIAogICAgIGlmIChtX2F1ZGlvVHJh
Y2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAgbV9hdWRpb1Ry
YWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQogCi0gICAgaWYgKCFpc1JlbW92ZWQoKSkK
LSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQodHJhY2spOwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRp
b1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQo
QXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1Ry
YWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFuZ3VhZ2VD
aGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1f
YXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2No
ZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKQEAgLTEwNzcsMzkgKzExMTcsMTggQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiAKICAg
ICBpZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAg
ICAgICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQotICAgIGlmICghaXNS
ZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrTW9k
ZUNoYW5nZWQodHJhY2spOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmICghaXNSZW1v
dmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrQWRkQ3Vl
KHRyYWNrLCBjdWUpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBjdWVMaXN0KQotewotICAg
IGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4
dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3VlTGlzdCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyOjp0
ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17
Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYgdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmIGN1ZUxpc3QpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrJiB0cmFjaykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3Nv
dXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZUxpc3Qp
OworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykp
CisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFj
aykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKKyAgICBpZiAobV90ZXh0VHJhY2tz
ICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3RleHRUcmFja3Mt
PnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikKQEAgLTExMTks
OCArMTEzOCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KQogewotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlv
bkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc291cmNlLT5zZXREdXJhdGlvbkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBp
ZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0
aW9uKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIaWdoZXN0
UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CmluZGV4IGVlY2QzMWJmYzVmNGJhMmYzZjY2MDgwN2RlYTYyNTE3Nzc1YmE3NmIuLjg4OGQyZDZl
OThkYWJmOTdkYWJlMWM5MWYyNDhiMTA4NWQ2OTJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtNjksNiArNjksOSBAQCBj
bGFzcyBTb3VyY2VCdWZmZXIgZmluYWwKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNv
dXJjZUJ1ZmZlcik7CiBwdWJsaWM6CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFy
Z2V0OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9y
eTsKKwogICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7
CiAKQEAgLTEzNSw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyAgICB2b2lkKiBvcGFxdWVSb290KCkgeyBy
ZXR1cm4gdGhpczsgfQorCiBwcml2YXRlOgogICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtMTYxLDE1ICsxNjYsMjAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKICAgICB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7Ci0gICAgLy8gVmlkZW9UcmFja0NsaWVudAot
ICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCBhdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZv
aWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBh
dWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKwogICAgIC8vIFRl
eHRUcmFja0NsaWVudAogICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikg
ZmluYWw7CiAgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUo
VGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJh
Y2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisKKyAgICAvLyBWaWRlb1RyYWNr
Q2xpZW50CisgICAgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFs
OworICAgIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAg
ICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFsOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQpAQCAtMjA5LDYgKzIxOSw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEFwcGVuZE1vZGUgbV9tb2RlIHsgQXBwZW5kTW9kZTo6U2VnbWVu
dHMgfTsKIAorICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7
CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggOGY5OTBkYWYyYTRhNWZiZTRj
NDYxMTIwZDIwY2ZmOGJkMmVmODkyMy4uMDdkNDkyYzQwZjNjZmQ2M2MxN2NiZDZjMWRkZWMzZjAy
YTczNzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbApAQCAtMzgsNiArMzgsNyBAQAogICAgIENvbmRpdGlvbmFsPU1FRElB
X1NPVVJDRSwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlhU291cmNlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU291cmNlQnVmZmVyIDogRXZlbnRUYXJnZXQgewogICAg
IGF0dHJpYnV0ZSBBcHBlbmRNb2RlIG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmgKaW5kZXggZWY3MmQ5YjdhYWJkYzk5ZTczMGZmZGVlODBlMTAxMzU5ZjBh
ZmQwZi4uZjA1OGM5OWQ5MzVjMWY3M2JhOWY1OTE4NWI1MTRhNzkwNGQ3NDU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaApAQCAtMzYsMTMgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFja0Jhc2UmKTsKIAotaW5saW5lIHZvaWQqIHJv
b3QoVHJhY2tCYXNlKiB0cmFjaykKLXsKLSAgICBpZiAodHJhY2stPmVsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPmVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHRyYWNrOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiZTAxMmY5N2IwMDQ4OTQy
YTEwMGUzMjAzNGFhMGI3ZmQwYmM5ODllLi42OWZkMjFlNjJjZGEyNDUyMTg1NmZjYzhlNWQ2YmFl
N2Q3MzhlMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTQ1MCw2ICs0NTAsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9zaG91bGRB
dWRpb1BsYXliYWNrUmVxdWlyZVVzZXJHZXN0dXJlKGRvY3VtZW50LnRvcERvY3VtZW50KCkuYXVk
aW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkKICAgICAsIG1fc2hvdWxkVmlkZW9QbGF5YmFja1JlcXVpcmVVc2VyR2VzdHVy
ZShkb2N1bWVudC50b3BEb2N1bWVudCgpLnZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KCkgJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgLCBtX3ZvbHVtZUxv
Y2tlZChkZWZhdWx0Vm9sdW1lTG9ja2VkKCkpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihb
dGhpc10geyByZXR1cm4gb3BhcXVlUm9vdCgpOyB9KQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgLCBtX3JlbW90ZShSZW1vdGVQbGF5YmFjazo6Y3JlYXRlKCp0aGlz
KSkKICNlbmRpZgpAQCAtNTQ0LDEzICs1NDUsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlQ29u
ZmlndXJhdGlvbkNoYW5nZU9ic2VydmVyKCp0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKG1fYXVk
aW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyRWxlbWVudCgpOwotICAgIGlm
IChtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJFbGVtZW50KCk7Ci0g
ICAgaWYgKG1fdmlkZW9UcmFja3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyRWxlbWVu
dCgpOwotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBpZiAoaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZEV2ZW50KSB8fCBtX3JlbW90ZS0+aGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzKCkp
IHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGZh
bHNlOwpAQCAtMTg2OSw2ICsxODYzLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9U
cmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9B
bmRWaWRlbygpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tLaW5kQ2hh
bmdlZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1
ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNr
TGFiZWxDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tz
ICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1f
YXVkaW9UcmFja3MgJiYgbV9hdWRpb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBt
X2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAg
cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKIHsKICAgICBib29sIHRyYWNrSXNM
b2FkZWQgPSB0cnVlOwpAQCAtMTg4NCw4ICsxOTAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogICAgIH0KIAogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFkZGVkIHRyYWNrLCBjcmVhdGUgdGhlIGxpc3Qgb2YgdGV4
dCB0cmFja3MuCi0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcyA9
IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGVuc3VyZVRleHRUcmFja3MoKTsKIAog
ICAgIC8vIE1hcmsgdGhpcyB0cmFjayBhcyAiY29uZmlndXJlZCIgc28gY29uZmlndXJlVGV4dFRy
YWNrcyB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4uCiAgICAgdHJhY2suc2V0SGFzQmVlbkNv
bmZpZ3VyZWQodHJ1ZSk7CkBAIC0xOTA0LDYgKzE5MjAsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogI2VuZGlmCiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0
cmFjaykKK3sKKyAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlv
bnMgJiYgdHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNr
Lm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCisgICAgICAgIHRyYWNrLnNldE1v
ZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworCisgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBt
X3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TGFiZWxDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRyYWNrcyAm
JiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRy
YWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJh
Y2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmICh0cmFjay50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgcmVtb3ZlVGV4dFRyYWNr
KHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKQEAgLTE5MTEsMTAgKzE5NTQsMjcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sm
IHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9BbmRWaWRlbygpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykK
IHsKLSAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNrLm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCi0gICAgICAgIHRyYWNrLnNldE1vZGUoVGV4
dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYWJl
bENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYg
bV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV92aWRl
b1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICByZW1v
dmVWaWRlb1RyYWNrKHRyYWNrKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkln
bm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKQpAQCAtNDA4NywxNSArNDE0NywxNCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIHNldEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0
YXRlKEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRlOjpQcmV2ZW50ZWRBdXRvcGxheSk7CiAgICAg
fQogCi0gICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoKnRoaXMsIHRyYWNrKSk7
CisgICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0cmFjaykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQogewogICAgIC8v
IDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKICAgICAvLyAxLiBBc3Nv
Y2lhdGUgdGhlIHJlbGV2YW50IGRhdGEgd2l0aCBhIG5ldyB0ZXh0IHRyYWNrIGFuZCBpdHMgY29y
cmVzcG9uZGluZyBuZXcgVGV4dFRyYWNrIG9iamVjdC4KLSAgICBhdXRvIHRleHRUcmFjayA9IElu
YmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCksICp0aGlzLCB0cmFjayk7Ci0gICAgdGV4
dFRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQoKSwgdHJhY2spOwogCiAg
ICAgLy8gMi4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIGtpbmQsIGxhYmVsLCBhbmQgbGFuZ3Vh
Z2UgYmFzZWQgb24gdGhlIHNlbWFudGljcyBvZiB0aGUgcmVsZXZhbnQgZGF0YSwKICAgICAvLyBh
cyBkZWZpbmVkIGJ5IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9uLiBJZiB0aGVyZSBpcyBubyBs
YWJlbCBpbiB0aGF0IGRhdGEsIHRoZW4gdGhlIGxhYmVsIG11c3QKQEAgLTQxMjUsNyArNDE4NCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKLSAg
ICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSgqdGhpcywgdHJhY2spKTsKKyAgICBh
dXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0cmFjayk7CisgICAgYWRkVmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrKQpAQCAtNDE0OCw2ICs0MjA4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFJlZjxBdWRpb1RyYWNrPiYmIHRyYWNrKQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xpZW50KCp0aGlzKTsKICAg
ICBlbnN1cmVBdWRpb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQx
NjUsNiArNDIyNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFJlZjxU
ZXh0VHJhY2s+JiYgdHJhY2spCiAgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IHBh
Z2UtPmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuY2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZW5zdXJlVGV4
dFRyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQxNzMsMTIgKzQyMzUs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNr
PiYmIHRyYWNrKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dn
ZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICBlbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNr
KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhSZWY8QXVk
aW9UcmFjaz4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICB0cmFj
ay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIG1fYXVkaW9UcmFja3MtPnJlbW92ZSh0cmFjay5n
ZXQoKSk7CiB9CiAKQEAgLTQxODcsMTQgKzQyNTAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2soUmVmPFRleHRUcmFjaz4mJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2
ZW4KICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSB7ICp0aGlzIH07CiAgICAgaWYg
KGF1dG8gY3VlcyA9IG1ha2VSZWZQdHIodHJhY2stPmN1ZXMoKSkpCiAgICAgICAgIHRleHRUcmFj
a1JlbW92ZUN1ZXModHJhY2ssICpjdWVzKTsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAg
ICB0cmFjay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIGlmIChtX3RleHRUcmFja3MpCiAgICAg
ICAgIG1fdGV4dFRyYWNrcy0+cmVtb3ZlKHRyYWNrLCBzY2hlZHVsZUV2ZW50KTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNrPiYmIHRy
YWNrKQogewotICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOworICAgIHRyYWNrLT5jbGVhckNsaWVu
dCgqdGhpcyk7CiAgICAgbV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKIH0KIApAQCAtNDIz
MSw3ICs0Mjk0LDcgQEAgRXhjZXB0aW9uT3I8VGV4dFRyYWNrJj4gSFRNTE1lZGlhRWxlbWVudDo6
YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QKIAogICAgIC8vIDUuIENyZWF0
ZSBhIG5ldyB0ZXh0IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5ldyBvYmplY3QsIGFuZCBz
ZXQgaXRzIHRleHQgdHJhY2sga2luZCB0byBraW5kLCBpdHMgdGV4dAogICAgIC8vIHRyYWNrIGxh
YmVsIHRvIGxhYmVsLCBpdHMgdGV4dCB0cmFjayBsYW5ndWFnZSB0byBsYW5ndWFnZS4uLgotICAg
IGF1dG8gdHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgdGhpcywga2luZCwg
ZW1wdHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlKTsKKyAgICBhdXRvIHRyYWNrID0gVGV4dFRy
YWNrOjpjcmVhdGUoJmRvY3VtZW50KCksIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBsYW5n
dWFnZSk7CiAgICAgYXV0byYgdHJhY2tSZWZlcmVuY2UgPSB0cmFjay5nZXQoKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICB0cmFja1JlZmVyZW5jZS5zZXRMb2dnZXIobG9nZ2VyKCks
IGxvZ0lkZW50aWZpZXIoKSk7CkBAIC00MjU0LDI0ICs0MzE3LDMxIEBAIEV4Y2VwdGlvbk9yPFRl
eHRUcmFjayY+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0CiAKIEF1ZGlvVHJhY2tMaXN0JiBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVBdWRp
b1RyYWNrcygpCiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJh
Y2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghbV9hdWRpb1RyYWNr
cykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVkaW9U
cmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7CisgICAg
fQogCiAgICAgcmV0dXJuICptX2F1ZGlvVHJhY2tzOwogfQogCiBUZXh0VHJhY2tMaXN0JiBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNr
cykKLSAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFr
UHRyKHRoaXMpLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX3RleHRUcmFja3MpIHsKKyAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNr
TGlzdDo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
KyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVSb290
UHJvdmlkZXIpOworICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0aW9uTWVk
aWFUaW1lKCkpOworICAgIH0KIAogICAgIHJldHVybiAqbV90ZXh0VHJhY2tzOwogfQogCiBWaWRl
b1RyYWNrTGlzdCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlVmlkZW9UcmFja3MoKQogewotICAg
IGlmICghbV92aWRlb1RyYWNrcykKLSAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tM
aXN0OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92
aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zZXRPcGFxdWVS
b290T2JzZXJ2ZXIobV9vcGFxdWVSb290UHJvdmlkZXIpOworICAgIH0KIAogICAgIHJldHVybiAq
bV92aWRlb1RyYWNrczsKIH0KQEAgLTUwNDcsNiArNTExNyw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoKQogICAgIGlmIChub3cgPiBkdXIpCiAg
ICAgICAgIHNlZWtJbnRlcm5hbChkdXIpOwogCisgICAgaWYgKG1fdGV4dFRyYWNrcykKKyAgICAg
ICAgbV90ZXh0VHJhY2tzLT5zZXREdXJhdGlvbihkdXIpOworCiAgICAgZW5kUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCA2ZTFjOWY5ZDU2YjExZDE2MTZiZDY3MTFmOTc3ZWI1ZGZlMzEyYmY4Li4zMmVk
Y2NkODA5NDc1OGM4YzRiNDI2NjJjY2Y3MWY0ZjRiMjY4ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlZpc2liaWxp
dHlDaGFuZ2VDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMp
CkBAIC0zODMsMTcgKzM4NCwyOCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50
CiAgICAgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOwor
ICAgIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2
b2lkIGF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQg
YXVkaW9UcmFja0xhbmd1YWdlQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB3
aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrJikgZmluYWw7CiAKICAgICAvLyBUZXh0VHJh
Y2tDbGllbnQKLSAgICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNr
JiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFj
a0xhYmVsQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0xhbmd1
YWdlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMo
VGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOworICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmlu
YWw7CisgICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikg
ZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNr
Q3VlJikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIGZp
bmFsOwogCiAgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZvaWQgdmlkZW9UcmFja0tpbmRD
aGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvVHJhY2tMYWJlbENoYW5n
ZWQoVmlkZW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdl
ZChWaWRlb1RyYWNrJikgZmluYWw7CiAgICAgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrKFZpZGVv
VHJhY2smKSBmaW5hbDsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24qKTsKQEAgLTExNTcsNiArMTE2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEJsb2I+IG1fYmxvYjsKICAgICBVUkwgbV9ibG9iVVJMRm9yUmVhZGluZzsKICAgICBNZWRp
YVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKKyAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1f
b3BhcXVlUm9vdFByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgYm9vbCBtX2hhc05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCBiODY1YzcyYTJkM2RjNDliZmU3YTZlNDE0
MTc1NWQ4OWJmY2U5YTdkLi4xYmYxOWFlY2Q3MWM1YzVlYWM2OGZmYWM2ZDMyYjk4N2ExMTUwZTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQogewogICAgIGlmICht
X3RyYWNrKSB7CiAgICAgICAgIG1fdHJhY2stPmNsZWFyRWxlbWVudCgpOwotICAgICAgICBtX3Ry
YWNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7
CiAgICAgfQogfQogCkBAIC0xNTIsNiArMTUyLDcgQEAgTG9hZGFibGVUZXh0VHJhY2smIEhUTUxU
cmFja0VsZW1lbnQ6OnRyYWNrKCkKICAgICAgICAgaWYgKCFUZXh0VHJhY2s6OmlzVmFsaWRLaW5k
S2V5d29yZChraW5kKSkKICAgICAgICAgICAgIGtpbmQgPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKTsKICAgICAgICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUoKnRo
aXMsIGtpbmQsIGxhYmVsKCksIHNyY2xhbmcoKSk7CisgICAgICAgIG1fdHJhY2stPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgfQogICAgIEFTU0VSVChtX3RyYWNrLT50cmFja0VsZW1lbnQoKSA9PSB0
aGlzKTsKIApAQCAtMjk5LDQ0ICszMDAsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTFRyYWNr
RWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdAogICAgIHJl
dHVybiBudWxsQXRvbSgpOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0tp
bmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQodHJhY2sp
OwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayYgdHJhY2spCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayYpCiB7CiAgICAgLy8gU2luY2Ugd2UndmUgbW92ZWQgdG8gYSBuZXcgcGFyZW50
LCB3ZSBtYXkgbm93IGJlIGFibGUgdG8gbG9hZC4KICAgICBpZiAocmVhZHlTdGF0ZSgpID09IEhU
TUxUcmFja0VsZW1lbnQ6Ok5PTkUpCiAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwotCi0gICAgaWYg
KGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNr
TW9kZUNoYW5nZWQodHJhY2spOwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFj
a0FkZEN1ZXMoVGV4dFRyYWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgY3VlcykK
LXsKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcGFyZW50
LT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKLX0KLSAgICAKLXZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0
VHJhY2tDdWVMaXN0JiBjdWVzKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVu
dCgpKQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZXMpOwot
fQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNr
JiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3VlKHRyYWNrLCBjdWUp
OwotfQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4
dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50
ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRy
YWNrLCBjdWUpOwogfQogCiBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVu
dDo6bWVkaWFFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmgKaW5kZXggZjc4OTg5OGQxZjdkZDcwZTM2NTcxOThhMjkxYzhkYjQyNzJhOGFjYy4uYjg2MmQ0
OWE0YTkyYzMzNjczNTU4OTFjYjY0Njg1ZTY4MDE1ZTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmgKQEAgLTg0LDExICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
ZXh0VHJhY2tDbGllbnQKICAgICB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYp
IGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBmaW5hbDsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwg
Y29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVt
b3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5M
b2FkVVJMKGNvbnN0IFVSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmNwcAppbmRleCBjYWI3NzgyMWE5NDdjZDhlYzdhMjIwOTVmNzlhMjI2OTlmZDBjMzMzLi4zY2I3
MThkM2RjMjdlNTgzYjVhNWRmMTA5M2EwMzY1MjdjMDJlY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tM
aXN0LmgiCiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc1LDkgKzc1LDggQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVu
dGFyeUtleXdvcmQoKQogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1BdWRpb1RyYWNrOjpB
dWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVudCwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKLSAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpBdWRpb1Ry
YWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0
ZS5sYW5ndWFnZSgpKQotICAgICwgbV9jbGllbnQoJmNsaWVudCkKK0F1ZGlvVHJhY2s6OkF1ZGlv
VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tC
YXNlOjpBdWRpb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCks
IHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkK
ICAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogewpAQCAtMTA3LDYgKzEw
NiwxNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OnNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICBzZXRJZChtX3ByaXZhdGUtPmlkKCkpOwogfQogCit2b2lkIEF1ZGlv
VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQoreworICAgIFRy
YWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOworCisgICAgbV9jbGllbnRzLmZvckVhY2go
WyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYW5ndWFnZUNo
YW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCiBib29sIEF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5k
KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZSA9PSBh
bHRlcm5hdGl2ZUtleXdvcmQoKQpAQCAtMTIzLDYgKzEzMSwyMSBAQCB2b2lkIEF1ZGlvVHJhY2s6
OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ByaXZh
dGUtPnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChh
dXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCgq
dGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6YWRkQ2xpZW50KEF1ZGlvVHJh
Y2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGll
bnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6
Y2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2Ns
aWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwog
fQogCiBzaXplX3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpIGNvbnN0CkBAIC0xMzcs
MTggKzE2MCwyNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OmVuYWJsZWRDaGFuZ2VkKGJvb2wgZW5hYmxl
ZCkKIAogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJh
Y2s6OmlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBzZXRJZChpZCk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LmF1ZGlvVHJhY2tJZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlv
VHJhY2s6OmxhYmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKIHsKICAgICBzZXRM
YWJlbChsYWJlbCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQp
IHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoKnRoaXMpOworICAgIH0p
OwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5n
JiBsYW5ndWFnZSkKQEAgLTE1OCwxMSArMTg4LDkgQEAgdm9pZCBBdWRpb1RyYWNrOjpsYW5ndWFn
ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgQXVkaW9UcmFjazo6
d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtZWRpYUVsZW1l
bnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBl
bGVtZW50LT5yZW1vdmVBdWRpb1RyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92ZUF1ZGlvVHJh
Y2soKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9t
UHJpdmF0ZSgpCkBAIC0xOTUsMTEgKzIyMyw2IEBAIHZvaWQgQXVkaW9UcmFjazo6dXBkYXRlS2lu
ZEZyb21Qcml2YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgQXVkaW9UcmFjazo6c2V0TWVkaWFFbGVt
ZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6
OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogdm9pZCBBdWRpb1RyYWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5oCmluZGV4IDk5YTQ1MzI4YzI5ZWEwYjJjNWVjZjQyN2YxN2E0NWMwNDQxN2ZkZjcuLjM3NTEw
YThjZDJmOGY0MDE1MzU4OTI1ZGY5OWRhZWM5OGYxOTYwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFjay5oCkBAIC0zMCwyMiArMzAsMjkgQEAKIAogI2luY2x1ZGUgIkF1ZGlv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1dl
YWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFjazsK
K2NsYXNzIEF1ZGlvVHJhY2tMaXN0OwogCi1jbGFzcyBBdWRpb1RyYWNrQ2xpZW50IHsKK2NsYXNz
IEF1ZGlvVHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXVkaW9UcmFja0NsaWVu
dD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7
Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFj
ayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrSWRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNr
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9U
cmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1Ry
YWNrJikgeyB9CiB9OwogCiBjbGFzcyBBdWRpb1RyYWNrIGZpbmFsIDogcHVibGljIE1lZGlhVHJh
Y2tCYXNlLCBwcml2YXRlIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1
ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNr
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
ZGlvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXVkaW9UcmFjayhjb250ZXh0LCB0cmFja1ByaXZhdGUpKTsKICAgICB9CiAgICAgdmly
dHVhbCB+QXVkaW9UcmFjaygpOwogCkBAIC01OSwyMSArNjYsMjIgQEAgcHVibGljOgogICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQg
c2V0RW5hYmxlZChjb25zdCBib29sKTsKIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7
IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBhZGRDbGllbnQoQXVkaW9UcmFja0Ns
aWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYpOwogCiAgICAg
c2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKSBjb25zdDsKIAogICAgIGNvbnN0IEF1ZGlvVHJhY2tQ
cml2YXRlJiBwcml2YXRlVHJhY2soKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KICAgICB2
b2lkIHNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgc2V0TWVkaWFF
bGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZp
bmFsOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50
JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICBBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBBdWRpb1RyYWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBpc1ZhbGlkS2luZChjb25z
dCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAKQEAgLTkyLDcgKzEwMCw4IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1
ZGlvVHJhY2siOyB9CiAjZW5kaWYKIAotICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xpZW50IHsg
bnVsbHB0ciB9OworICAgIFdlYWtQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja0xpc3Q7
CisgICAgV2Vha0hhc2hTZXQ8QXVkaW9UcmFja0NsaWVudD4gbV9jbGllbnRzOwogICAgIFJlZjxB
dWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAppbmRleCAzOTM0
NjY2ZjVmYzA2MjE3ZDNlM2VlOWM1ZTAxZDRjYTczMWMwZWZhLi5iOTQzY2Y1NWVkOWYxNTkzZTcz
MzI3NWQ3OWNjNjAyOGIwMDI2MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwKQEAgLTI2LDggKzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCisgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFjayB7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKaW5kZXggNjQwNTgxNzFkNDVhODgxZWYxZTBk
YzZkOGVlM2QzNDMzZDU2MWRjYS4uMzNhMDdkNGVjNzFkMTg4YmI5NTg3ZDBkOWJhODgyN2EzOTYx
NDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAK
QEAgLTMwLDEyICszMCwxMSBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAKICNpbmNs
dWRlICJBdWRpb1RyYWNrLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChXZWFrUHRy
PEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgOiBUcmFja0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitBdWRpb1RyYWNrTGlz
dDo6QXVkaW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IFRyYWNrTGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3QpCiB7
CiB9CiAKQEAgLTUzLDEzICs1MiwyMSBAQCB2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUmVm
PEF1ZGlvVHJhY2s+JiYgdHJhY2spCiAgICAgfQogICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChp
bnNlcnRpb25JbmRleCwgdHJhY2sucHRyKCkpOwogCi0KLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRp
YUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwot
ICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJh
Y2stPnRyYWNrTGlzdCgpKQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAog
ICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKK3ZvaWQgQXVk
aW9UcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQp
Cit7CisgICAgYXV0byYgYXVkaW9UcmFjayA9IGRvd25jYXN0PEF1ZGlvVHJhY2s+KHRyYWNrKTsK
KyAgICBpZiAoYXVkaW9UcmFjay50cmFja0xpc3QoKSA9PSB0aGlzKQorICAgICAgICBhdWRpb1Ry
YWNrLmNsZWFyVHJhY2tMaXN0KCk7CisKKyAgICBUcmFja0xpc3RCYXNlOjpyZW1vdmUodHJhY2ss
IHNjaGVkdWxlRXZlbnQpOworfQorCiBBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKaW5kZXgg
OGFlMDM0MjAxNDJmZTFjZjYzODBlZmQzZGJlODEyMmM0YjQ0OGQ3ZS4uOTVmZDkwYjRjYWJiYmQ4
MzgwYzVhYzBiNTM5OThmMTRhY2FmNDVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBBdWRpb1RyYWNrOwogCiBj
bGFzcyBBdWRpb1RyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVk
aWFFbGVtZW50PiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYo
Km5ldyBBdWRpb1RyYWNrTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5l
ZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CkBAIC00OCwxMiArNDgsMTMgQEAg
cHVibGljOgogICAgIEF1ZGlvVHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAg
IEF1ZGlvVHJhY2sqIGxhc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEp
OyB9CiAgICAgdm9pZCBhcHBlbmQoUmVmPEF1ZGlvVHJhY2s+JiYpOworICAgIHZvaWQgcmVtb3Zl
KFRyYWNrQmFzZSYsIGJvb2wgc2NoZWR1bGVFdmVudCA9IHRydWUpIGZpbmFsOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEF1ZGlvVHJhY2tMaXN0KFdlYWtQ
dHI8SFRNTE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBBdWRp
b1RyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiB9OwpAQCAtNjEsNCArNjIsOCBAQCBz
dGF0aWNfYXNzZXJ0KHNpemVvZihBdWRpb1RyYWNrTGlzdCkgPT0gc2l6ZW9mKFRyYWNrTGlzdEJh
c2UpLCAiIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVybiB0cmFj
a0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OkF1ZGlvVHJhY2tMaXN0OyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCmluZGV4IGM0
NTU0Y2YyZDIwN2Y2M2ZhN2UzOTlkYWU0NzQ5ZTZjOTEyNzQ3ZGEuLjhiZTVkMGYxYmU4NTZmN2Ni
MTMyODNiMzEyOTM1ZDNlNTM1NTNmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaWRsCkBAIC0yNiw4ICsyNiw2IEBACiBbCiAgICAgQWN0aXZlRE9NT2Jq
ZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bEVsZW1lbnRSb290LAotICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBvc2VkPVdp
bmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgOiBFdmVudFRhcmdldCB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKaW5kZXggODM4MDIzMmI3OTI4
YTI3YjkzMjM2ODA2YzAyODUyOWYwN2JiZWE4MC4uZmE3OGYzYmJlMjkxOGRjYWE4Mzg0OTc3Yzkz
NzlhYTQ4NWQ0NGQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZERhdGFUZXh0VHJhY2suY3BwCkBAIC0zMCwyMiArMzAsMjIgQEAKICNpZiBFTkFCTEUoVklERU8p
CiAKICNpbmNsdWRlICJEYXRhQ3VlLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kRGF0YVRleHRUcmFj
ayk7CiAKLWlubGluZSBJbmJhbmREYXRhVGV4dFRyYWNrOjpJbmJhbmREYXRhVGV4dFRyYWNrKERv
Y3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFj
a1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwg
Y2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kRGF0YVRleHRUcmFjazo6SW5iYW5k
RGF0YVRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQcml2
YXRlKQogewogfQogCi1SZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gSW5iYW5kRGF0YVRleHRUcmFj
azo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmREYXRhVGV4dFRy
YWNrPiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJhY2sg
PSBhZG9wdFJlZigqbmV3IEluYmFuZERhdGFUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJh
Y2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZERh
dGFUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkpOwogICAgIHRleHRUcmFjay0+c3Vz
cGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KQEAgLTcwLDggKzcwLDkg
QEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgbWVkaWFFbGVtZW50KCkpIHsKLSAgICAg
ICAgY3VlLT5zZXRFbmRUaW1lKG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpKTsK
KyAgICBhdXRvKiB0ZXh0VHJhY2tMaXN0ID0gZG93bmNhc3Q8VGV4dFRyYWNrTGlzdD4odHJhY2tM
aXN0KCkpOworICAgIGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgdGV4dFRyYWNrTGlz
dCAmJiB0ZXh0VHJhY2tMaXN0LT5kdXJhdGlvbigpLmlzVmFsaWQoKSkgeworICAgICAgICBjdWUt
PnNldEVuZFRpbWUodGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKSk7CiAgICAgICAgIG1faW5jb21w
bGV0ZUN1ZU1hcC5hcHBlbmQoJmN1ZS5nZXQoKSk7CiAgICAgfQogCkBAIC0xMDEsOCArMTAyLDkg
QEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYKICAgICBjdWUtPndpbGxDaGFuZ2UoKTsKIAogICAg
IE1lZGlhVGltZSBlbmQgPSBpbkVuZDsKLSAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgp
ICYmIG1lZGlhRWxlbWVudCgpKQotICAgICAgICBlbmQgPSBtZWRpYUVsZW1lbnQoKS0+ZHVyYXRp
b25NZWRpYVRpbWUoKTsKKyAgICBhdXRvKiB0ZXh0VHJhY2tMaXN0ID0gZG93bmNhc3Q8VGV4dFRy
YWNrTGlzdD4odHJhY2tMaXN0KCkpOworICAgIGlmIChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkg
JiYgdGV4dFRyYWNrTGlzdCAmJiB0ZXh0VHJhY2tMaXN0LT5kdXJhdGlvbigpLmlzVmFsaWQoKSkK
KyAgICAgICAgZW5kID0gdGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKTsKICAgICBlbHNlCiAgICAg
ICAgIG1faW5jb21wbGV0ZUN1ZU1hcC5yZW1vdmVGaXJzdChjdWUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCmluZGV4IGY2YjUwZjQ3YTlh
NDUyNDY2M2U1NmJlMWI2MWI2MDM3ODIzNmYzMTQuLjI1MDE4NGFhNzUwYWM2ODM0MWRjNjFhMjg5
N2RmYzEyYjA4NWExODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kRGF0YVRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5oCkBAIC0zNywxMSArMzcsMTEgQEAgY2xhc3MgRGF0YUN1ZTsKIGNsYXNz
IEluYmFuZERhdGFUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEluYmFuZERhdGFUZXh0VHJhY2spOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8
SW5iYW5kRGF0YVRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSYpOwogICAgIHZpcnR1YWwgfkluYmFuZERhdGFUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToK
LSAgICBJbmJhbmREYXRhVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIEluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1lbnQm
LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICB2b2lkIGFkZERhdGFDdWUoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNp
Z25lZCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IDU1NmU0NDllODc2MmFmMTUwNWM5MTA5MDM2N2Vl
MTU4ZGQzYTAyOWYuLjIzOTFkNWVkZTU3MjYwMWFiNzk0ZDMyNTVhNmZlOWUxNWQ0YjgzZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRy
YWNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRlICJWVFRSZWdpb25MaXN0Lmgi
CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBA
IC02MywxNCArNjQsMTQgQEAgdm9pZCBHZW5lcmljVGV4dFRyYWNrQ3VlTWFwOjpyZW1vdmUoVGV4
dFRyYWNrQ3VlJiBwdWJsaWNDdWUpCiAgICAgICAgIG1fZGF0YVRvQ3VlTWFwLnJlbW92ZShjdWVJ
ZGVudGlmaWVyKTsKIH0KIAotaW5saW5lIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OkluYmFuZEdl
bmVyaWNUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDogSW5iYW5kVGV4
dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkKK2lubGluZSBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogSW5iYW5kVGV4dFRy
YWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpCiB7CiB9CiAKLVJlZjxJbmJhbmRHZW5lcmljVGV4
dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQorUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKIHsKLSAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5k
R2VuZXJpY1RleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICBh
dXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhkb2N1
bWVudCwgdHJhY2tQcml2YXRlKSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsK
ICAgICByZXR1cm4gdGV4dFRyYWNrOwogfQpAQCAtODMsOCArODQsOCBAQCB2b2lkIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKFRleHRUcmFja0N1ZUdlbmVyaWMm
IGN1ZSwgSW5iYQogCiAgICAgY3VlLnNldFN0YXJ0VGltZShpbmJhbmRDdWUuc3RhcnRUaW1lKCkp
OwogICAgIE1lZGlhVGltZSBlbmRUaW1lID0gaW5iYW5kQ3VlLmVuZFRpbWUoKTsKLSAgICBpZiAo
ZW5kVGltZS5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAg
ZW5kVGltZSA9IG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpOworICAgIGlmIChl
bmRUaW1lLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHRleHRUcmFja0xpc3QoKSAmJiB0ZXh0VHJh
Y2tMaXN0KCktPmR1cmF0aW9uKCkuaXNWYWxpZCgpKQorICAgICAgICBlbmRUaW1lID0gdGV4dFRy
YWNrTGlzdCgpLT5kdXJhdGlvbigpOwogICAgIGN1ZS5zZXRFbmRUaW1lKGVuZFRpbWUpOwogICAg
IGN1ZS5zZXRUZXh0KGluYmFuZEN1ZS5jb250ZW50KCkpOwogICAgIGN1ZS5zZXRJZChpbmJhbmRD
dWUuaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5oCmluZGV4IGZlOTUzNDhkM2ZiYjFiODM2NDA4NTc0YjI3MDEwYTc2ZDNhMzFi
MGQuLjQ1OTdiMmExYzZmNzNiNTY5MWI0NzU4NzEzNTQyMzI3MjkyZTU4YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCkBAIC01
MywxMSArNTMsMTEgQEAgcHJpdmF0ZToKIGNsYXNzIEluYmFuZEdlbmVyaWNUZXh0VHJhY2sgZmlu
YWwgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrLCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVudCB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmRHZW5lcmljVGV4dFRyYWNrKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IGNyZWF0ZShEb2N1
bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBz
dGF0aWMgUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmRHZW5lcmljVGV4dFRyYWNr
KCk7CiAKIHByaXZhdGU6Ci0gICAgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhEb2N1bWVudCYsIFRl
eHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAg
dm9pZCBhZGRHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSBmaW5hbDsKICAgICB2b2lkIHVw
ZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCmluZGV4IDljZmExNGRmMmFlOTU4NjZj
NTNiOGIxMDNiNmQ4NTlkNGJmZDVkOWMuLmM2ZmVhMzVlZDM4YjA0ODYwM2QyY2U4MWRmYWJiMDI2
MTg4NDIwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShWSURFTykKIAotI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJhbmREYXRhVGV4dFRyYWNrLmgiCiAj
aW5jbHVkZSAiSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRU
cmFja1ByaXZhdGUuaCIKQEAgLTM5LDI0ICszOCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbmJhbmRUZXh0VHJhY2spOwogCi1SZWY8SW5i
YW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCitSZWY8SW5iYW5kVGV4dFRyYWNrPiBJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKIHsK
ICAgICBzd2l0Y2ggKHRyYWNrUHJpdmF0ZS5jdWVGb3JtYXQoKSkgewogICAgIGNhc2UgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0OjpEYXRhOgotICAgICAgICByZXR1cm4gSW5iYW5k
RGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7Cisg
ICAgICAgIHJldHVybiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIHRyYWNr
UHJpdmF0ZSk7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6Okdl
bmVyaWM6Ci0gICAgICAgIHJldHVybiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoZG9j
dW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZEdlbmVy
aWNUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICBjYXNlIElu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6V2ViVlRUOgotICAgICAgICByZXR1cm4g
SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2
YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKGRvY3Vt
ZW50LCB0cmFja1ByaXZhdGUpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBhdXRvIHRleHRUcmFjayA9IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwg
Y2xpZW50LCB0cmFja1ByaXZhdGUpOworICAgIGF1dG8gdGV4dFRyYWNrID0gSW5iYW5kRGF0YVRl
eHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpOwogICAgIHRleHRUcmFjay0+
c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KIAotSW5iYW5kVGV4
dFRyYWNrOjpJbmJhbmRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGll
bnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDog
VGV4dFRyYWNrKCZkb2N1bWVudCwgJmNsaWVudCwgZW1wdHlBdG9tKCksIHRyYWNrUHJpdmF0ZS5p
ZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCksIEluQmFu
ZCkKK0luYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogVGV4dFRyYWNrKCZk
b2N1bWVudCwgZW1wdHlBdG9tKCksIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFi
ZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCksIEluQmFuZCkKICAgICAsIG1fcHJpdmF0ZSh0
cmFja1ByaXZhdGUpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CkBAIC0xNTks
MTAgKzE1OCw5IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjp3aWxsUmVtb3Zl
KCkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKG1lZGlhRWxlbWVudCgpLmdldCgp
KTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50LT5yZW1v
dmVUZXh0VHJhY2soKnRoaXMpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xp
ZW50KSB7CisgICAgICAgIGNsaWVudC53aWxsUmVtb3ZlVGV4dFRyYWNrKCp0aGlzKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCkBA
IC0xOTcsMTQgKzE5NSw2IEBAIE1lZGlhVGltZSBJbmJhbmRUZXh0VHJhY2s6OnN0YXJ0VGltZVZh
cmlhbmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdGFydFRpbWVWYXJpYW5jZSgp
OwogfQogCi12b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNldE1lZGlhRWxlbWVu
dChlbGVtZW50KTsKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBtX3ByaXZhdGUtPnNl
dExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKLSNlbmRpZgotfQotCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TG9nZ2VyKGNvbnN0
IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggYmIxMmMxNTlkZTc0Zjky
OTQ1MzY5NTQxZDc4NzJlNmM1YzFhY2I0Ny4uZjI4YTFkNDg1YTU5OWI2ODljMGY2MTA0ZDZmM2Y4
NDEwYzVlMDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFRl
eHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmRUZXh0VHJhY2spOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQm
LCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGlj
IFJlZjxJbmJhbmRUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmRUZXh0VHJhY2soKTsKIAogICAgIGJvb2wgaXND
bG9zZWRDYXB0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDksMTMgKzQ5LDEyIEBAIHB1Ymxp
YzoKICAgICBBdG9tU3RyaW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRl
Jik7Ci0gICAgdm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Pikg
b3ZlcnJpZGU7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIo
Y29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoK
LSAgICBJbmJhbmRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlJik7CisgICAgSW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgdm9pZCBzZXRNb2RlSW50ZXJuYWwoTW9kZSk7CiAg
ICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCAyYWE5ZjNiMDNhYjNh
MTQ0ZTkyNzEzYTY1ZmFmM2ZmY2RmNWFhN2FjLi4yMjIzYTU3MmFhMGY2Y2E5NGMyZDI3NGYxZWMz
NzU0YmM1MjVmNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC0zOSwxNCArMzksMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5kV2ViVlRUVGV4dFRyYWNr
KTsKIAotaW5saW5lIEluYmFuZFdlYlZUVFRleHRUcmFjazo6SW5iYW5kV2ViVlRUVGV4dFRyYWNr
KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRU
cmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVu
dCwgY2xpZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIHRy
YWNrUHJpdmF0ZSkKIHsKIH0KIAotUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorUmVmPEluYmFuZFRleHRU
cmFjaz4gSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJh
Y2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50
LCB0cmFja1ByaXZhdGUpKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5i
YW5kV2ViVlRUVGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpKTsKICAgICB0ZXh0VHJh
Y2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAppbmRleCAz
MTUyMzU3MjliNWZiZDk5ZjYzNGZhN2Q2Yzc3NmMyN2JjNmMxYzUyLi45MWZhMDM5OGE0ZjljMGU3
YTU0OTc2NjI0OGZhMzA1NmY4MTc1NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRXZWJWVFRUZXh0VHJhY2sgZmluYWwgOiBwdWJsaWMg
SW5iYW5kVGV4dFRyYWNrLCBwcml2YXRlIFdlYlZUVFBhcnNlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChJbmJhbmRXZWJWVFRUZXh0VHJhY2spOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGll
bnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0
VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2
aXJ0dWFsIH5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToKLSAgICBJbmJhbmRX
ZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlJik7CisgICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgV2ViVlRUUGFyc2VyJiBwYXJzZXIoKTsKICAgICB2
b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcAppbmRleCAzMWNiZjBhNjU4ZDg1M2RjOTkxMDU4ZTFmMmE5ZmNiOTlmZTc3OWQ0Li4z
ODM1NzY0MTE2ZDA5MjU5ODg3OGI2NWE4ZmQ4YTgyNTkwM2VkNWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTG9hZGFi
bGVUZXh0VHJhY2spOwogCiBMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soSFRN
TFRyYWNrRWxlbWVudCYgdHJhY2ssIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IFRleHRUcmFjaygmdHJhY2suZG9j
dW1lbnQoKSwgJnRyYWNrLCBraW5kLCBlbXB0eVN0cmluZygpLCBsYWJlbCwgbGFuZ3VhZ2UsIFRy
YWNrRWxlbWVudCkKKyAgICA6IFRleHRUcmFjaygmdHJhY2suZG9jdW1lbnQoKSwga2luZCwgZW1w
dHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlLCBUcmFja0VsZW1lbnQpCiAgICAgLCBtX3RyYWNr
RWxlbWVudCgmdHJhY2spCiB7CiB9CkBAIC05NiwxMSArOTYsNiBAQCB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1cmwpCiAgICAgfSk7CiB9CiAKLUVsZW1l
bnQqIExvYWRhYmxlVGV4dFRyYWNrOjplbGVtZW50KCkKLXsKLSAgICByZXR1cm4gbV90cmFja0Vs
ZW1lbnQ7Ci19Ci0KIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4
dFRyYWNrTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsIG1fbG9h
ZGVyLmdldCgpID09ICZsb2FkZXIpOwpAQCAtMTE0LDggKzEwOSw3IEBAIHZvaWQgTG9hZGFibGVU
ZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4dFRyYWNrTG9hZGVyJiBsb2FkZXIpCiAgICAg
ICAgIG1fY3Vlcy0+YWRkKFdURk1vdmUobmV3Q3VlKSk7CiAgICAgfQogCi0gICAgaWYgKGNsaWVu
dCgpKQotICAgICAgICBjbGllbnQoKS0+dGV4dFRyYWNrQWRkQ3VlcygqdGhpcywgKm1fY3Vlcyk7
CisgICAgVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKCptX2N1ZXMpOwogfQogCiB2b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKFRleHRUcmFja0xvYWRlciYgbG9h
ZGVyLCBib29sIGxvYWRpbmdGYWlsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmgKaW5kZXggMDhkZmFhZDI4ZGNkZDFkOGFiNWNiMGZiNmFlMmY4NjFi
ZTc5MDhiMy4uYjdmYjQzZjk3ZTA4ZTc3YjY5NmRjM2FkYWM4NGRkNmY0OWYxNzRjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaApAQCAtNTYsNyAr
NTYsNiBAQCBwcml2YXRlOgogCiAgICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgZmluYWw7Ci0gICAgRWxlbWVudCogZWxlbWVudCgpIGZp
bmFsOwogCiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5jcHAKaW5kZXggZTVlNTBiNDE5NTZlYjE0MTYxYjNhZjUyODM4MWE1NzVk
ZDBmMThjNS4uNWNlMjZlNmFkYTQwNWYwOWYzMWZmYzczODhjYTg4OTgzMGNjOGFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2lu
Y2x1ZGUgIkRhdGFDdWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tM
aXN0LmgiCkBAIC04OCwyMCArODcsMTkgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGZvcmNl
ZEtleXdvcmQoKQogCiBUZXh0VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCkK
IHsKLSAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRy
LCBudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJh
Y2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gb2ZmOwogfQogCiBUZXh0
VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0
aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCBudWxs
cHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBU
ZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSIsIGVtcHR5QXRv
bSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gYXV0
b21hdGljOwogfQogCi1UZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQotICAgIDogVHJhY2tCYXNl
KFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQorVGV4dFRyYWNrOjpU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgQXRvbVN0cmlu
ZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBj
b25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQorICAgIDogVHJh
Y2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6VGV4dFRyYWNrLCBpZCwgbGFiZWwsIGxhbmd1YWdl
KQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX2NsaWVudChjbGllbnQp
CiAgICAgLCBtX3RyYWNrVHlwZSh0eXBlKQogewogICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5
d29yZCgpKQpAQCAtMTE2LDkgKzExNCw5IEBAIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjCiAgICAg
ICAgIG1fa2luZCA9IEtpbmQ6Ok1ldGFkYXRhOwogfQogCi1SZWY8VGV4dFRyYWNrPiBUZXh0VHJh
Y2s6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBj
b25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0
cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQorUmVmPFRleHRUcmFjaz4g
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBr
aW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewotICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYo
Km5ldyBUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5ndWFn
ZSwgQWRkVHJhY2spKTsKKyAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgVGV4dFRy
YWNrKGRvY3VtZW50LCBraW5kLCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOwogICAg
IHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0K
QEAgLTEyNiw4ICsxMjQsOSBAQCBSZWY8VGV4dFRyYWNrPiBUZXh0VHJhY2s6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjbwogVGV4dFRyYWNrOjp+
VGV4dFRyYWNrKCkKIHsKICAgICBpZiAobV9jdWVzKSB7Ci0gICAgICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVz
KTsKKyAgICAgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICAgICAgfSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgo
KTsgKytpKQogICAgICAgICAgICAgbV9jdWVzLT5pdGVtKGkpLT5zZXRUcmFjayhudWxscHRyKTsK
ICAgICB9CkBAIC0xMzcsNiArMTM2LDIzIEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAgICAg
fQogfQogCitUZXh0VHJhY2tMaXN0KiBUZXh0VHJhY2s6OnRleHRUcmFja0xpc3QoKSBjb25zdAor
eworICAgIHJldHVybiBkb3duY2FzdDxUZXh0VHJhY2tMaXN0Pih0cmFja0xpc3QoKSk7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrOjphZGRDbGllbnQoVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFk
ZChjbGllbnQpOworfQorCit2b2lkIFRleHRUcmFjazo6Y2xlYXJDbGllbnQoVGV4dFRyYWNrQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsK
KyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7Cit9CisKIERvY3VtZW50JiBUZXh0VHJhY2s6
OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKQEAgLTIwMCwxOSArMjE2LDE1IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKEtpbmQgbmV3
S2luZCkKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VC
dWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGwsIHRoZW4gcXVldWUgYSB0
YXNrIHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBldmVudCBuYW1lZCBjaGFuZ2UgYXQgc291cmNl
QnVmZmVyLnRleHRUcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVyKQotICAgICAgICBtX3Nv
dXJjZUJ1ZmZlci0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8v
IDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0
aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQogICAgIC8vIHRoZSB0ZXh0VHJh
Y2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVt
ZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuc2NoZWR1
bGVDaGFuZ2VFdmVudCgpOwogI2VuZGlmCiAKICAgICBpZiAob2xkS2luZCAhPSBtX2tpbmQpIHsK
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtX2tpbmQpOwotICAgICAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQoKnRo
aXMpOworICAgICAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgewor
ICAgICAgICAgICAgY2xpZW50LnRleHRUcmFja0tpbmRDaGFuZ2VkKCp0aGlzKTsKKyAgICAgICAg
fSk7CiAgICAgfQogfQogCkBAIC0yNTIsOCArMjY0LDExIEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRN
b2RlKE1vZGUgbW9kZSkKIAogICAgIC8vIElmIG1vZGUgY2hhbmdlcyB0byBkaXNhYmxlZCwgcmVt
b3ZlIHRoaXMgdHJhY2sncyBjdWVzIGZyb20gdGhlIGNsaWVudAogICAgIC8vIGJlY2F1c2UgdGhl
eSB3aWxsIG5vIGxvbmdlciBiZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGN1ZXMoKSBmdW5jdGlvbi4K
LSAgICBpZiAobW9kZSA9PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2NsaWVudCAmJiBtX2N1ZXMpCi0g
ICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICBpZiAobW9kZSA9PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2N1ZXMpIHsKKyAgICAgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgICAgIGNsaWVudC50
ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAgICAgICAgfSk7CisgICAgfQog
CiAgICAgaWYgKG1vZGUgIT0gTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCkBAIC0yNjIsOCArMjc3
LDkgQEAgdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2RlKQogCiAgICAgbV9tb2RlID0g
bW9kZTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja01v
ZGVDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrTW9kZUNoYW5nZWQoKnRoaXMpOworICAg
IH0pOwogfQogCiBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQpAQCAtMjg1LDkg
KzMwMSwxMCBAQCB2b2lkIFRleHRUcmFjazo6cmVtb3ZlQWxsQ3VlcygpCiAKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+dGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7Ci0gICAgCisgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRU
cmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgIH0pOworCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgIG1fY3Vlcy0+aXRl
bShpKS0+c2V0VHJhY2sobnVsbHB0cik7CiAgICAgCkBAIC0zNDEsOCArMzU4LDkgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjphZGRDdWUoUmVmPFRleHRUcmFja0N1ZT4mJiBjdWUpCiAg
ICAgY3VlLT5zZXRUcmFjayh0aGlzKTsKICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkuYWRk
KGN1ZS5jb3B5UmVmKCkpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+
dGV4dFRyYWNrQWRkQ3VlKCp0aGlzLCBjdWUpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlz
LCBjdWVdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFja0FkZEN1ZSgq
dGhpcywgY3VlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0zNjYsOCArMzg0
LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3Vl
JiBjdWUpCiAgICAgbV9jdWVzLT5yZW1vdmUoY3VlKTsKICAgICBjdWUuc2V0SXNBY3RpdmUoZmFs
c2UpOwogICAgIGN1ZS5zZXRUcmFjayhudWxscHRyKTsKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGll
bnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFj
a1JlbW92ZUN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBA
IC00NjAsMzIgKzQ3OSwzMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBUZXh0VHJhY2s6OnJlbW92ZVJl
Z2lvbihWVFRSZWdpb24mIHJlZ2lvbikKIAogdm9pZCBUZXh0VHJhY2s6OmN1ZVdpbGxDaGFuZ2Uo
VGV4dFRyYWNrQ3VlJiBjdWUpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gVGhlIGN1ZSBtYXkgbmVlZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1l
ZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVlLCBtYXkgbmVlZCB0bwotICAgIC8vIGJlIHJlLXJl
bmRlcmVkLCBldGMsIHNvIHJlbW92ZSBpdCBiZWZvcmUgdGhlIG1vZGlmaWNhdGlvbi4uLgotICAg
IG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgbV9jbGllbnRz
LmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgLy8gVGhlIGN1ZSBtYXkgbmVl
ZCB0byBiZSByZXBvc2l0aW9uZWQgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBpbnRlcnZhbCB0cmVl
LCBtYXkgbmVlZCB0bworICAgICAgICAvLyBiZSByZS1yZW5kZXJlZCwgZXRjLCBzbyByZW1vdmUg
aXQgYmVmb3JlIHRoZSBtb2RpZmljYXRpb24uLi4KKyAgICAgICAgY2xpZW50LnRleHRUcmFja1Jl
bW92ZUN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBUZXh0VHJhY2s6OmN1ZURp
ZENoYW5nZShUZXh0VHJhY2tDdWUmIGN1ZSkKIHsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAg
ICByZXR1cm47Ci0KICAgICAvLyBNYWtlIHN1cmUgdGhlIFRleHRUcmFja0N1ZUxpc3Qgb3JkZXIg
aXMgdXAtdG8tZGF0ZS4KICAgICBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkudXBkYXRlQ3VlSW5k
ZXgoY3VlKTsKIAogICAgIC8vIC4uLiBhbmQgYWRkIGl0IGJhY2sgYWdhaW4uCi0gICAgbV9jbGll
bnQtPnRleHRUcmFja0FkZEN1ZSgqdGhpcywgY3VlKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
Jl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrQWRkQ3VlKCp0aGlz
LCBjdWUpOworICAgIH0pOwogfQogCiBpbnQgVGV4dFRyYWNrOjp0cmFja0luZGV4KCkKIHsKICAg
ICBpZiAoIW1fdHJhY2tJbmRleCkgewotICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50KQorICAg
ICAgICBpZiAoIW1fdGV4dFRyYWNrTGlzdCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICBtX3RyYWNrSW5kZXggPSBtX21lZGlhRWxlbWVudC0+ZW5zdXJlVGV4dFRyYWNrcygpLmdldFRy
YWNrSW5kZXgoKnRoaXMpOworICAgICAgICBtX3RyYWNrSW5kZXggPSBtX3RleHRUcmFja0xpc3Qt
PmdldFRyYWNrSW5kZXgoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4gbV90cmFja0luZGV4LnZh
bHVlKCk7CiB9CkBAIC01MTIsOSArNTI5LDkgQEAgVGV4dFRyYWNrQ3VlTGlzdCYgVGV4dFRyYWNr
OjplbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkKIGludCBUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxh
dGl2ZVRvUmVuZGVyZWRUcmFja3MoKQogewogICAgIGlmICghbV9yZW5kZXJlZFRyYWNrSW5kZXgp
IHsKLSAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgaWYgKCFtX3RleHRUcmFj
a0xpc3QpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgbV9yZW5kZXJlZFRyYWNrSW5k
ZXggPSBtX21lZGlhRWxlbWVudC0+ZW5zdXJlVGV4dFRyYWNrcygpLmdldFRyYWNrSW5kZXhSZWxh
dGl2ZVRvUmVuZGVyZWRUcmFja3MoKnRoaXMpOworICAgICAgICBtX3JlbmRlcmVkVHJhY2tJbmRl
eCA9IG1fdGV4dFRyYWNrTGlzdC0+Z2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNr
cygqdGhpcyk7CiAgICAgfQogICAgIHJldHVybiBtX3JlbmRlcmVkVHJhY2tJbmRleC52YWx1ZSgp
OwogfQpAQCAtNTk3LDcgKzYxNCw2IEBAIGNvbnN0IGNoYXIqIFRleHRUcmFjazo6YWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJUZXh0VHJhY2siOwogfQogCi0jaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKIHZvaWQgVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9t
U3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICAvLyAxMS4xIGxhbmd1YWdlLCBvbiBzZXR0aW5nOgpA
QCAtNjExLDE1ICs2MjcsMzUgQEAgdm9pZCBUZXh0VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKQogCiAgICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRy
aWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmly
ZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudGV4
dFRyYWNrcy4KLSAgICBpZiAobV9zb3VyY2VCdWZmZXIpCi0gICAgICAgIG1fc291cmNlQnVmZmVy
LT50ZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwotCiAgICAgLy8gNC4gUXVldWUg
YSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBUZXh0VHJh
Y2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAgICAgLy8gdGhlIHRleHRUcmFja3MgYXR0cmli
dXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgotICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKLSAg
ICAgICAgbWVkaWFFbGVtZW50KCktPmVuc3VyZVRleHRUcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAg
ICAgY2xpZW50LnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrOjpzZXRJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKK3sKKyAgICBUcmFj
a0Jhc2U6OnNldElkKGlkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrSWRDaGFuZ2VkKCp0aGlzKTsKKyAgICB9
KTsKK30KKwordm9pZCBUZXh0VHJhY2s6OnNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVs
KQoreworICAgIFRyYWNrQmFzZTo6c2V0TGFiZWwobGFiZWwpOworICAgIG1fY2xpZW50cy5mb3JF
YWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tMYWJl
bENoYW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFRleHRUcmFjazo6bmV3Q3Vlc0F2
YWlsYWJsZShjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBsaXN0KQoreworICAgIG1fY2xpZW50cy5m
b3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tBZGRD
dWVzKCp0aGlzLCBsaXN0KTsKKyAgICB9KTsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDc0NjMyZWE0
YzBkOWEwMzdhN2I2NjAxMTc3ZDM0YzlhOWMxNTNlNjIuLjhiMzE2ZTdhZGE0OWMzMDI4OTUyNDVi
MGE3MThlY2Q0ZDg5MjllMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApA
QCAtMzIsMzAgKzMyLDM2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW5j
bHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0xpc3Q7
CiBjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OwogY2xhc3MgVlRUUmVnaW9uOwogY2xhc3MgVlRUUmVn
aW9uTGlzdDsKIAotY2xhc3MgVGV4dFRyYWNrQ2xpZW50IHsKK2NsYXNzIFRleHRUcmFja0NsaWVu
dCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0VHJhY2tDbGllbnQ+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5UZXh0VHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrSWRDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja0xhYmVsQ2hhbmdlZChUZXh0VHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBU
ZXh0VHJhY2tDdWVMaXN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShU
ZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNr
UmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIHsgfQogfTsKIAogY2xhc3MgVGV4dFRy
YWNrIDogcHVibGljIFRyYWNrQmFzZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4
dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHRUcmFjaz4gY3JlYXRlKERvY3Vt
ZW50KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRv
bVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBs
YW5ndWFnZSk7CisgICAgc3RhdGljIFJlZjxUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCosIGNv
bnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3Ry
aW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOwogICAgIHZpcnR1YWwgflRl
eHRUcmFjaygpOwogCiAgICAgc3RhdGljIFRleHRUcmFjayYgY2FwdGlvbk1lbnVPZmZJdGVtKCk7
CkBAIC02NCw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
c3VidGl0bGVzS2V5d29yZCgpOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChj
b25zdCBBdG9tU3RyaW5nJik7CiAKKyAgICBUZXh0VHJhY2tMaXN0KiB0ZXh0VHJhY2tMaXN0KCkg
Y29uc3Q7CisKICAgICBlbnVtIGNsYXNzIEtpbmQgeyBTdWJ0aXRsZXMsIENhcHRpb25zLCBEZXNj
cmlwdGlvbnMsIENoYXB0ZXJzLCBNZXRhZGF0YSwgRm9yY2VkIH07CiAgICAgS2luZCBraW5kKCkg
Y29uc3Q7CiAKQEAgLTg4LDcgKzk2LDggQEAgcHVibGljOgogCiAgICAgVGV4dFRyYWNrQ3VlTGlz
dCogY3Vlc0ludGVybmFsKCkgY29uc3QgeyByZXR1cm4gbV9jdWVzLmdldCgpOyB9CiAKLSAgICB2
b2lkIGNsZWFyQ2xpZW50KCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KKyAgICB2
b2lkIGFkZENsaWVudChUZXh0VHJhY2tDbGllbnQmKTsKKyAgICB2b2lkIGNsZWFyQ2xpZW50KFRl
eHRUcmFja0NsaWVudCYpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWRkQ3VlKFJlZjxUZXh0
VHJhY2tDdWU+JiYpOwogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlQ3VlKFRl
eHRUcmFja0N1ZSYpOwpAQCAtMTIyLDkgKzEzMSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
bW92ZUFsbEN1ZXMoKTsKIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdm9pZCBzZXRM
YW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7Ci0jZW5kaWYKKyAgICB2b2lkIHNl
dExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKworICAgIHZvaWQgc2V0SWQoY29u
c3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbVN0
cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzSW5iYW5kKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIApAQCAtMTM5LDIwICsxNDksMjIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDdWVzTm90SW5UaW1lUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcyYpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0
VHJhY2tDbGllbnQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBp
ZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlLCBU
ZXh0VHJhY2tUeXBlKTsKKyAgICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3Ry
aW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOwog
CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7Ci0gICAgVGV4dFRyYWNrQ2xpZW50KiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgYm9vbCBoYXNDdWUoVGV4dFRyYWNr
Q3VlJiwgVGV4dFRyYWNrQ3VlOjpDdWVNYXRjaFJ1bGVzID0gVGV4dFRyYWNrQ3VlOjpNYXRjaEFs
bEZpZWxkcyk7CiAgICAgdm9pZCBzZXRLaW5kKEtpbmQpOwogCisgICAgdm9pZCBuZXdDdWVzQXZh
aWxhYmxlKGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKTsKKwogICAgIFJlZlB0cjxUZXh0VHJhY2tD
dWVMaXN0PiBtX2N1ZXM7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbV9zdHls
ZVNoZWV0czsKKyAgICBXZWFrSGFzaFNldDxUZXh0VHJhY2tDbGllbnQ+IG1fY2xpZW50czsKIAog
cHJpdmF0ZToKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFRleHRUcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCBvdmVy
cmlkZTsKIApAQCAtMTY2LDYgKzE3OCw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogbG9n
Q2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlRleHRUcmFjayI7IH0KICNlbmRp
ZgogCisgICAgV2Vha1B0cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja0xpc3Q7CisKICAgICBW
VFRSZWdpb25MaXN0JiBlbnN1cmVWVFRSZWdpb25MaXN0KCk7CiAgICAgUmVmUHRyPFZUVFJlZ2lv
bkxpc3Q+IG1fcmVnaW9uczsKIApAQCAtMTczLDcgKzE4Nyw2IEBAIHByaXZhdGU6CiAKICAgICBN
b2RlIG1fbW9kZSB7IE1vZGU6OkRpc2FibGVkIH07CiAgICAgS2luZCBtX2tpbmQgeyBLaW5kOjpT
dWJ0aXRsZXMgfTsKLSAgICBUZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OwogICAgIFRleHRUcmFj
a1R5cGUgbV90cmFja1R5cGU7CiAgICAgUmVhZGluZXNzU3RhdGUgbV9yZWFkaW5lc3NTdGF0ZSB7
IE5vdExvYWRlZCB9OwogICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX3RyYWNrSW5kZXg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKaW5kZXggYWExYjA0YTI3MmM5OTJmMTJl
Y2I3MTA4M2U2NzA5NTg4ZWMyYjg4OC4uMmU1ZjU3MmY0MTAyNWVmNjgxZWQ3MTNmMDFmZjZiYjU4
ZjY2NDA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbApAQCAtMzAs
NyArMzAsNyBAQCBlbnVtIFRleHRUcmFja0tpbmQgeyAic3VidGl0bGVzIiwgImNhcHRpb25zIiwg
ImRlc2NyaXB0aW9ucyIsICJjaGFwdGVycyIsICJtZXRhZAogICAgIEFjdGl2ZURPTU9iamVjdCwK
ICAgICBDb25kaXRpb25hbD1WSURFTywKICAgICBFeHBvcnRUb1dyYXBwZWRGdW5jdGlvbiwKLSAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKKyAgICBHZW5lcmF0ZUlzUmVh
Y2hhYmxlLAogICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBTa2lwVlRhYmxlVmFsaWRh
dGlvbiwKICAgICBFeHBvc2VkPVdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5jcHAKaW5kZXggZmY5YTE0OTljZDUxNjg4Y2E4ZGJjMzBmMDFkYjRiNmM2MmI5
NmRjYy4uMjI5MjY1NzM3YWNjYzBhMzBjMmQxNzk4ZWEwODFjZWJhNGRjN2RkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRyYWNrLmgiCkBAIC0zOSwy
NyArMzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoVGV4dFRyYWNrTGlzdCk7CiAKLVRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QoV2Vh
a1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQotICAgIDogVHJhY2tMaXN0QmFzZShlbGVtZW50LCBjb250ZXh0KQorVGV4dFRyYWNr
TGlzdDo6VGV4dFRyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAg
IDogVHJhY2tMaXN0QmFzZShjb250ZXh0LCBUcmFja0xpc3RCYXNlOjpUZXh0VHJhY2tMaXN0KQog
ewogfQogCiBUZXh0VHJhY2tMaXN0Ojp+VGV4dFRyYWNrTGlzdCgpCiB7Ci0gICAgY2xlYXJFbGVt
ZW50KCk7Ci19Ci0KLXZvaWQgVGV4dFRyYWNrTGlzdDo6Y2xlYXJFbGVtZW50KCkKLXsKLSAgICBU
cmFja0xpc3RCYXNlOjpjbGVhckVsZW1lbnQoKTsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9l
bGVtZW50VHJhY2tzKSB7Ci0gICAgICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7
Ci0gICAgICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHRy
YWNrIDogbV9hZGRUcmFja1RyYWNrcykgewotICAgICAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50
KG51bGxwdHIpOwotICAgICAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKLSAgICB9CiB9CiAKIHVu
c2lnbmVkIFRleHRUcmFja0xpc3Q6Omxlbmd0aCgpIGNvbnN0CkBAIC0yMDMsOCArMTg4LDggQEAg
dm9pZCBUZXh0VHJhY2tMaXN0OjphcHBlbmQoUmVmPFRleHRUcmFjaz4mJiB0cmFjaykKIAogICAg
IGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRyYWNrKTsKIAotICAgIEFTU0VSVCgh
dHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBtZWRpYUVs
ZW1lbnQoKSk7Ci0gICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQoKSk7Cisg
ICAgaWYgKCF0cmFjay0+dHJhY2tMaXN0KCkpCisgICAgICAgIHRyYWNrLT5zZXRUcmFja0xpc3Qo
KnRoaXMpOwogCiAgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KFdURk1vdmUodHJhY2spKTsKIH0K
QEAgLTIzMyw4ICsyMTgsOCBAQCB2b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2Um
IHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQpCiAKICAgICBpbnZhbGlkYXRlVHJhY2tJbmRleGVz
QWZ0ZXJUcmFjayh0ZXh0VHJhY2spOwogCi0gICAgQVNTRVJUKCF0cmFjay5tZWRpYUVsZW1lbnQo
KSB8fCAhZWxlbWVudCgpIHx8IHRyYWNrLm1lZGlhRWxlbWVudCgpID09IGVsZW1lbnQoKSk7Ci0g
ICAgdHJhY2suc2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOworICAgIGlmICh0cmFjay50cmFja0xp
c3QoKSA9PSB0aGlzKQorICAgICAgICB0cmFjay5jbGVhclRyYWNrTGlzdCgpOwogCiAgICAgUmVm
PFRyYWNrQmFzZT4gdHJhY2tSZWYgPSAqKCp0cmFja3MpW2luZGV4XTsKICAgICB0cmFja3MtPnJl
bW92ZShpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCmlu
ZGV4IGNkMmZmN2JkMGU2ZjVkMzJlZDlhMGNjYTI1NWFkNDhhZDZiYzU4OTkuLjcwMjFlZDM2OGE1
NThhODBkZjQwMDBlM2NhZWJiYmZiZDM1YTNiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFZJREVPKQog
CiAjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiwxNiArMzcsMTQgQEAgY2xhc3MgVGV4dFRy
YWNrOwogY2xhc3MgVGV4dFRyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRUcmFja0xpc3QpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8VGV4dFRyYWNrTGlzdD4gY3JlYXRlKFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVu
dD4gZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBzdGF0aWMg
UmVmPFRleHRUcmFja0xpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIHsKLSAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tMaXN0
KGVsZW1lbnQsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBU
ZXh0VHJhY2tMaXN0KGNvbnRleHQpKTsKICAgICAgICAgbGlzdC0+c3VzcGVuZElmTmVlZGVkKCk7
CiAgICAgICAgIHJldHVybiBsaXN0OwogICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tMaXN0
KCk7CiAKLSAgICB2b2lkIGNsZWFyRWxlbWVudCgpIG92ZXJyaWRlOwotCiAgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IGdldFRyYWNrSW5kZXgoVGV4dFRyYWNr
Jik7CiAgICAgaW50IGdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoVGV4dFRy
YWNrJik7CkBAIC01OCwxOSArNTcsMjcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKFJlZjxU
ZXh0VHJhY2s+JiYpOwogICAgIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSYsIGJvb2wgc2NoZWR1bGVF
dmVudCA9IHRydWUpIG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXREdXJhdGlvbihNZWRpYVRpbWUg
ZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CisgICAgY29uc3QgTWVkaWFUaW1l
JiBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKwogICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBUZXh0VHJhY2tMaXN0KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBUZXh0VHJhY2tM
aXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIGludmFsaWRhdGVUcmFja0luZGV4
ZXNBZnRlclRyYWNrKFRleHRUcmFjayYpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+
PiBtX2FkZFRyYWNrVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNlPj4gbV9lbGVt
ZW50VHJhY2tzOworICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRleHRU
cmFja0xpc3QpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRyYWNrTGlz
dEJhc2UmIHRyYWNrTGlzdCkgeyByZXR1cm4gdHJhY2tMaXN0LnR5cGUoKSA9PSBXZWJDb3JlOjpU
cmFja0xpc3RCYXNlOjpUZXh0VHJhY2tMaXN0OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VO
RCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmlkbAppbmRleCBkZjljYmUxMzBiY2E3M2JhNjQwZjk3OGM5MWVmMTQ0
NGMyMTExZTdhLi5hN2VmMzQ0YWIxYzFmYjFkZTg4OTc3OTBmNGIzMjg0YTk3ZjZlZmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKQEAgLTI2LDggKzI2
LDYgQEAKIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0g
ICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJvb3QsCi0gICAgR2VuZXJhdGVBZGRP
cGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBUZXh0VHJhY2tMaXN0
IDogRXZlbnRUYXJnZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAppbmRleCBlOGY5NWY5
MzMxMDNhZDg0MmFkODI3MTMzNjJmMzUxZjZkZDg3NzNkLi5iZGM4OGFiNTA0NmU5MWNmZGMxMzE0
NDE5NzM5MDQ1ZDA2ODBkMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwCkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKIAogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiVHJhY2tMaXN0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShWSURFTykKIAotI2lu
Y2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgaW50IHNfdW5pcXVlSWQgPSAwOwpAQCAtNDgsOCArNDgsOSBAQCBzdGF0aWMgUmVmUHRyPExv
Z2dlcj4mIG51bGxMb2dnZXIoKQogfQogI2VuZGlmCiAKLVRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5
cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBj
b25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlk
KQorVHJhY2tCYXNlOjpUcmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
VHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWws
IGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIoY29udGV4dCkKKyAgICAsIG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlkKQogICAgICwgbV9p
ZChpZCkKICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpA
QCAtNzAsMjEgKzcxLDI2IEBAIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjCiAjZW5kaWYKIH0KIAot
RWxlbWVudCogVHJhY2tCYXNlOjplbGVtZW50KCkKK3ZvaWQgVHJhY2tCYXNlOjpzZXRUcmFja0xp
c3QoVHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KQogewotICAgIHJldHVybiBtX21lZGlhRWxlbWVu
dC5nZXQoKTsKKyAgICBtX3RyYWNrTGlzdCA9IG1ha2VXZWFrUHRyKHRyYWNrTGlzdCk7CiB9CiAK
LXZvaWQqIFRyYWNrQmFzZTo6b3BhcXVlUm9vdCgpCit2b2lkIFRyYWNrQmFzZTo6Y2xlYXJUcmFj
a0xpc3QoKQogewotICAgIGlmIChhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIGFzc29jaWF0ZWRFbGVtZW50LT5vcGFxdWVSb290KCk7Ci0gICAgcmV0
dXJuIHRoaXM7CisgICAgbV90cmFja0xpc3QgPSBudWxscHRyOworfQorCitUcmFja0xpc3RCYXNl
KiBUcmFja0Jhc2U6OnRyYWNrTGlzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhY2tMaXN0
LmdldCgpOwogfQogCi12b2lkIFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4gZWxlbWVudCkKK3ZvaWQqIFRyYWNrQmFzZTo6b3BhcXVlUm9vdCgpCiB7
Ci0gICAgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50OworICAgIGlmIChhdXRvIHRyYWNrTGlzdCA9
IHRoaXMtPnRyYWNrTGlzdCgpKQorICAgICAgICByZXR1cm4gdHJhY2tMaXN0LT5vcGFxdWVSb290
KCk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIC8vIFNlZTogaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL2JjcDQ3I3NlY3Rpb24tMi4xCkBAIC0xNDgsOCArMTU0LDggQEAgdm9pZCBUcmFja0Jh
c2U6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiAgICAgbV92YWxp
ZEJDUDQ3TGFuZ3VhZ2UgPSBlbXB0eUF0b20oKTsKIAotICAgIGF1dG8gZWxlbWVudCA9IHRoaXMt
PmVsZW1lbnQoKTsKLSAgICBpZiAoIWVsZW1lbnQpCisgICAgYXV0byBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgU3RyaW5nIG1lc3NhZ2U7CkBAIC0xNTgsNyArMTY0LDcgQEAgdm9pZCBUcmFja0Jhc2U6
OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogICAgIGVsc2UKICAgICAg
ICAgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBsYW5ndWFnZSAnIiwgbGFuZ3VhZ2UsICInIGlz
IG5vdCBhIHZhbGlkIEJDUCA0NyBsYW5ndWFnZSB0YWcuIik7CiAKLSAgICBlbGVtZW50LT5kb2N1
bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKTsKKyAgICBjb250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2Fn
ZSk7CiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE3NCw4ICsxODAsOCBAQCBX
VEZMb2dDaGFubmVsJiBUcmFja0Jhc2U6OmxvZ0NoYW5uZWwoKSBjb25zdAogfQogI2VuZGlmCiAK
LU1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3Vh
Z2UpCi0gICAgOiBUcmFja0Jhc2UodHlwZSwgaWQsIGxhYmVsLCBsYW5ndWFnZSkKK01lZGlhVHJh
Y2tCYXNlOjpNZWRpYVRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBU
eXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCisgICAgOiBUcmFja0Jhc2UoY29udGV4dCwgdHlw
ZSwgaWQsIGxhYmVsLCBsYW5ndWFnZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tCYXNlLmgKaW5kZXggYWY0NTQ0MWQ5Mzc5NDA5NTRjNTZiNjljNWExYWNmYjQxYjVhMmUyMi4u
ZTNkYjQ0M2RjOWEzYjg4NjdiYjBhMGNkNzUxMTRlMjZkZmVjM2RiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0yNywxOCArMjcsMTkgQEAKIAogI2lmIEVOQUJMRShW
SURFTykKIAorI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEVsZW1lbnQ7Ci1jbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgU291cmNlQnVmZmVyOwor
Y2xhc3MgVHJhY2tMaXN0QmFzZTsKIAogY2xhc3MgVHJhY2tCYXNlCiAgICAgOiBwdWJsaWMgUmVm
Q291bnRlZDxUcmFja0Jhc2U+CisgICAgLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVy
CiAjZW5kaWYKQEAgLTQ5LDIyICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsgQmFz
ZVRyYWNrLCBUZXh0VHJhY2ssIEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2sgfTsKICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIHZpcnR1YWwgRWxlbWVudCogZWxl
bWVudCgpOwotICAgIHZvaWQqIG9wYXF1ZVJvb3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVk
aWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pOwotICAgIFdlYWtQdHI8SFRNTE1l
ZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLQog
ICAgIHZpcnR1YWwgQXRvbVN0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9Ci0K
ICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZv
aWQgc2V0TGFiZWwoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9
Ci0KICAgICBBdG9tU3RyaW5nIHZhbGlkQkNQNDdMYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsaWRCQ1A0N0xhbmd1YWdlOyB9CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFuZ3VhZ2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3Qg
QXRvbVN0cmluZyYpOwotCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAwOwogCiAg
ICAgdmlydHVhbCBpbnQgdW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZUlkOyB9CiAK
QEAgLTczLDYgKzYyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNvdXJjZUJ1ZmZlcihTb3Vy
Y2VCdWZmZXIqIGJ1ZmZlcikgeyBtX3NvdXJjZUJ1ZmZlciA9IGJ1ZmZlcjsgfQogI2VuZGlmCiAK
KyAgICB2b2lkIHNldFRyYWNrTGlzdChUcmFja0xpc3RCYXNlJik7CisgICAgdm9pZCBjbGVhclRy
YWNrTGlzdCgpOworICAgIFRyYWNrTGlzdEJhc2UqIHRyYWNrTGlzdCgpIGNvbnN0OworICAgIHZv
aWQqIG9wYXF1ZVJvb3QoKTsKKwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAw
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC04Myw5ICs3NywxMSBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1
YWdlKTsKKyAgICBUcmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmlu
ZyYgbGFuZ3VhZ2UpOwogCi0gICAgV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxl
bWVudCB7IG51bGxwdHIgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRvbVN0cmlu
ZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldExhYmVsKGNvbnN0IEF0
b21TdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQogICAgIFNvdXJjZUJ1ZmZlciogbV9zb3VyY2VCdWZmZXIgeyBudWxscHRyIH07CkBAIC0xMDIs
NiArOTgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwog
ICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKICNlbmRpZgorICAg
IFdlYWtQdHI8VHJhY2tMaXN0QmFzZT4gbV90cmFja0xpc3Q7CiB9OwogCiBjbGFzcyBNZWRpYVRy
YWNrQmFzZSA6IHB1YmxpYyBUcmFja0Jhc2UgewpAQCAtMTEwLDcgKzEwNyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9tU3RyaW5nJik7CiAKIHByb3RlY3Rl
ZDoKLSAgICBNZWRpYVRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBNZWRp
YVRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFn
ZSk7CiAKICAgICB2b2lkIHNldEtpbmRJbnRlcm5hbChjb25zdCBBdG9tU3RyaW5nJik7CiAKQEAg
LTEyMCw2ICsxMTcsMTEgQEAgcHJpdmF0ZToKICAgICBBdG9tU3RyaW5nIG1fa2luZDsKIH07CiAK
K2lubGluZSB2b2lkKiByb290KFRyYWNrQmFzZSogdHJhY2spCit7CisgICAgcmV0dXJuIHRyYWNr
LT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAppbmRleCAwMTNhMjNj
OTgxYmFlOWEwOTRlMDM3ZmNhMDI2NDkxNDQ4MTUzNDliLi4wZjA1MzUzMzdmZmZlMWJlNjAzNWEx
N2JiMzYyMWM4NGMxNjk0NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tM
aXN0QmFzZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgi
CiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUcmFja0V2
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTM5LDM3ICszOCwy
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChU
cmFja0xpc3RCYXNlKTsKIAotVHJhY2tMaXN0QmFzZTo6VHJhY2tMaXN0QmFzZShXZWFrUHRyPEhU
TUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CitUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFR5cGUgdHlwZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwg
bV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBBU1NFUlQoIWNv
bnRleHQgfHwgaXM8RG9jdW1lbnQ+KGNvbnRleHQpKTsKIH0KIAogVHJhY2tMaXN0QmFzZTo6flRy
YWNrTGlzdEJhc2UoKQogewotICAgIGNsZWFyRWxlbWVudCgpOwogfQogCi12b2lkIFRyYWNrTGlz
dEJhc2U6OmNsZWFyRWxlbWVudCgpCit2b2lkKiBUcmFja0xpc3RCYXNlOjpvcGFxdWVSb290KCkK
IHsKLSAgICBtX2VsZW1lbnQgPSBudWxscHRyOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2lu
YmFuZFRyYWNrcykgewotICAgICAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwot
ICAgICAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKLSAgICB9Ci19Ci0KLUVsZW1lbnQqIFRyYWNr
TGlzdEJhc2U6OmVsZW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7
Ci19Ci0KLXZvaWQqIFRyYWNrTGlzdEJhc2U6Om9wYXF1ZVJvb3QoKSBjb25zdAotewotICAgIGlm
IChhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGFz
c29jaWF0ZWRFbGVtZW50LT5vcGFxdWVSb290KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAg
aWYgKGF1dG8qIHJvb3RPYnNlcnZlciA9IG1fb3BhcXVlUm9vdE9ic2VydmVyLmdldCgpKQorICAg
ICAgICByZXR1cm4gKCpyb290T2JzZXJ2ZXIpKCk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIHVu
c2lnbmVkIFRyYWNrTGlzdEJhc2U6Omxlbmd0aCgpIGNvbnN0CkBAIC04MywxMCArNjYsOCBAQCB2
b2lkIFRyYWNrTGlzdEJhc2U6OnJlbW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxl
RXZlbnQpCiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAodHJhY2subWVkaWFFbGVtZW50KCkpIHsKLSAgICAgICAgQVNTRVJUKHRyYWNrLm1lZGlh
RWxlbWVudCgpID09IG1fZWxlbWVudCk7Ci0gICAgICAgIHRyYWNrLnNldE1lZGlhRWxlbWVudChu
dWxscHRyKTsKLSAgICB9CisgICAgaWYgKHRyYWNrLnRyYWNrTGlzdCgpID09IHRoaXMpCisgICAg
ICAgIHRyYWNrLmNsZWFyVHJhY2tMaXN0KCk7CiAKICAgICBSZWY8VHJhY2tCYXNlPiB0cmFja1Jl
ZiA9ICptX2luYmFuZFRyYWNrc1tpbmRleF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0xpc3RCYXNlLmgKaW5kZXggZmEwMGY4NjBmYmY5MDhkM2QyMDc3ZTFkMmRiODYyOWIyMGE0
MmQ5OS4uOWQzZTY4MWU3ZGU0YTYxOTRiNjg2NzBmNTRkZjU1ZTYyMmJiOWUyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKQEAgLTI5LDE0ICsyOSwxMyBAQAog
CiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
KyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBFbGVtZW50
OwogY2xhc3MgVHJhY2tCYXNlOwogCiBjbGFzcyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNv
dW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKQEAgLTQ0LDYgKzQzLDkgQEAgY2xhc3MgVHJhY2tMaXN0
QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW4KIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UcmFja0xpc3RCYXNlKCk7CiAKKyAgICBl
bnVtIFR5cGUgeyBCYXNlVHJhY2tMaXN0LCBUZXh0VHJhY2tMaXN0LCBBdWRpb1RyYWNrTGlzdCwg
VmlkZW9UcmFja0xpc3QgfTsKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KKwogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGNvbnRhaW5zKFRyYWNrQmFzZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
VHJhY2tCYXNlJiwgYm9vbCBzY2hlZHVsZUV2ZW50ID0gdHJ1ZSk7CkBAIC01NCwxMCArNTYsMTAg
QEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT46OmRlcmVmOwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFbGVtZW50KCk7Ci0gICAg
RWxlbWVudCogZWxlbWVudCgpIGNvbnN0OwotICAgIHZvaWQqIG9wYXF1ZVJvb3QoKSBjb25zdDsK
LSAgICBXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudDsgfQorICAgIHZvaWQqIG9wYXF1ZVJvb3QoKTsKKworICAgIHVzaW5nIE9w
YXF1ZVJvb3RPYnNlcnZlciA9IFdURjo6T2JzZXJ2ZXI8dm9pZCooKT47CisgICAgdm9pZCBzZXRP
cGFxdWVSb290T2JzZXJ2ZXIoY29uc3QgT3BhcXVlUm9vdE9ic2VydmVyJiBvYnNlcnZlcikgeyBt
X29wYXF1ZVJvb3RPYnNlcnZlciA9IG1ha2VXZWFrUHRyKG9ic2VydmVyKTsgfTsKIAogICAgIC8v
IE5lZWRzIHRvIGJlIHB1YmxpYyBzbyB0cmFja3MgY2FuIGNhbGwgaXQKICAgICB2b2lkIHNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKQEAgLTY2LDcgKzY4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNB
bnlUcmFja0VuYWJsZWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFRyYWNrTGlzdEJhc2Uo
V2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAg
IFRyYWNrTGlzdEJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUpOwogCiAgICAgdm9p
ZCBzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUmVmPFRyYWNrQmFzZT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZVJlbW92ZVRyYWNrRXZlbnQoUmVmPFRyYWNrQmFzZT4mJik7CkBAIC04MCwxMCArODIsMTYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQog
ICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgV2Vh
a1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgVHlwZSBtX3R5cGU7CisgICAg
V2Vha1B0cjxPcGFxdWVSb290T2JzZXJ2ZXI+IG1fb3BhcXVlUm9vdE9ic2VydmVyOwogICAgIGJv
b2wgbV9pc0NoYW5nZUV2ZW50U2NoZWR1bGVkIHsgZmFsc2UgfTsKIH07CiAKK2lubGluZSB2b2lk
KiByb290KFRyYWNrTGlzdEJhc2UqIHRyYWNrTGlzdCkKK3sKKyAgICByZXR1cm4gdHJhY2tMaXN0
LT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlk
ZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCmlu
ZGV4IGVkNzU1YTI4MGVmM2Y4M2FhOTE2ZTIxOWMxMjFiMGQ3YWI0OWIzYzYuLjk3ZjAxYWNjNjU5
YTBkYzBlNTFkMGVlMThkMDM2NDAzNjE5YWNmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQog
Ci0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tMaXN0
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTgwLDkgKzc5LDggQEAg
Y29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQogICAgIHJl
dHVybiBjb21tZW50YXJ5OwogfQogCi1WaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFZpZGVvVHJhY2tD
bGllbnQmIGNsaWVudCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IE1l
ZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQo
KSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQotICAgICwg
bV9jbGllbnQoJmNsaWVudCkKK1ZpZGVvVHJhY2s6OlZpZGVvVHJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICA6
IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFj
a1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFn
ZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKICAgICAsIG1fc2VsZWN0ZWQodHJh
Y2tQcml2YXRlLnNlbGVjdGVkKCkpCiB7CkBAIC0xMzAsOCArMTI4LDIxIEBAIHZvaWQgVmlkZW9U
cmFjazo6c2V0U2VsZWN0ZWQoY29uc3QgYm9vbCBzZWxlY3RlZCkKICAgICBtX3NlbGVjdGVkID0g
c2VsZWN0ZWQ7CiAgICAgbV9wcml2YXRlLT5zZXRTZWxlY3RlZChzZWxlY3RlZCk7CiAKLSAgICBp
ZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgewor
ICAgICAgICBjbGllbnQudmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7
Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6YWRkQ2xpZW50KFZpZGVvVHJhY2tDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2Ns
aWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6Y2xlYXJDbGllbnQoVmlk
ZW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMo
Y2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCiBzaXplX3QgVmlk
ZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCkBAIC0xNDIsMTYgKzE1MywyNSBAQCBzaXplX3Qg
VmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCiB2b2lkIFZpZGVvVHJhY2s6OnNlbGVjdGVk
Q2hhbmdlZChib29sIHNlbGVjdGVkKQogewogICAgIHNldFNlbGVjdGVkKHNlbGVjdGVkKTsKKyAg
ICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGll
bnQudmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQg
VmlkZW9UcmFjazo6aWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGlkKQogewogICAgIHNldElk
KGlkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAg
ICAgICBjbGllbnQudmlkZW9UcmFja0lkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZv
aWQgVmlkZW9UcmFjazo6bGFiZWxDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsKQogewog
ICAgIHNldExhYmVsKGxhYmVsKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8m
IGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja0xhYmVsQ2hhbmdlZCgqdGhpcyk7
CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKQpAQCAtMTYxLDE0ICsxODEsMTEgQEAgdm9pZCBWaWRlb1RyYWNr
OjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgVmlk
ZW9UcmFjazo6d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0ciht
ZWRpYUVsZW1lbnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47
Ci0gICAgZWxlbWVudC0+cmVtb3ZlVmlkZW9UcmFjaygqdGhpcyk7CisgICAgbV9jbGllbnRzLmZv
ckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LndpbGxSZW1vdmVW
aWRlb1RyYWNrKCp0aGlzKTsKKyAgICB9KTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
Ci0KIHZvaWQgVmlkZW9UcmFjazo6c2V0S2luZChjb25zdCBBdG9tU3RyaW5nJiBraW5kKQogewog
ICAgIC8vIDEwLjEga2luZCwgb24gc2V0dGluZzoKQEAgLTE4MiwxMiArMTk5LDExIEBAIHZvaWQg
VmlkZW9UcmFjazo6c2V0S2luZChjb25zdCBBdG9tU3RyaW5nJiBraW5kKQogCiAgICAgLy8gMy4g
SWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3QgbnVsbCwg
dGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5hbWVkIGNo
YW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVy
KQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBu
YW1lZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2VkIGJ5CiAg
ICAgLy8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4K
LSAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgY2xpZW50LnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CkBAIC0xOTksNTQgKzIxNSw0NSBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldExhbmd1YWdlKGNvbnN0
IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogICAgIC8vIHNoYXJlZCBiZXR3ZWVuIGFsbCB0cmFja3Mg
dGhhdCBzdXBwb3J0IHNldHRpbmcgbGFuZ3VhZ2UuCiAKICAgICAvLyAyLiBVcGRhdGUgdGhpcyBh
dHRyaWJ1dGUgdG8gdGhlIG5ldyB2YWx1ZS4KLSAgICBNZWRpYVRyYWNrQmFzZTo6c2V0TGFuZ3Vh
Z2UobGFuZ3VhZ2UpOworICAgIFRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOwogCiAg
ICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBu
b3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50
IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291
cmNlQnVmZmVyKQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVs
ZUNoYW5nZUV2ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBs
ZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVu
Y2VkIGJ5CiAgICAgLy8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlh
RWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVtZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgp
LT5lbnN1cmVWaWRlb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBtX2NsaWVu
dHMuZm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFj
a0xhbmd1YWdlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKLSNlbmRpZgotCiB2b2lkIFZp
ZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAgc3dpdGNoIChtX3ByaXZh
dGUtPmtpbmQoKSkgewogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkFsdGVybmF0aXZlOgot
ICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkp
OworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNhcHRpb25zOgotICAg
ICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpOworICAg
ICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok1haW46Ci0gICAgICAgIHNldEtpbmRJ
bnRlcm5hbChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRl
b1RyYWNrOjptYWluS2V5d29yZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9U
cmFja1ByaXZhdGU6OlNpZ246Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpz
aWduS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzaWduS2V5d29yZCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1YnRpdGxl
czoKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tleXdvcmQo
KSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNvbW1lbnRhcnk6Ci0g
ICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsK
KyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok5vbmU6Ci0gICAgICAgIHNl
dEtpbmRJbnRlcm5hbChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgc2V0S2luZChlbXB0eVN0cmlu
ZygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBWaWRlb1RyYWNrOjpzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFF
bGVtZW50PiBlbGVtZW50KQotewotICAgIFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50KGVsZW1l
bnQpOwotfQotCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIFZpZGVvVHJhY2s6OnNl
dExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKaW5kZXggMTc5ZTcxM2JjMzY2
OWU1ZDQ0ODQxN2U0MmJlMjliYjEwYzM5MTg4OC4uZWY4NDg4ZTdiNTk4MWYxMzE3MjJiZmJkNjc2
ZDZmNGIxNmRmNTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKQEAg
LTMwLDIzICszMCwzMCBAQAogCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAjaW5jbHVkZSAiVmlk
ZW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYURlc2NyaXB0aW9uOwogY2xhc3MgVmlkZW9UcmFj
azsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0OwogCi1jbGFzcyBWaWRlb1RyYWNrQ2xpZW50IHsKK2Ns
YXNzIFZpZGVvVHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VmlkZW9UcmFja0Ns
aWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0lkQ2hhbmdlZChWaWRlb1RyYWNr
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNr
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tMYWJlbENoYW5nZWQoVmlkZW9UcmFj
ayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVv
VHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChW
aWRlb1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrKFZp
ZGVvVHJhY2smKSB7IH0KIH07CiAKIGNsYXNzIFZpZGVvVHJhY2sgZmluYWwgOiBwdWJsaWMgTWVk
aWFUcmFja0Jhc2UsIHByaXZhdGUgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFjaz4gY3JlYXRlKFZpZGVvVHJhY2tDbGllbnQmIGNsaWVu
dCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICBzdGF0aWMgUmVmPFZpZGVv
VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWaWRlb1RyYWNr
UHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBWaWRlb1RyYWNrKGNvbnRleHQsIHRyYWNrUHJpdmF0ZSkpOwogICAgIH0KICAg
ICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CiAKQEAgLTYwLDI2ICs2NywyMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CiAKLSAgICB2b2lkIGNsZWFyQ2xpZW50
KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICBWaWRlb1RyYWNrQ2xpZW50KiBj
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZvaWQgYWRkQ2xpZW50KFZp
ZGVvVHJhY2tDbGllbnQmKTsKKyAgICB2b2lkIGNsZWFyQ2xpZW50KFZpZGVvVHJhY2tDbGllbnQm
KTsKIAogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CiAKLSNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQogICAgIHZvaWQgc2V0S2luZChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAg
dm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7Ci0jZW5kaWYKIAogICAg
IGNvbnN0IE1lZGlhRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lk
IHNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZhdGUmKTsKLSAgICB2b2lkIHNldE1lZGlhRWxlbWVu
dChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+KSBvdmVycmlkZTsKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKikg
ZmluYWw7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGll
bnQmLCBWaWRlb1RyYWNrUHJpdmF0ZSYpOworICAgIFZpZGVvVHJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFZpZGVvVHJhY2tQcml2YXRlJik7CiAKICAgICBib29sIGlzVmFsaWRLaW5kKGNv
bnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKIApAQCAtMTAwLDcgKzEwNCw4IEBAIHByaXZh
dGU6CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IlZpZGVvVHJhY2siOyB9CiAjZW5kaWYKIAotICAgIFZpZGVvVHJhY2tDbGllbnQqIG1fY2xpZW50
IHsgbnVsbHB0ciB9OworICAgIFdlYWtQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja0xp
c3Q7CisgICAgV2Vha0hhc2hTZXQ8VmlkZW9UcmFja0NsaWVudD4gbV9jbGllbnRzOwogICAgIFJl
ZjxWaWRlb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIGJvb2wgbV9zZWxlY3RlZCB7IGZh
bHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKaW5kZXgg
NzQ3MjNkYmFkZDVlOWUzNzFjM2YyZDE2N2JiZDc1MTcyMTU1OGMwZC4uMmM2MGIyYjJlNzA2NTMz
ODhkOWE0ZWNjMDAzOWEzMmYzNjYwYjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaWRsCkBAIC0yNSw4ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1WSURF
TywKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZSwKICAgICBFeHBvc2VkPVdp
bmRvdwogXSBpbnRlcmZhY2UgVmlkZW9UcmFjayB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5j
cHAKaW5kZXggODQ4NjU2NmQxOGM4NGU2ZjRhNjhhYWZiZThhM2MwNTgyNDc0ZDNiMC4uN2E5MWE1
OTFlYWFhOGYyMTQ2YzRlYjM5OTcyYjVhN2IzOTY5ZDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKQEAgLTI5LDEzICsyOSwxMiBAQAogCiAjaW5j
bHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKIAotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmlkZW9U
cmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVu
dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IFRyYWNrTGlzdEJhc2Uo
ZWxlbWVudCwgY29udGV4dCkKK1ZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShjb250ZXh0LCBU
cmFja0xpc3RCYXNlOjpWaWRlb1RyYWNrTGlzdCkKIHsKIH0KIApAQCAtNTMsOCArNTIsOCBAQCB2
b2lkIFZpZGVvVHJhY2tMaXN0OjphcHBlbmQoUmVmPFZpZGVvVHJhY2s+JiYgdHJhY2spCiAgICAg
fQogICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbnNlcnRpb25JbmRleCwgdHJhY2sucHRyKCkp
OwogCi0gICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlhRWxl
bWVudCgpID09IG1lZGlhRWxlbWVudCgpKTsKLSAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG1l
ZGlhRWxlbWVudCgpKTsKKyAgICBpZiAoIXRyYWNrLT50cmFja0xpc3QoKSkKKyAgICAgICAgdHJh
Y2stPnNldFRyYWNrTGlzdCgqdGhpcyk7CiAKICAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQoV1RG
TW92ZSh0cmFjaykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlz
dC5oCmluZGV4IDk2NjBkZjZmZTI5Nzc0ZGRkZjNiYzkzNmYzNDQxMjk0ZDhjMGRhYjMuLjI1Y2Vj
YmZlYmJlNGMyYWFiZmMyNzdmMmQ2MDg0MTY4MmNlZjYwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgVmlkZW9U
cmFjazsKIAogY2xhc3MgVmlkZW9UcmFja0xpc3QgZmluYWwgOiBwdWJsaWMgVHJhY2tMaXN0QmFz
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrTGlzdD4gY3JlYXRlKFdlYWtQ
dHI8SFRNTE1lZGlhRWxlbWVudD4gb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrTGlzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBhdXRvIGxpc3QgPSBhZG9wdFJlZigq
bmV3IFZpZGVvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgICAgIGF1dG8gbGlzdCA9
IGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja0xpc3QoY29udGV4dCkpOwogICAgICAgICBsaXN0LT5z
dXNwZW5kSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQpAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBWaWRlb1RyYWNrTGlzdChX
ZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAg
VmlkZW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogfTsKQEAgLTYyLDQgKzYyLDgg
QEAgc3RhdGljX2Fzc2VydChzaXplb2YoVmlkZW9UcmFja0xpc3QpID09IHNpemVvZihUcmFja0xp
c3RCYXNlKSwgIiIpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9UcmFja0xpc3QpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2UmIHRyYWNrTGlzdCkgeyByZXR1cm4g
dHJhY2tMaXN0LnR5cGUoKSA9PSBXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpWaWRlb1RyYWNrTGlz
dDsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlz
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAppbmRl
eCBhYjJiN2U2YzIzZWJlMGUzYjgwYjY3M2FiOTU5OGE0MTc4OGRlN2RiLi4yMzFiODQwZWEwNmYw
MzA5ZmNmN2E0OGQ3MTZhZGQ0YTk3Mzc4MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmlkbApAQCAtMjYsOCArMjYsNiBAQAogWwogICAgIEFjdGl2ZURP
TU9iamVjdCwKICAgICBDb25kaXRpb25hbD1WSURFTywKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
PUltcGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCiAgICAgRXhwb3Nl
ZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFZpZGVvVHJhY2tMaXN0IDogRXZlbnRUYXJnZXQgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437635</attachid>
            <date>2021-09-08 09:26:27 -0700</date>
            <delta_ts>2021-09-08 11:22:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229924-20210908092626.patch</filename>
            <type>text/plain</type>
            <size>109764</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmYmYxMThlMjE1ZDM3
M2M3ZTc5YzQ3YmY0ZjM4NDRiNjA3MjFkYi4uOTIxZTY2ZGZlMWU2ZjEyZmEzNDQyYTJiMzVkZGIx
ZDY1YTBkOGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAyMS0wOS0wNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBWaWRlbyxB
dWRpbyxUZXh0VHJhY2sgYW5kIFRyYWNrTGlzdHMgdG8gbm90IGRlcGVuZCBvbiBIVE1MTWVkaWFF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
cmFja0Jhc2UgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMgY3VycmVudGx5IGFyZSBvbmx5IGFibGUg
dG8gaGFuZGxlIGEgc2luZ2xlICJjbGllbnQiCisgICAgICAgIGF0IGEgdGltZSwgd2hpY2ggbWVh
bnMgYSBjb21wbGljYXRlZCByZS1zZW5kaW5nIG9mIG5vdGlmaWNhdGlvbnMgZnJvbSBvbmUgY2xp
ZW50IHRvCisgICAgICAgIHRoZSBuZXh0IHRvIGVuc3VyZSBldmVyeXRoaW5nIGZsb3dzIHRvIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGlzCisgICAgICAgIGNvbXBsaWNh
dGVkIGNsaWVudCBoZWlyYXJjaHksIFRyYWNrcyBhbmQgdGhlaXIgVHJhY2tMaXN0cyBiZWluZyB0
aWdodGx5IGJvdW5kIHRvIHRoZWlyCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBtYWtl
IE1TRS1pbi1hLVdvcmtlciBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIGltcGxlbWVudC4KKworICAg
ICAgICBSZWZhY3RvciBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIHRvIGhh
dmUgbXVsdGlwbGUgY2xpZW50cywgdHJhY2tlZCBieQorICAgICAgICBhIFdlYWtIYXNoU2V0LiBS
ZW1vdmUgSFRNTE1lZGlhRWxlbWVudCBmcm9tIHRoYXQgY2xhc3MgaGVpcmFyY2h5LCBhbmQgcmVw
bGFjZSBpdCB3aXRoCisgICAgICAgIGEgV2Vha1B0ciB0byB0aGVpciBUcmFja0xpc3QgZm9yIG9w
YXF1ZVJvb3QgcHVycG9zZXMuCisKKyAgICAgICAgU2ltaWxhcmx5LCByZWZhY3RvciBBdWRpb1Ry
YWNrTGlzdCwgVmlkZW9UcmFja0xpc3QsIGFuZCBUZXh0VHJhY2tMaXN0IHRvIG5vdCByZXF1aXJl
CisgICAgICAgIGEgYmFja3BvaW50ZXIgdG8gSFRNTE1lZGlhRWxlbWVudCwgYW5kIHVzZSBhIFdl
YWtQdHI8dm9pZD4gaW5zdGVhZCwgYWxsb3dpbmcgZWl0aGVyCisgICAgICAgIFNvdXJjZUJ1ZmZl
ciBvciBIVE1MTWVkaWFFbGVtZW50IHRvIGJlIHRoZSBsaXN0J3Mgb3BhcXVlUm9vdC4KKworICAg
ICAgICBBIFRyYWNrQmFzZSBuZWVkZWQgYWNjZXNzIHRvIGEgSFRNTE1lZGlhRWxlbWVudCBvbmx5
IGZvciB0aGUgbmVjZXNzaXR5IG9mIG91dHB1dHRpbmcKKyAgICAgICAgYSB3YXJuaW5nIHRvIHRo
ZSBjb25zb2xlIHdoZW4gYSBsYW5ndWFnZSBlcnJvciBvY2N1cnJlZDsgaW5zdGVhZCwgbWFrZSBU
cmFja0Jhc2UgYQorICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgYW5kIHBhc3Mg
YSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBUcmFja0Jhc2UgKGFuZAorICAgICAgICBh
bGwgaXRzIGRlcml2ZWQgY2xhc3NlcykgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIEEg
VHJhY2tMaXN0QmFzZSBub3cgaGFzIGEgdHlwZSgpIG1ldGhvZCwgd2hpY2ggYWxsb3dzIGl0IHRv
IGJlIHNhZmVseSBjYXN0IHRvIEF1ZGlvVHJhY2ssCisgICAgICAgIFZpZGVvVHJhY2ssIGFuZCBU
ZXh0VHJhY2ssIHRocm91Z2ggdHlwZSB0cmFpdCBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICBU
ZXh0VHJhY2sgdXNlZCBIVE1MTWVkaWFFbGVtZW50IHRvIHJldHJpZXZlIGl0cyBUZXh0VHJhY2tM
aXN0IGZvciBjZXJ0YWluIG9wZXJhdGlvbnMsCisgICAgICAgIGFuZCBub3cgdGhhdCBlYWNoIFRy
YWNrQmFzZSBoYXMgYSBiYWNrcG9pbnRlciB0byBpdHMgVHJhY2tMaXN0LCB0aGlzIGlzIG5vIGxv
bmdlciBuZWNlc3NhcnkuCisKKyAgICAgICAgVGV4dFRyYWNrTGlzdCBub3cgaGFzIHNldER1cmF0
aW9uKCkvZHVyYXRpb24oKSBtZW1iZXIgZnVuY3Rpb25zLCBzbyB0aGF0IHdoZW4gVGV4dFRyYWNr
CisgICAgICAgIHJlY2VpdmVzIGEgY3VlIHdpdGggYW4gaW5kZWZpbml0ZSBkdXJhdGlvbiwgdGhh
dCBjdWUncyBlbmRUaW1lIGNhbiBiZSBjYWxjdWxhdGVkLgorCisgICAgICAgIFRoZSBBdWRpb1Ry
YWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIElETHMgcHJldmlvdXNseSBzcGVjaWZpZWQg
R2VuZXJhdGVJc1JlYWNoYWJsZSwKKyAgICAgICAgd2l0aCBhIHBhcmFtZXRlciBvZiBJbXBsRWxl
bWVudFJvb3QsIHdoaWNoIHJlcXVpcmVkIGFuIGVsZW1lbnQoKSBtZXRob2Qgb24gZWFjaDsgbm93
CisgICAgICAgIHRoYXQgVHJhY2tCYXNlIGhhcyBhbiBvcGFxdWVSb290KCkgbWV0aG9kLCB0aGlz
IHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRp
b1RyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrTGFiZWxDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYW5ndWFn
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92
ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxUcmFja0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjppZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OndpbGxSZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tJZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0xhbmd1YWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50Ojp3aWxsUmVtb3Zl
QXVkaW9UcmFjayk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0OjpyZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGw6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
RGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Oklu
YmFuZEdlbmVyaWNUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0
b21hdGljSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2s6On5UZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0ZXh0
VHJhY2tMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZUFsbEN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3VlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tBZGRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpjbGVhclRy
YWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnRyYWNrTGlzdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZSk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6aWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0Jhc2U6Omxhbmd1YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrQmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldElk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFiZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzZXRPcGFxdWVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OnJvb3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZWxlY3RlZENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6aWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjp3aWxsUmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZpZGVvVHJh
Y2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVudDo6dmlkZW9U
cmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZp
ZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVu
dDo6dmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrQ2xpZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tDbGllbnQ6OndpbGxSZW1vdmVWaWRlb1RyYWNrKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6CiAyMDIxLTA4LTIzICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIERlLWZsYWtlIG1lZGlhIHBhaW50aW5n
IHRlc3RzIGJ5IGRlbGF5aW5nIHJlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgdW50aWwg
ZWxlbWVudCBpcyBhYmxlIHRvIHBhaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNjdhNjFiYzg0MWRkYmY5NDkxNzdj
YTFlZGU3MWVlYzA3ODkwN2JlNS4uZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRlMDY0
NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNzQsNiArNzQsNyBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZl
cihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KHNvdXJjZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICwgbV9wcml2YXRlKFdURk1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihbdGhpc10geyByZXR1cm4g
b3BhcXVlUm9vdCgpOyB9KQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3Rh
cnQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNjMyLDIyICs2MzMsMjggQEAgdWludDY0
X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiAKIFZpZGVvVHJhY2tM
aXN0JiBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdmlkZW9UcmFj
a3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKChpc1JlbW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkp
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsK
KyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2V0T3BhcXVlUm9vdE9i
c2VydmVyKG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsKKyAgICB9CiAgICAgcmV0dXJuICptX3ZpZGVv
VHJhY2tzOwogfQogCiBBdWRpb1RyYWNrTGlzdCYgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrcygp
CiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVk
aW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVkKCkgPyBudWxscHRyIDog
bV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRpb1Ry
YWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVk
aW9UcmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7Cisg
ICAgfQogICAgIHJldHVybiAqbV9hdWRpb1RyYWNrczsKIH0KIAogVGV4dFRyYWNrTGlzdCYgU291
cmNlQnVmZmVyOjp0ZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAg
ICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRyKChpc1Jl
bW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpKSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykgeworICAgICAgICBtX3Rl
eHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVS
b290UHJvdmlkZXIpOworICAgIH0KICAgICByZXR1cm4gKm1fdGV4dFRyYWNrczsKIH0KIApAQCAt
Nzc5LDcgKzc4Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHN0ZXBzIDUuMi4xLTUuMi44LjEgYXMgcGVyIEVkaXRvcidzIERyYWZ0
IDA5IEphbnVhcnkgMjAxNSwgYW5kIHJlb3JkZXIgdGhpcwogICAgICAgICAgICAgLy8gNS4yLjEg
TGV0IG5ldyBhdWRpbyB0cmFjayBiZSBhIG5ldyBBdWRpb1RyYWNrIG9iamVjdC4KICAgICAgICAg
ICAgIC8vIDUuMi4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGlk
IHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KLSAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9U
cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSgqdGhpcywgKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICphdWRpb1RyYWNrSW5mby50cmFjayk7CisgICAgICAgICAg
ICBuZXdBdWRpb1RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbmV3QXVkaW9U
cmFjay0+c2V0U291cmNlQnVmZmVyKHRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjIuMyBJZiBh
dWRpb1RyYWNrcy5sZW5ndGggZXF1YWxzIDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CkBAIC04MDEsNyArODA5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAgICAgICAg
IC8vIDUuMi43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBub3QgY2Fu
Y2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBB
dWRpb1RyYWNrTGlzdCBvYmplY3QKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1
ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3
QXVkaW9UcmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVu
dCgpLT5hZGRBdWRpb1RyYWNrKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAogICAgICAgICAg
ICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVj
KCkpOwogCkBAIC04MTQsNyArODIyLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RlcHMgNS4zLjEtNS4zLjguMSBhcyBwZXIgRWRp
dG9yJ3MgRHJhZnQgMDkgSmFudWFyeSAyMDE1LCBhbmQgcmVvcmRlciB0aGlzCiAgICAgICAgICAg
ICAvLyA1LjMuMSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0
LgogICAgICAgICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBp
dCB0byB0aGUgaWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgotICAgICAgICAgICAgYXV0
byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKCp0aGlzLCAqdmlkZW9UcmFja0lu
Zm8udHJhY2spOworICAgICAgICAgICAgYXV0byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnZpZGVvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIG5ld1ZpZGVvVHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAg
ICBuZXdWaWRlb1RyYWNrLT5zZXRTb3VyY2VCdWZmZXIodGhpcyk7CiAKICAgICAgICAgICAgIC8v
IDUuMy4zIElmIHZpZGVvVHJhY2tzLmxlbmd0aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKQEAgLTgzNiw3ICs4NDUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQog
ICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50
IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAg
IC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFj
ZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNl
ZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50Lgot
ICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygp
LmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+
bWVkaWFFbGVtZW50KCktPmFkZFZpZGVvVHJhY2sobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwog
CiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlw
dGlvbi0+Y29kZWMoKSk7CiAKQEAgLTg1MSw3ICs4NjAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlh
bGl6YQogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdGVwcyA1LjQuMS01LjQuOC4x
IGFzIHBlciBFZGl0b3IncyBEcmFmdCAwOSBKYW51YXJ5IDIwMTUsIGFuZCByZW9yZGVyIHRoaXMK
ICAgICAgICAgICAgIC8vIDUuNC4xIExldCBuZXcgdGV4dCB0cmFjayBiZSBhIG5ldyBUZXh0VHJh
Y2sgb2JqZWN0IHdpdGggaXRzIHByb3BlcnRpZXMgcG9wdWxhdGVkIHdpdGggdGhlCiAgICAgICAg
ICAgICAvLyBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBz
ZWdtZW50LgotICAgICAgICAgICAgYXV0byBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6
OmNyZWF0ZShkb2N1bWVudCgpLCAqdGhpcywgdGV4dFRyYWNrUHJpdmF0ZSk7CisgICAgICAgICAg
ICBhdXRvIG5ld1RleHRUcmFjayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHRUcmFja1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VGV4dFRyYWNrLT5hZGRDbGllbnQo
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBu
ZXcgdGV4dCB0cmFjayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3Rp
dmUKICAgICAgICAgICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KQEAgLTg2OCw3ICs4NzgsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQogICAgICAgICAgICAgLy8gNS40LjYgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90
IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1
c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBv
biB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1l
bnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YWRkVGV4dFRyYWNrKG5ld1Rl
eHRUcmFjay5jb3B5UmVmKCkpOwogCiAgICAgICAgICAgICBtX3RleHRDb2RlY3MuYXBwZW5kKHRl
eHRUcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOwogCkBAIC0xMDIzLDkgKzEwMzMsMjQg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYgdHJhY2spCiAKICAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250
YWlucyh0cmFjaykpCiAgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKK30KIAotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVs
ZW1lbnQoKS0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCh0cmFjayk7Cit2b2lkIFNvdXJjZUJ1
ZmZlcjo6dmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQoreworICAgIGlm
IChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAg
ICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlcjo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAg
ICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisg
ICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2sp
Cit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJh
Y2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYg
dHJhY2spCkBAIC0xMDUwLDkgKzEwNzUsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKIAogICAgIGlmIChtX2F1ZGlvVHJh
Y2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAgbV9hdWRpb1Ry
YWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQogCi0gICAgaWYgKCFpc1JlbW92ZWQoKSkK
LSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQodHJhY2spOwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRp
b1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQo
QXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1Ry
YWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFuZ3VhZ2VD
aGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1f
YXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2No
ZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKQEAgLTEwNzcsMzkgKzExMTcsMTggQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiAKICAg
ICBpZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAg
ICAgICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQotICAgIGlmICghaXNS
ZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrTW9k
ZUNoYW5nZWQodHJhY2spOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmICghaXNSZW1v
dmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrQWRkQ3Vl
KHRyYWNrLCBjdWUpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBjdWVMaXN0KQotewotICAg
IGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4
dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3VlTGlzdCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyOjp0
ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17
Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYgdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmIGN1ZUxpc3QpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrJiB0cmFjaykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3Nv
dXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZUxpc3Qp
OworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykp
CisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFj
aykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKKyAgICBpZiAobV90ZXh0VHJhY2tz
ICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3RleHRUcmFja3Mt
PnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikKQEAgLTExMTks
OCArMTEzOCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KQogewotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlv
bkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc291cmNlLT5zZXREdXJhdGlvbkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBp
ZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0
aW9uKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIaWdoZXN0
UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CmluZGV4IGVlY2QzMWJmYzVmNGJhMmYzZjY2MDgwN2RlYTYyNTE3Nzc1YmE3NmIuLjg4OGQyZDZl
OThkYWJmOTdkYWJlMWM5MWYyNDhiMTA4NWQ2OTJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtNjksNiArNjksOSBAQCBj
bGFzcyBTb3VyY2VCdWZmZXIgZmluYWwKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNv
dXJjZUJ1ZmZlcik7CiBwdWJsaWM6CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFy
Z2V0OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9y
eTsKKwogICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7
CiAKQEAgLTEzNSw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyAgICB2b2lkKiBvcGFxdWVSb290KCkgeyBy
ZXR1cm4gdGhpczsgfQorCiBwcml2YXRlOgogICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtMTYxLDE1ICsxNjYsMjAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKICAgICB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7Ci0gICAgLy8gVmlkZW9UcmFja0NsaWVudAot
ICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCBhdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZv
aWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBh
dWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKwogICAgIC8vIFRl
eHRUcmFja0NsaWVudAogICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikg
ZmluYWw7CiAgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUo
VGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJh
Y2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisKKyAgICAvLyBWaWRlb1RyYWNr
Q2xpZW50CisgICAgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFs
OworICAgIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAg
ICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFsOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQpAQCAtMjA5LDYgKzIxOSw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEFwcGVuZE1vZGUgbV9tb2RlIHsgQXBwZW5kTW9kZTo6U2VnbWVu
dHMgfTsKIAorICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7
CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggOGY5OTBkYWYyYTRhNWZiZTRj
NDYxMTIwZDIwY2ZmOGJkMmVmODkyMy4uMDdkNDkyYzQwZjNjZmQ2M2MxN2NiZDZjMWRkZWMzZjAy
YTczNzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbApAQCAtMzgsNiArMzgsNyBAQAogICAgIENvbmRpdGlvbmFsPU1FRElB
X1NPVVJDRSwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlhU291cmNlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU291cmNlQnVmZmVyIDogRXZlbnRUYXJnZXQgewogICAg
IGF0dHJpYnV0ZSBBcHBlbmRNb2RlIG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmgKaW5kZXggZWY3MmQ5YjdhYWJkYzk5ZTczMGZmZGVlODBlMTAxMzU5ZjBh
ZmQwZi4uZjA1OGM5OWQ5MzVjMWY3M2JhOWY1OTE4NWI1MTRhNzkwNGQ3NDU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaApAQCAtMzYsMTMgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFja0Jhc2UmKTsKIAotaW5saW5lIHZvaWQqIHJv
b3QoVHJhY2tCYXNlKiB0cmFjaykKLXsKLSAgICBpZiAodHJhY2stPmVsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPmVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHRyYWNrOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiZTAxMmY5N2IwMDQ4OTQy
YTEwMGUzMjAzNGFhMGI3ZmQwYmM5ODllLi42OWZkMjFlNjJjZGEyNDUyMTg1NmZjYzhlNWQ2YmFl
N2Q3MzhlMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTQ1MCw2ICs0NTAsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9zaG91bGRB
dWRpb1BsYXliYWNrUmVxdWlyZVVzZXJHZXN0dXJlKGRvY3VtZW50LnRvcERvY3VtZW50KCkuYXVk
aW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkKICAgICAsIG1fc2hvdWxkVmlkZW9QbGF5YmFja1JlcXVpcmVVc2VyR2VzdHVy
ZShkb2N1bWVudC50b3BEb2N1bWVudCgpLnZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KCkgJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgLCBtX3ZvbHVtZUxv
Y2tlZChkZWZhdWx0Vm9sdW1lTG9ja2VkKCkpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihb
dGhpc10geyByZXR1cm4gb3BhcXVlUm9vdCgpOyB9KQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgLCBtX3JlbW90ZShSZW1vdGVQbGF5YmFjazo6Y3JlYXRlKCp0aGlz
KSkKICNlbmRpZgpAQCAtNTQ0LDEzICs1NDUsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlQ29u
ZmlndXJhdGlvbkNoYW5nZU9ic2VydmVyKCp0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKG1fYXVk
aW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyRWxlbWVudCgpOwotICAgIGlm
IChtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJFbGVtZW50KCk7Ci0g
ICAgaWYgKG1fdmlkZW9UcmFja3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyRWxlbWVu
dCgpOwotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBpZiAoaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZEV2ZW50KSB8fCBtX3JlbW90ZS0+aGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzKCkp
IHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGZh
bHNlOwpAQCAtMTg2OSw2ICsxODYzLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9U
cmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9B
bmRWaWRlbygpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tLaW5kQ2hh
bmdlZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1
ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNr
TGFiZWxDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tz
ICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1f
YXVkaW9UcmFja3MgJiYgbV9hdWRpb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBt
X2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAg
cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKIHsKICAgICBib29sIHRyYWNrSXNM
b2FkZWQgPSB0cnVlOwpAQCAtMTg4NCw4ICsxOTAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogICAgIH0KIAogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFkZGVkIHRyYWNrLCBjcmVhdGUgdGhlIGxpc3Qgb2YgdGV4
dCB0cmFja3MuCi0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcyA9
IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGVuc3VyZVRleHRUcmFja3MoKTsKIAog
ICAgIC8vIE1hcmsgdGhpcyB0cmFjayBhcyAiY29uZmlndXJlZCIgc28gY29uZmlndXJlVGV4dFRy
YWNrcyB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4uCiAgICAgdHJhY2suc2V0SGFzQmVlbkNv
bmZpZ3VyZWQodHJ1ZSk7CkBAIC0xOTA0LDYgKzE5MjAsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogI2VuZGlmCiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0
cmFjaykKK3sKKyAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlv
bnMgJiYgdHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNr
Lm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCisgICAgICAgIHRyYWNrLnNldE1v
ZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworCisgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBt
X3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TGFiZWxDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRyYWNrcyAm
JiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRy
YWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJh
Y2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmICh0cmFjay50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgcmVtb3ZlVGV4dFRyYWNr
KHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKQEAgLTE5MTEsMTAgKzE5NTQsMjcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sm
IHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9BbmRWaWRlbygpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykK
IHsKLSAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNrLm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCi0gICAgICAgIHRyYWNrLnNldE1vZGUoVGV4
dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYWJl
bENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYg
bV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV92aWRl
b1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICByZW1v
dmVWaWRlb1RyYWNrKHRyYWNrKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkln
bm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKQpAQCAtNDA4NywxNSArNDE0NywxNCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIHNldEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0
YXRlKEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRlOjpQcmV2ZW50ZWRBdXRvcGxheSk7CiAgICAg
fQogCi0gICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoKnRoaXMsIHRyYWNrKSk7
CisgICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0cmFjaykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQogewogICAgIC8v
IDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKICAgICAvLyAxLiBBc3Nv
Y2lhdGUgdGhlIHJlbGV2YW50IGRhdGEgd2l0aCBhIG5ldyB0ZXh0IHRyYWNrIGFuZCBpdHMgY29y
cmVzcG9uZGluZyBuZXcgVGV4dFRyYWNrIG9iamVjdC4KLSAgICBhdXRvIHRleHRUcmFjayA9IElu
YmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCksICp0aGlzLCB0cmFjayk7Ci0gICAgdGV4
dFRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQoKSwgdHJhY2spOwogCiAg
ICAgLy8gMi4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIGtpbmQsIGxhYmVsLCBhbmQgbGFuZ3Vh
Z2UgYmFzZWQgb24gdGhlIHNlbWFudGljcyBvZiB0aGUgcmVsZXZhbnQgZGF0YSwKICAgICAvLyBh
cyBkZWZpbmVkIGJ5IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9uLiBJZiB0aGVyZSBpcyBubyBs
YWJlbCBpbiB0aGF0IGRhdGEsIHRoZW4gdGhlIGxhYmVsIG11c3QKQEAgLTQxMjUsNyArNDE4NCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKLSAg
ICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSgqdGhpcywgdHJhY2spKTsKKyAgICBh
dXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0cmFjayk7CisgICAgYWRkVmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrKQpAQCAtNDE0OCw2ICs0MjA4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFJlZjxBdWRpb1RyYWNrPiYmIHRyYWNrKQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xpZW50KCp0aGlzKTsKICAg
ICBlbnN1cmVBdWRpb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQx
NjUsNiArNDIyNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFJlZjxU
ZXh0VHJhY2s+JiYgdHJhY2spCiAgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IHBh
Z2UtPmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuY2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZW5zdXJlVGV4
dFRyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQxNzMsMTIgKzQyMzUs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNr
PiYmIHRyYWNrKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dn
ZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICBlbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNr
KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhSZWY8QXVk
aW9UcmFjaz4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICB0cmFj
ay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIG1fYXVkaW9UcmFja3MtPnJlbW92ZSh0cmFjay5n
ZXQoKSk7CiB9CiAKQEAgLTQxODcsMTQgKzQyNTAsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2soUmVmPFRleHRUcmFjaz4mJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2
ZW4KICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSB7ICp0aGlzIH07CiAgICAgaWYg
KGF1dG8gY3VlcyA9IG1ha2VSZWZQdHIodHJhY2stPmN1ZXMoKSkpCiAgICAgICAgIHRleHRUcmFj
a1JlbW92ZUN1ZXModHJhY2ssICpjdWVzKTsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAg
ICB0cmFjay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIGlmIChtX3RleHRUcmFja3MpCiAgICAg
ICAgIG1fdGV4dFRyYWNrcy0+cmVtb3ZlKHRyYWNrLCBzY2hlZHVsZUV2ZW50KTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNrPiYmIHRy
YWNrKQogewotICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOworICAgIHRyYWNrLT5jbGVhckNsaWVu
dCgqdGhpcyk7CiAgICAgbV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKIH0KIApAQCAtNDIz
MSw3ICs0Mjk0LDcgQEAgRXhjZXB0aW9uT3I8VGV4dFRyYWNrJj4gSFRNTE1lZGlhRWxlbWVudDo6
YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QKIAogICAgIC8vIDUuIENyZWF0
ZSBhIG5ldyB0ZXh0IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5ldyBvYmplY3QsIGFuZCBz
ZXQgaXRzIHRleHQgdHJhY2sga2luZCB0byBraW5kLCBpdHMgdGV4dAogICAgIC8vIHRyYWNrIGxh
YmVsIHRvIGxhYmVsLCBpdHMgdGV4dCB0cmFjayBsYW5ndWFnZSB0byBsYW5ndWFnZS4uLgotICAg
IGF1dG8gdHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgdGhpcywga2luZCwg
ZW1wdHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlKTsKKyAgICBhdXRvIHRyYWNrID0gVGV4dFRy
YWNrOjpjcmVhdGUoJmRvY3VtZW50KCksIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBsYW5n
dWFnZSk7CiAgICAgYXV0byYgdHJhY2tSZWZlcmVuY2UgPSB0cmFjay5nZXQoKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICB0cmFja1JlZmVyZW5jZS5zZXRMb2dnZXIobG9nZ2VyKCks
IGxvZ0lkZW50aWZpZXIoKSk7CkBAIC00MjU0LDI0ICs0MzE3LDMxIEBAIEV4Y2VwdGlvbk9yPFRl
eHRUcmFjayY+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0CiAKIEF1ZGlvVHJhY2tMaXN0JiBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVBdWRp
b1RyYWNrcygpCiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJh
Y2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghbV9hdWRpb1RyYWNr
cykgeworICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVkaW9U
cmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7CisgICAg
fQogCiAgICAgcmV0dXJuICptX2F1ZGlvVHJhY2tzOwogfQogCiBUZXh0VHJhY2tMaXN0JiBIVE1M
TWVkaWFFbGVtZW50OjplbnN1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNr
cykKLSAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFr
UHRyKHRoaXMpLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX3RleHRUcmFja3MpIHsKKyAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNr
TGlzdDo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
KyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVSb290
UHJvdmlkZXIpOworICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0aW9uTWVk
aWFUaW1lKCkpOworICAgIH0KIAogICAgIHJldHVybiAqbV90ZXh0VHJhY2tzOwogfQogCiBWaWRl
b1RyYWNrTGlzdCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlVmlkZW9UcmFja3MoKQogewotICAg
IGlmICghbV92aWRlb1RyYWNrcykKLSAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tM
aXN0OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92
aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zZXRPcGFxdWVS
b290T2JzZXJ2ZXIobV9vcGFxdWVSb290UHJvdmlkZXIpOworICAgIH0KIAogICAgIHJldHVybiAq
bV92aWRlb1RyYWNrczsKIH0KQEAgLTUwNDcsNiArNTExNyw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoKQogICAgIGlmIChub3cgPiBkdXIpCiAg
ICAgICAgIHNlZWtJbnRlcm5hbChkdXIpOwogCisgICAgaWYgKG1fdGV4dFRyYWNrcykKKyAgICAg
ICAgbV90ZXh0VHJhY2tzLT5zZXREdXJhdGlvbihkdXIpOworCiAgICAgZW5kUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCA2ZTFjOWY5ZDU2YjExZDE2MTZiZDY3MTFmOTc3ZWI1ZGZlMzEyYmY4Li4zMmVk
Y2NkODA5NDc1OGM4YzRiNDI2NjJjY2Y3MWY0ZjRiMjY4ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlZpc2liaWxp
dHlDaGFuZ2VDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMp
CkBAIC0zODMsMTcgKzM4NCwyOCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50
CiAgICAgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOwor
ICAgIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2
b2lkIGF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQg
YXVkaW9UcmFja0xhbmd1YWdlQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB3
aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrJikgZmluYWw7CiAKICAgICAvLyBUZXh0VHJh
Y2tDbGllbnQKLSAgICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNr
JiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0
ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFj
a0xhYmVsQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0xhbmd1
YWdlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMo
VGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOworICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmlu
YWw7CisgICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikg
ZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNr
Q3VlJikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIGZp
bmFsOwogCiAgICAgLy8gVmlkZW9UcmFja0NsaWVudAorICAgIHZvaWQgdmlkZW9UcmFja0tpbmRD
aGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvVHJhY2tMYWJlbENoYW5n
ZWQoVmlkZW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgdmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdl
ZChWaWRlb1RyYWNrJikgZmluYWw7CiAgICAgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrKFZpZGVv
VHJhY2smKSBmaW5hbDsKIAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24qKTsKQEAgLTExNTcsNiArMTE2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEJsb2I+IG1fYmxvYjsKICAgICBVUkwgbV9ibG9iVVJMRm9yUmVhZGluZzsKICAgICBNZWRp
YVByb3ZpZGVyIG1fbWVkaWFQcm92aWRlcjsKKyAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1f
b3BhcXVlUm9vdFByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CiAgICAgYm9vbCBtX2hhc05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCBiODY1YzcyYTJkM2RjNDliZmU3YTZlNDE0
MTc1NWQ4OWJmY2U5YTdkLi4xYmYxOWFlY2Q3MWM1YzVlYWM2OGZmYWM2ZDMyYjk4N2ExMTUwZTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQogewogICAgIGlmICht
X3RyYWNrKSB7CiAgICAgICAgIG1fdHJhY2stPmNsZWFyRWxlbWVudCgpOwotICAgICAgICBtX3Ry
YWNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7
CiAgICAgfQogfQogCkBAIC0xNTIsNiArMTUyLDcgQEAgTG9hZGFibGVUZXh0VHJhY2smIEhUTUxU
cmFja0VsZW1lbnQ6OnRyYWNrKCkKICAgICAgICAgaWYgKCFUZXh0VHJhY2s6OmlzVmFsaWRLaW5k
S2V5d29yZChraW5kKSkKICAgICAgICAgICAgIGtpbmQgPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKTsKICAgICAgICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUoKnRo
aXMsIGtpbmQsIGxhYmVsKCksIHNyY2xhbmcoKSk7CisgICAgICAgIG1fdHJhY2stPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgfQogICAgIEFTU0VSVChtX3RyYWNrLT50cmFja0VsZW1lbnQoKSA9PSB0
aGlzKTsKIApAQCAtMjk5LDQ0ICszMDAsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTFRyYWNr
RWxlbWVudDo6bWVkaWFFbGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdAogICAgIHJl
dHVybiBudWxsQXRvbSgpOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0tp
bmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQodHJhY2sp
OwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayYgdHJhY2spCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayYpCiB7CiAgICAgLy8gU2luY2Ugd2UndmUgbW92ZWQgdG8gYSBuZXcgcGFyZW50
LCB3ZSBtYXkgbm93IGJlIGFibGUgdG8gbG9hZC4KICAgICBpZiAocmVhZHlTdGF0ZSgpID09IEhU
TUxUcmFja0VsZW1lbnQ6Ok5PTkUpCiAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwotCi0gICAgaWYg
KGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNr
TW9kZUNoYW5nZWQodHJhY2spOwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFj
a0FkZEN1ZXMoVGV4dFRyYWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgY3VlcykK
LXsKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcGFyZW50
LT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKLX0KLSAgICAKLXZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0
VHJhY2tDdWVMaXN0JiBjdWVzKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVu
dCgpKQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZXMpOwot
fQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNr
JiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3VlKHRyYWNrLCBjdWUp
OwotfQotICAgIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4
dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50
ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRy
YWNrLCBjdWUpOwogfQogCiBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVu
dDo6bWVkaWFFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmgKaW5kZXggZjc4OTg5OGQxZjdkZDcwZTM2NTcxOThhMjkxYzhkYjQyNzJhOGFjYy4uYjg2MmQ0
OWE0YTkyYzMzNjczNTU4OTFjYjY0Njg1ZTY4MDE1ZTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmgKQEAgLTg0LDExICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBU
ZXh0VHJhY2tDbGllbnQKICAgICB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYp
IGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmKSBmaW5hbDsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwg
Y29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVt
b3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5M
b2FkVVJMKGNvbnN0IFVSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNr
LmNwcAppbmRleCBjYWI3NzgyMWE5NDdjZDhlYzdhMjIwOTVmNzlhMjI2OTlmZDBjMzMzLi4zY2I3
MThkM2RjMjdlNTgzYjVhNWRmMTA5M2EwMzY1MjdjMDJlY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tM
aXN0LmgiCiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc1LDkgKzc1LDggQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVu
dGFyeUtleXdvcmQoKQogICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1BdWRpb1RyYWNrOjpB
dWRpb1RyYWNrKEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVudCwgQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKLSAgICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpBdWRpb1Ry
YWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0
ZS5sYW5ndWFnZSgpKQotICAgICwgbV9jbGllbnQoJmNsaWVudCkKK0F1ZGlvVHJhY2s6OkF1ZGlv
VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKKyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tC
YXNlOjpBdWRpb1RyYWNrLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCks
IHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkK
ICAgICAsIG1fZW5hYmxlZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogewpAQCAtMTA3LDYgKzEw
NiwxNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OnNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmIHRy
YWNrUHJpdmF0ZSkKICAgICBzZXRJZChtX3ByaXZhdGUtPmlkKCkpOwogfQogCit2b2lkIEF1ZGlv
VHJhY2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQoreworICAgIFRy
YWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpOworCisgICAgbV9jbGllbnRzLmZvckVhY2go
WyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYW5ndWFnZUNo
YW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCiBib29sIEF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5k
KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZSA9PSBh
bHRlcm5hdGl2ZUtleXdvcmQoKQpAQCAtMTIzLDYgKzEzMSwyMSBAQCB2b2lkIEF1ZGlvVHJhY2s6
OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ByaXZh
dGUtPnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChh
dXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCgq
dGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6YWRkQ2xpZW50KEF1ZGlvVHJh
Y2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGll
bnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6
Y2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2Ns
aWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwog
fQogCiBzaXplX3QgQXVkaW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpIGNvbnN0CkBAIC0xMzcs
MTggKzE2MCwyNSBAQCB2b2lkIEF1ZGlvVHJhY2s6OmVuYWJsZWRDaGFuZ2VkKGJvb2wgZW5hYmxl
ZCkKIAogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJh
Y2s6OmlkQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBzZXRJZChpZCk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LmF1ZGlvVHJhY2tJZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlv
VHJhY2s6OmxhYmVsQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKIHsKICAgICBzZXRM
YWJlbChsYWJlbCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQp
IHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoKnRoaXMpOworICAgIH0p
OwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5n
JiBsYW5ndWFnZSkKQEAgLTE1OCwxMSArMTg4LDkgQEAgdm9pZCBBdWRpb1RyYWNrOjpsYW5ndWFn
ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgQXVkaW9UcmFjazo6
d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtZWRpYUVsZW1l
bnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBl
bGVtZW50LT5yZW1vdmVBdWRpb1RyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92ZUF1ZGlvVHJh
Y2soKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9t
UHJpdmF0ZSgpCkBAIC0xOTUsMTEgKzIyMyw2IEBAIHZvaWQgQXVkaW9UcmFjazo6dXBkYXRlS2lu
ZEZyb21Qcml2YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgQXVkaW9UcmFjazo6c2V0TWVkaWFFbGVt
ZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6
OnNldE1lZGlhRWxlbWVudChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogdm9pZCBBdWRpb1RyYWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5oCmluZGV4IDk5YTQ1MzI4YzI5ZWEwYjJjNWVjZjQyN2YxN2E0NWMwNDQxN2ZkZjcuLjM3NTEw
YThjZDJmOGY0MDE1MzU4OTI1ZGY5OWRhZWM5OGYxOTYwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFjay5oCkBAIC0zMCwyMiArMzAsMjkgQEAKIAogI2luY2x1ZGUgIkF1ZGlv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1dl
YWtIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFjazsK
K2NsYXNzIEF1ZGlvVHJhY2tMaXN0OwogCi1jbGFzcyBBdWRpb1RyYWNrQ2xpZW50IHsKK2NsYXNz
IEF1ZGlvVHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXVkaW9UcmFja0NsaWVu
dD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7
Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFj
ayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrSWRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNr
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9U
cmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1Ry
YWNrJikgeyB9CiB9OwogCiBjbGFzcyBBdWRpb1RyYWNrIGZpbmFsIDogcHVibGljIE1lZGlhVHJh
Y2tCYXNlLCBwcml2YXRlIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1
ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNr
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1
ZGlvVHJhY2soY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXVkaW9UcmFjayhjb250ZXh0LCB0cmFja1ByaXZhdGUpKTsKICAgICB9CiAgICAgdmly
dHVhbCB+QXVkaW9UcmFjaygpOwogCkBAIC01OSwyMSArNjYsMjIgQEAgcHVibGljOgogICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQg
c2V0RW5hYmxlZChjb25zdCBib29sKTsKIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7
IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBhZGRDbGllbnQoQXVkaW9UcmFja0Ns
aWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYpOwogCiAgICAg
c2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKSBjb25zdDsKIAogICAgIGNvbnN0IEF1ZGlvVHJhY2tQ
cml2YXRlJiBwcml2YXRlVHJhY2soKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KICAgICB2
b2lkIHNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgc2V0TWVkaWFF
bGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgdm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZp
bmFsOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50
JiwgQXVkaW9UcmFja1ByaXZhdGUmKTsKKyAgICBBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBBdWRpb1RyYWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBpc1ZhbGlkS2luZChjb25z
dCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAKQEAgLTkyLDcgKzEwMCw4IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1
ZGlvVHJhY2siOyB9CiAjZW5kaWYKIAotICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xpZW50IHsg
bnVsbHB0ciB9OworICAgIFdlYWtQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja0xpc3Q7
CisgICAgV2Vha0hhc2hTZXQ8QXVkaW9UcmFja0NsaWVudD4gbV9jbGllbnRzOwogICAgIFJlZjxB
dWRpb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAppbmRleCAzOTM0
NjY2ZjVmYzA2MjE3ZDNlM2VlOWM1ZTAxZDRjYTczMWMwZWZhLi5iOTQzY2Y1NWVkOWYxNTkzZTcz
MzI3NWQ3OWNjNjAyOGIwMDI2MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5pZGwKQEAgLTI2LDggKzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUlt
cGxFbGVtZW50Um9vdCwKLSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCisgICAgR2VuZXJhdGVJ
c1JlYWNoYWJsZSwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFjayB7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKaW5kZXggNjQwNTgxNzFkNDVhODgxZWYxZTBk
YzZkOGVlM2QzNDMzZDU2MWRjYS4uMzNhMDdkNGVjNzFkMTg4YmI5NTg3ZDBkOWJhODgyN2EzOTYx
NDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAK
QEAgLTMwLDEyICszMCwxMSBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAKICNpbmNs
dWRlICJBdWRpb1RyYWNrLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChXZWFrUHRy
PEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgOiBUcmFja0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitBdWRpb1RyYWNrTGlz
dDo6QXVkaW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IFRyYWNrTGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3QpCiB7
CiB9CiAKQEAgLTUzLDEzICs1MiwyMSBAQCB2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUmVm
PEF1ZGlvVHJhY2s+JiYgdHJhY2spCiAgICAgfQogICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChp
bnNlcnRpb25JbmRleCwgdHJhY2sucHRyKCkpOwogCi0KLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRp
YUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwot
ICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJh
Y2stPnRyYWNrTGlzdCgpKQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAog
ICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKK3ZvaWQgQXVk
aW9UcmFja0xpc3Q6OnJlbW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQp
Cit7CisgICAgYXV0byYgYXVkaW9UcmFjayA9IGRvd25jYXN0PEF1ZGlvVHJhY2s+KHRyYWNrKTsK
KyAgICBpZiAoYXVkaW9UcmFjay50cmFja0xpc3QoKSA9PSB0aGlzKQorICAgICAgICBhdWRpb1Ry
YWNrLmNsZWFyVHJhY2tMaXN0KCk7CisKKyAgICBUcmFja0xpc3RCYXNlOjpyZW1vdmUodHJhY2ss
IHNjaGVkdWxlRXZlbnQpOworfQorCiBBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5z
aXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKaW5kZXgg
OGFlMDM0MjAxNDJmZTFjZjYzODBlZmQzZGJlODEyMmM0YjQ0OGQ3ZS4uOTVmZDkwYjRjYWJiYmQ4
MzgwYzVhYzBiNTM5OThmMTRhY2FmNDVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBBdWRpb1RyYWNrOwogCiBj
bGFzcyBBdWRpb1RyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVk
aWFFbGVtZW50PiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYo
Km5ldyBBdWRpb1RyYWNrTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5l
ZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CkBAIC00OCwxMiArNDgsMTMgQEAg
cHVibGljOgogICAgIEF1ZGlvVHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAg
IEF1ZGlvVHJhY2sqIGxhc3RJdGVtKCkgY29uc3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEp
OyB9CiAgICAgdm9pZCBhcHBlbmQoUmVmPEF1ZGlvVHJhY2s+JiYpOworICAgIHZvaWQgcmVtb3Zl
KFRyYWNrQmFzZSYsIGJvb2wgc2NoZWR1bGVFdmVudCA9IHRydWUpIGZpbmFsOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEF1ZGlvVHJhY2tMaXN0KFdlYWtQ
dHI8SFRNTE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBBdWRp
b1RyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiB9OwpAQCAtNjEsNCArNjIsOCBAQCBz
dGF0aWNfYXNzZXJ0KHNpemVvZihBdWRpb1RyYWNrTGlzdCkgPT0gc2l6ZW9mKFRyYWNrTGlzdEJh
c2UpLCAiIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb1RyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVybiB0cmFj
a0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OkF1ZGlvVHJhY2tMaXN0OyB9
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCmluZGV4IGM0
NTU0Y2YyZDIwN2Y2M2ZhN2UzOTlkYWU0NzQ5ZTZjOTEyNzQ3ZGEuLjI5MTNjOGU0MmY2NjUwMjU1
NmVmZjI5YmM4ODA0ZjM1ZjNhOWRlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQWN0aXZlRE9NT2Jq
ZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1w
bEVsZW1lbnRSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgR2VuZXJhdGVBZGRP
cGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBBdWRpb1RyYWNrTGlz
dCA6IEV2ZW50VGFyZ2V0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZERhdGFUZXh0VHJhY2suY3BwCmluZGV4IDgzODAyMzJiNzkyOGEyN2I5MzIzNjgwNmMwMjg1Mjlm
MDdiYmVhODAuLmZhNzhmM2JiZTI5MThkY2FhODM4NDk3N2M5Mzc5YWE0ODVkNDRkOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcApA
QCAtMzAsMjIgKzMwLDIyIEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAiRGF0YUN1
ZS5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0
VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEluYmFuZERhdGFUZXh0VHJhY2spOwogCi1pbmxpbmUgSW5iYW5k
RGF0YVRleHRUcmFjazo6SW5iYW5kRGF0YVRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIFRl
eHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZh
dGUpCi0gICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRl
KQoraW5saW5lIEluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1l
bnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAg
OiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkKIHsKIH0KIAotUmVmPElu
YmFuZERhdGFUZXh0VHJhY2s+IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
JiB0cmFja1ByaXZhdGUpCitSZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gSW5iYW5kRGF0YVRleHRU
cmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYg
dHJhY2tQcml2YXRlKQogewotICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJbmJh
bmREYXRhVGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIGF1
dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmREYXRhVGV4dFRyYWNrKGRvY3VtZW50
LCB0cmFja1ByaXZhdGUpKTsKICAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAg
IHJldHVybiB0ZXh0VHJhY2s7CiB9CkBAIC03MCw4ICs3MCw5IEBAIHZvaWQgSW5iYW5kRGF0YVRl
eHRUcmFjazo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoZW5kLmlzUG9zaXRpdmVJ
bmZpbml0ZSgpICYmIG1lZGlhRWxlbWVudCgpKSB7Ci0gICAgICAgIGN1ZS0+c2V0RW5kVGltZSht
ZWRpYUVsZW1lbnQoKS0+ZHVyYXRpb25NZWRpYVRpbWUoKSk7CisgICAgYXV0byogdGV4dFRyYWNr
TGlzdCA9IGRvd25jYXN0PFRleHRUcmFja0xpc3Q+KHRyYWNrTGlzdCgpKTsKKyAgICBpZiAoZW5k
LmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHRleHRUcmFja0xpc3QgJiYgdGV4dFRyYWNrTGlzdC0+
ZHVyYXRpb24oKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY3VlLT5zZXRFbmRUaW1lKHRleHRUcmFj
a0xpc3QtPmR1cmF0aW9uKCkpOwogICAgICAgICBtX2luY29tcGxldGVDdWVNYXAuYXBwZW5kKCZj
dWUuZ2V0KCkpOwogICAgIH0KIApAQCAtMTAxLDggKzEwMiw5IEBAIHZvaWQgSW5iYW5kRGF0YVRl
eHRUcmFjazo6dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmCiAgICAgY3VlLT53aWxsQ2hhbmdlKCk7CiAKICAgICBNZWRpYVRpbWUgZW5kID0gaW5F
bmQ7Ci0gICAgaWYgKGVuZC5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiBtZWRpYUVsZW1lbnQoKSkK
LSAgICAgICAgZW5kID0gbWVkaWFFbGVtZW50KCktPmR1cmF0aW9uTWVkaWFUaW1lKCk7CisgICAg
YXV0byogdGV4dFRyYWNrTGlzdCA9IGRvd25jYXN0PFRleHRUcmFja0xpc3Q+KHRyYWNrTGlzdCgp
KTsKKyAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHRleHRUcmFja0xpc3QgJiYg
dGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKS5pc1ZhbGlkKCkpCisgICAgICAgIGVuZCA9IHRleHRU
cmFja0xpc3QtPmR1cmF0aW9uKCk7CiAgICAgZWxzZQogICAgICAgICBtX2luY29tcGxldGVDdWVN
YXAucmVtb3ZlRmlyc3QoY3VlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZERhdGFUZXh0VHJhY2suaAppbmRleCBmNmI1MGY0N2E5YTQ1MjQ2NjNlNTZiZTFiNjFiNjAz
NzgyMzZmMzE0Li4yNTAxODRhYTc1MGFjNjgzNDFkYzYxYTI4OTdkZmMxMmIwODVhMTg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaApAQCAt
MzcsMTEgKzM3LDExIEBAIGNsYXNzIERhdGFDdWU7CiBjbGFzcyBJbmJhbmREYXRhVGV4dFRyYWNr
IGZpbmFsIDogcHVibGljIEluYmFuZFRleHRUcmFjayB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChJbmJhbmREYXRhVGV4dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFu
ZERhdGFUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBzdGF0aWMgUmVmPEluYmFuZERhdGFUZXh0VHJhY2s+
IGNyZWF0ZShEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2aXJ0dWFs
IH5JbmJhbmREYXRhVGV4dFRyYWNrKCk7CiAKIHByaXZhdGU6Ci0gICAgSW5iYW5kRGF0YVRleHRU
cmFjayhEb2N1bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUm
KTsKKyAgICBJbmJhbmREYXRhVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSYpOwogCiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNw
cAppbmRleCA1NTZlNDQ5ZTg3NjJhZjE1MDVjOTEwOTAzNjdlZTE1OGRkM2EwMjlmLi4yMzkxZDVl
ZGU1NzI2MDFhYjc5NGQzMjU1YTZmZTllMTVkNGI4M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJUZXh0VHJh
Y2tMaXN0LmgiCiAjaW5jbHVkZSAiVlRUUmVnaW9uTGlzdC5oIgogI2luY2x1ZGUgPG1hdGguaD4K
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNjMsMTQgKzY0LDE0IEBAIHZv
aWQgR2VuZXJpY1RleHRUcmFja0N1ZU1hcDo6cmVtb3ZlKFRleHRUcmFja0N1ZSYgcHVibGljQ3Vl
KQogICAgICAgICBtX2RhdGFUb0N1ZU1hcC5yZW1vdmUoY3VlSWRlbnRpZmllcik7CiB9CiAKLWlu
bGluZSBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3Vt
ZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwgY2xp
ZW50LCB0cmFja1ByaXZhdGUpCitpbmxpbmUgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKKyAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQ
cml2YXRlKQogewogfQogCi1SZWY8SW5iYW5kR2VuZXJpY1RleHRUcmFjaz4gSW5iYW5kR2VuZXJp
Y1RleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBj
bGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmRH
ZW5lcmljVGV4dFRyYWNrPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAg
YXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soZG9j
dW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9w
dFJlZigqbmV3IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkp
OwogICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFj
azsKIH0KQEAgLTgzLDggKzg0LDggQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRh
dGVDdWVGcm9tQ3VlRGF0YShUZXh0VHJhY2tDdWVHZW5lcmljJiBjdWUsIEluYmEKIAogICAgIGN1
ZS5zZXRTdGFydFRpbWUoaW5iYW5kQ3VlLnN0YXJ0VGltZSgpKTsKICAgICBNZWRpYVRpbWUgZW5k
VGltZSA9IGluYmFuZEN1ZS5lbmRUaW1lKCk7Ci0gICAgaWYgKGVuZFRpbWUuaXNQb3NpdGl2ZUlu
ZmluaXRlKCkgJiYgbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIGVuZFRpbWUgPSBtZWRpYUVsZW1l
bnQoKS0+ZHVyYXRpb25NZWRpYVRpbWUoKTsKKyAgICBpZiAoZW5kVGltZS5pc1Bvc2l0aXZlSW5m
aW5pdGUoKSAmJiB0ZXh0VHJhY2tMaXN0KCkgJiYgdGV4dFRyYWNrTGlzdCgpLT5kdXJhdGlvbigp
LmlzVmFsaWQoKSkKKyAgICAgICAgZW5kVGltZSA9IHRleHRUcmFja0xpc3QoKS0+ZHVyYXRpb24o
KTsKICAgICBjdWUuc2V0RW5kVGltZShlbmRUaW1lKTsKICAgICBjdWUuc2V0VGV4dChpbmJhbmRD
dWUuY29udGVudCgpKTsKICAgICBjdWUuc2V0SWQoaW5iYW5kQ3VlLmlkKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaAppbmRleCBm
ZTk1MzQ4ZDNmYmIxYjgzNjQwODU3NGIyNzAxMGE3NmQzYTMxYjBkLi40NTk3YjJhMWM2ZjczYjU2
OTFiNDc1ODcxMzU0MjMyNzI5MmU1OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaApAQCAtNTMsMTEgKzUzLDExIEBAIHByaXZh
dGU6CiBjbGFzcyBJbmJhbmRHZW5lcmljVGV4dFRyYWNrIGZpbmFsIDogcHVibGljIEluYmFuZFRl
eHRUcmFjaywgcHJpdmF0ZSBXZWJWVFRQYXJzZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoSW5iYW5kR2VuZXJpY1RleHRUcmFjayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGll
bnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGljIFJlZjxJbmJhbmRHZW5l
cmljVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7
CiAgICAgdmlydHVhbCB+SW5iYW5kR2VuZXJpY1RleHRUcmFjaygpOwogCiBwcml2YXRlOgotICAg
IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhEb2N1bWVu
dCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAogICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJ
bmJhbmRHZW5lcmljQ3VlJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFu
ZEdlbmVyaWNDdWUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
VGV4dFRyYWNrLmNwcAppbmRleCA5Y2ZhMTRkZjJhZTk1ODY2YzUzYjhiMTAzYjZkODU5ZDRiZmQ1
ZDljLi5jNmZlYTM1ZWQzOGIwNDg2MDNkMmNlODFkZmFiYjAyNjE4ODQyMGVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBAIC0yOCw3ICsyOCw2
IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSW5iYW5kRGF0YVRleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZEdlbmVy
aWNUZXh0VHJhY2suaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCkBAIC0z
OSwyNCArMzgsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoSW5iYW5kVGV4dFRyYWNrKTsKIAotUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5k
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNs
aWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorUmVmPEluYmFuZFRl
eHRUcmFjaz4gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7CiAgICAgc3dpdGNoICh0cmFja1By
aXZhdGUuY3VlRm9ybWF0KCkpIHsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1
ZUZvcm1hdDo6RGF0YToKLSAgICAgICAgcmV0dXJuIEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0
ZShkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOworICAgICAgICByZXR1cm4gSW5iYW5k
RGF0YVRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpOwogICAgIGNhc2Ug
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0OjpHZW5lcmljOgotICAgICAgICByZXR1
cm4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNr
UHJpdmF0ZSk7CisgICAgICAgIHJldHVybiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUo
ZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSk7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OjpDdWVGb3JtYXQ6OldlYlZUVDoKLSAgICAgICAgcmV0dXJuIEluYmFuZFdlYlZUVFRleHRUcmFj
azo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgICAgIHJldHVy
biBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2YXRlKTsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgYXV0byB0ZXh0VHJhY2sgPSBJ
bmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRl
KTsKKyAgICBhdXRvIHRleHRUcmFjayA9IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1
bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CiAKLUluYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRy
YWNrKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRl
eHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAgICA6IFRleHRUcmFjaygmZG9jdW1lbnQs
ICZjbGllbnQsIGVtcHR5QXRvbSgpLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxh
YmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpLCBJbkJhbmQpCitJbmJhbmRUZXh0VHJhY2s6
OkluYmFuZFRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZh
dGUmIHRyYWNrUHJpdmF0ZSkKKyAgICA6IFRleHRUcmFjaygmZG9jdW1lbnQsIGVtcHR5QXRvbSgp
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpLCBJbkJhbmQpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQogewogICAg
IG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwpAQCAtMTU5LDEwICsxNTgsOSBAQCB2b2lkIElu
YmFuZFRleHRUcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdl
KQogCiB2b2lkIEluYmFuZFRleHRUcmFjazo6d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVt
ZW50ID0gbWFrZVJlZlB0cihtZWRpYUVsZW1lbnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50
KQotICAgICAgICByZXR1cm47Ci0gICAgZWxlbWVudC0+cmVtb3ZlVGV4dFRyYWNrKCp0aGlzKTsK
KyAgICBtX2NsaWVudHMuZm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGll
bnQud2lsbFJlbW92ZVRleHRUcmFjaygqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgSW5iYW5k
VGV4dFRyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQpAQCAtMTk3LDE0ICsxOTUsNiBAQCBN
ZWRpYVRpbWUgSW5iYW5kVGV4dFRyYWNrOjpzdGFydFRpbWVWYXJpYW5jZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+c3RhcnRUaW1lVmFyaWFuY2UoKTsKIH0KIAotdm9pZCBJbmJhbmRU
ZXh0VHJhY2s6OnNldE1lZGlhRWxlbWVudChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1l
bnQpCi17Ci0gICAgVHJhY2tCYXNlOjpzZXRNZWRpYUVsZW1lbnQoZWxlbWVudCk7Ci0jaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgbV9wcml2YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7Ci0jZW5kaWYKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
dm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29u
c3Qgdm9pZCogbG9nSWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFRleHRUcmFjay5oCmluZGV4IGJiMTJjMTU5ZGU3NGY5Mjk0NTM2OTU0MWQ3ODcyZTZjNWMx
YWNiNDcuLmYyOGExZDQ4NWE1OTliNjg5YzBmNjEwNGQ2ZjNmODQxMGM1ZTA4MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2sgOiBwdWJsaWMgVGV4
dFRyYWNrLCBwcml2YXRlIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoSW5iYW5kVGV4dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEluYmFuZFRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50Jiwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNr
PiBjcmVhdGUoRG9jdW1lbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAgICAgdmlydHVh
bCB+SW5iYW5kVGV4dFRyYWNrKCk7CiAKICAgICBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTQ5LDEzICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgQXRvbVN0cmluZyBp
bkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHNldFByaXZhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwotICAgIHZvaWQgc2V0TWVk
aWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOwogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0
IHZvaWQqKSBmaW5hbDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5iYW5kVGV4dFRyYWNr
KERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwor
ICAgIEluYmFuZFRleHRUcmFjayhEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsK
IAogICAgIHZvaWQgc2V0TW9kZUludGVybmFsKE1vZGUpOwogICAgIHZvaWQgdXBkYXRlS2luZEZy
b21Qcml2YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHAKaW5kZXggMmFhOWYzYjAzYWIzYTE0NGU5MjcxM2E2NWZhZjNmZmNk
ZjVhYTdhYy4uMjIyM2E1NzJhYTBmNmNhOTRjMmQyNzRmMWVjMzc1NGJjNTI1Zjc3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNw
cApAQCAtMzksMTQgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKEluYmFuZFdlYlZUVFRleHRUcmFjayk7CiAKLWlubGluZSBJbmJhbmRX
ZWJWVFRUZXh0VHJhY2s6OkluYmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQs
IFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCi0gICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2
YXRlKQoraW5saW5lIEluYmFuZFdlYlZUVFRleHRUcmFjazo6SW5iYW5kV2ViVlRUVGV4dFRyYWNr
KERvY3VtZW50JiBkb2N1bWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRl
KQorICAgIDogSW5iYW5kVGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpCiB7CiB9CiAK
LVJlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFdlYlZUVFRl
eHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZSYgdHJhY2tQcml2YXRlKQogewotICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJ
bmJhbmRXZWJWVFRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7Cisg
ICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhk
b2N1bWVudCwgdHJhY2tQcml2YXRlKSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQo
KTsKICAgICByZXR1cm4gdGV4dFRyYWNrOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgKaW5kZXggMzE1MjM1NzI5YjVmYmQ5OWY2MzRm
YTdkNmM3NzZjMjdiYzZjMWM1Mi4uOTFmYTAzOThhNGY5YzBlN2E1NDk3NjYyNDhmYTMwNTZmODE3
NTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRl
eHRUcmFjay5oCkBAIC0zNiwxMSArMzYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SW5iYW5kV2ViVlRUVGV4dFRyYWNrIGZpbmFsIDogcHVibGljIEluYmFuZFRleHRUcmFjaywgcHJp
dmF0ZSBXZWJWVFRQYXJzZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5i
YW5kV2ViVlRUVGV4dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRU
cmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1l
bnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAgICAgdmlydHVhbCB+SW5iYW5kV2ViVlRU
VGV4dFRyYWNrKCk7CiAKIHByaXZhdGU6Ci0gICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3Vt
ZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIElu
YmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsK
IAogICAgIFdlYlZUVFBhcnNlciYgcGFyc2VyKCk7CiAgICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKaW5kZXggMzFjYmYw
YTY1OGQ4NTNkYzk5MTA1OGUxZjJhOWZjYjk5ZmU3NzlkNC4uMzgzNTc2NDExNmQwOTI1OTg4Nzhi
NjVhOGZkOGE4MjU5MDNlZDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKExvYWRhYmxlVGV4dFRyYWNrKTsKIAogTG9h
ZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNr
LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UpCi0gICAgOiBUZXh0VHJhY2soJnRyYWNrLmRvY3VtZW50KCksICZ0cmFjaywga2lu
ZCwgZW1wdHlTdHJpbmcoKSwgbGFiZWwsIGxhbmd1YWdlLCBUcmFja0VsZW1lbnQpCisgICAgOiBU
ZXh0VHJhY2soJnRyYWNrLmRvY3VtZW50KCksIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBs
YW5ndWFnZSwgVHJhY2tFbGVtZW50KQogICAgICwgbV90cmFja0VsZW1lbnQoJnRyYWNrKQogewog
fQpAQCAtOTYsMTEgKzk2LDYgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVMb2Fk
KGNvbnN0IFVSTCYgdXJsKQogICAgIH0pOwogfQogCi1FbGVtZW50KiBMb2FkYWJsZVRleHRUcmFj
azo6ZWxlbWVudCgpCi17Ci0gICAgcmV0dXJuIG1fdHJhY2tFbGVtZW50OwotfQotCiB2b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFja0xvYWRlciYgbG9hZGVy
KQogewogICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBtX2xvYWRlci5nZXQoKSA9PSAmbG9hZGVy
KTsKQEAgLTExNCw4ICsxMDksNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZh
aWxhYmxlKFRleHRUcmFja0xvYWRlciYgbG9hZGVyKQogICAgICAgICBtX2N1ZXMtPmFkZChXVEZN
b3ZlKG5ld0N1ZSkpOwogICAgIH0KIAotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50
KCktPnRleHRUcmFja0FkZEN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgIFRleHRUcmFjazo6bmV3
Q3Vlc0F2YWlsYWJsZSgqbV9jdWVzKTsKIH0KIAogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6Y3Vl
TG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXImIGxvYWRlciwgYm9vbCBsb2FkaW5nRmFp
bGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRU
cmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCmlu
ZGV4IDA4ZGZhYWQyOGRjZGQxZDhhYjVjYjBmYjZhZTJmODYxYmU3OTA4YjMuLmI3ZmI0M2Y5N2Uw
OGU3N2I2OTZkYzNhZGFjODRkZDZmNDlmMTc0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgKQEAgLTU2LDcgKzU2LDYgQEAgcHJpdmF0ZToKIAog
ICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzRGVmYXVsdCgpIGNv
bnN0IGZpbmFsOwotICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBmaW5hbDsKIAogICAgIHZvaWQgbG9h
ZFRpbWVyRmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmlu
ZGV4IGU1ZTUwYjQxOTU2ZWIxNDE2MWIzYWY1MjgzODFhNTc1ZGQwZjE4YzUuLjVjZTI2ZTZhZGE0
MDVmMDlmMzFmZmM3Mzg4Y2E4ODk4MzBjYzhhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJEYXRhQ3VlLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0
VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgpAQCAtODgsMjAgKzg3
LDE5IEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBmb3JjZWRLZXl3b3JkKCkKIAogVGV4dFRy
YWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpCiB7Ci0gICAgc3RhdGljIFRleHRU
cmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgIm9mZiBtZW51
IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7
CisgICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5s
ZWFrUmVmKCk7CiAgICAgcmV0dXJuIG9mZjsKIH0KIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNh
cHRpb25NZW51QXV0b21hdGljSXRlbSgpCiB7Ci0gICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21h
dGljID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgImF1dG9tYXRpYyBtZW51
IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7
CisgICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGljID0gVGV4dFRyYWNrOjpjcmVhdGUobnVs
bHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVt
cHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAotVGV4dFRy
YWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNr
Q2xpZW50KiBjbGllbnQsIGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcm
IGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Us
IFRleHRUcmFja1R5cGUgdHlwZSkKLSAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFj
aywgaWQsIGxhYmVsLCBsYW5ndWFnZSkKK1RleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21T
dHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UsIFRleHRUcmFja1R5cGUgdHlwZSkKKyAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFj
a0Jhc2U6OlRleHRUcmFjaywgaWQsIGxhYmVsLCBsYW5ndWFnZSkKICAgICAsIEFjdGl2ZURPTU9i
amVjdChjb250ZXh0KQotICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUo
dHlwZSkKIHsKICAgICBpZiAoa2luZCA9PSBjYXB0aW9uc0tleXdvcmQoKSkKQEAgLTExNiw5ICsx
MTQsOSBAQCBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgYwogICAgICAgICBtX2tpbmQgPSBLaW5kOjpN
ZXRhZGF0YTsKIH0KIAotUmVmPFRleHRUcmFjaz4gVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSkKK1JlZjxUZXh0VHJhY2s+IFRleHRUcmFjazo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0cmlu
ZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFn
ZSkKIHsKLSAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrKGRvY3Vt
ZW50LCBjbGllbnQsIGtpbmQsIGlkLCBsYWJlbCwgbGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CisgICAg
YXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IFRleHRUcmFjayhkb2N1bWVudCwga2luZCwg
aWQsIGxhYmVsLCBsYW5ndWFnZSwgQWRkVHJhY2spKTsKICAgICB0ZXh0VHJhY2stPnN1c3BlbmRJ
Zk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CkBAIC0xMjYsOCArMTI0LDkgQEAg
UmVmPFRleHRUcmFjaz4gVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBUZXh0
VHJhY2tDbGllbnQqIGNsaWVudCwgY28KIFRleHRUcmFjazo6flRleHRUcmFjaygpCiB7CiAgICAg
aWYgKG1fY3VlcykgewotICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVu
dC0+dGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7CisgICAgICAgIG1fY2xpZW50
cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgICAgICBjbGllbnQudGV4
dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7CisgICAgICAgIH0pOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY3Vlcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAg
IG1fY3Vlcy0+aXRlbShpKS0+c2V0VHJhY2sobnVsbHB0cik7CiAgICAgfQpAQCAtMTM3LDYgKzEz
NiwyMyBAQCBUZXh0VHJhY2s6On5UZXh0VHJhY2soKQogICAgIH0KIH0KIAorVGV4dFRyYWNrTGlz
dCogVGV4dFRyYWNrOjp0ZXh0VHJhY2tMaXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG93bmNh
c3Q8VGV4dFRyYWNrTGlzdD4odHJhY2tMaXN0KCkpOworfQorCit2b2lkIFRleHRUcmFjazo6YWRk
Q2xpZW50KFRleHRUcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRz
LmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKK30KKwordm9p
ZCBUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KFRleHRUcmFja0NsaWVudCYgY2xpZW50KQoreworICAg
IEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92
ZShjbGllbnQpOworfQorCiBEb2N1bWVudCYgVGV4dFRyYWNrOjpkb2N1bWVudCgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC0yMDAsMTkgKzIxNiwx
NSBAQCB2b2lkIFRleHRUcmFjazo6c2V0S2luZChLaW5kIG5ld0tpbmQpCiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKICAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0
aGlzIHRyYWNrIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxl
CiAgICAgLy8gZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLgot
ICAgIGlmIChtX3NvdXJjZUJ1ZmZlcikKLSAgICAgICAgbV9zb3VyY2VCdWZmZXItPnRleHRUcmFj
a3MoKS5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2Jq
ZWN0IHJlZmVyZW5jZWQgYnkKICAgICAvLyB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhl
IEhUTUxNZWRpYUVsZW1lbnQuCi0gICAgaWYgKG1lZGlhRWxlbWVudCgpKQotICAgICAgICBtZWRp
YUVsZW1lbnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKICNl
bmRpZgogCiAgICAgaWYgKG9sZEtpbmQgIT0gbV9raW5kKSB7CiAgICAgICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgbV9raW5kKTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAg
ICAgbV9jbGllbnQtPnRleHRUcmFja0tpbmRDaGFuZ2VkKCp0aGlzKTsKKyAgICAgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgICAgIGNsaWVudC50
ZXh0VHJhY2tLaW5kQ2hhbmdlZCgqdGhpcyk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApAQCAt
MjUyLDggKzI2NCwxMSBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZShNb2RlIG1vZGUpCiAKICAg
ICAvLyBJZiBtb2RlIGNoYW5nZXMgdG8gZGlzYWJsZWQsIHJlbW92ZSB0aGlzIHRyYWNrJ3MgY3Vl
cyBmcm9tIHRoZSBjbGllbnQKICAgICAvLyBiZWNhdXNlIHRoZXkgd2lsbCBubyBsb25nZXIgYmUg
YWNjZXNzaWJsZSBmcm9tIHRoZSBjdWVzKCkgZnVuY3Rpb24uCi0gICAgaWYgKG1vZGUgPT0gTW9k
ZTo6RGlzYWJsZWQgJiYgbV9jbGllbnQgJiYgbV9jdWVzKQotICAgICAgICBtX2NsaWVudC0+dGV4
dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7CisgICAgaWYgKG1vZGUgPT0gTW9kZTo6
RGlzYWJsZWQgJiYgbV9jdWVzKSB7CisgICAgICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAo
YXV0byYgY2xpZW50KSB7CisgICAgICAgICAgICBjbGllbnQudGV4dFRyYWNrUmVtb3ZlQ3Vlcygq
dGhpcywgKm1fY3Vlcyk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIGlmIChtb2RlICE9IE1v
ZGU6OlNob3dpbmcgJiYgbV9jdWVzKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9jdWVzLT5sZW5ndGgoKTsgKytpKQpAQCAtMjYyLDggKzI3Nyw5IEBAIHZvaWQgVGV4dFRyYWNr
OjpzZXRNb2RlKE1vZGUgbW9kZSkKIAogICAgIG1fbW9kZSA9IG1vZGU7CiAKLSAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tNb2RlQ2hhbmdlZCgqdGhpcyk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LnRleHRUcmFja01vZGVDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogVGV4dFRyYWNr
Q3VlTGlzdCogVGV4dFRyYWNrOjpjdWVzKCkKQEAgLTI4NSw5ICszMDEsMTAgQEAgdm9pZCBUZXh0
VHJhY2s6OnJlbW92ZUFsbEN1ZXMoKQogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
IAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1
ZXMoKnRoaXMsICptX2N1ZXMpOwotICAgIAorICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAo
YXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlz
LCAqbV9jdWVzKTsKKyAgICB9KTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVz
LT5sZW5ndGgoKTsgKytpKQogICAgICAgICBtX2N1ZXMtPml0ZW0oaSktPnNldFRyYWNrKG51bGxw
dHIpOwogICAgIApAQCAtMzQxLDggKzM1OCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFRleHRUcmFj
azo6YWRkQ3VlKFJlZjxUZXh0VHJhY2tDdWU+JiYgY3VlKQogICAgIGN1ZS0+c2V0VHJhY2sodGhp
cyk7CiAgICAgZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpLmFkZChjdWUuY29weVJlZigpKTsKIAot
ICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja0FkZEN1ZSgqdGhp
cywgY3VlKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpcywgY3VlXSAoYXV0byYgY2xpZW50
KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tBZGRDdWUoKnRoaXMsIGN1ZSk7CisgICAgfSk7
CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMzY2LDggKzM4NCw5IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFRleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3VlKQogICAgIG1fY3Vlcy0+
cmVtb3ZlKGN1ZSk7CiAgICAgY3VlLnNldElzQWN0aXZlKGZhbHNlKTsKICAgICBjdWUuc2V0VHJh
Y2sobnVsbHB0cik7Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+dGV4dFRy
YWNrUmVtb3ZlQ3VlKCp0aGlzLCBjdWUpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0
byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1
ZSk7CisgICAgfSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtNDYwLDMyICs0NzksMzAgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gVGV4dFRyYWNrOjpyZW1vdmVSZWdpb24oVlRUUmVnaW9uJiByZWdp
b24pCiAKIHZvaWQgVGV4dFRyYWNrOjpjdWVXaWxsQ2hhbmdlKFRleHRUcmFja0N1ZSYgY3VlKQog
ewotICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoZSBjdWUg
bWF5IG5lZWQgdG8gYmUgcmVwb3NpdGlvbmVkIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgaW50ZXJ2
YWwgdHJlZSwgbWF5IG5lZWQgdG8KLSAgICAvLyBiZSByZS1yZW5kZXJlZCwgZXRjLCBzbyByZW1v
dmUgaXQgYmVmb3JlIHRoZSBtb2RpZmljYXRpb24uLi4KLSAgICBtX2NsaWVudC0+dGV4dFRyYWNr
UmVtb3ZlQ3VlKCp0aGlzLCBjdWUpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYg
Y2xpZW50KSB7CisgICAgICAgIC8vIFRoZSBjdWUgbWF5IG5lZWQgdG8gYmUgcmVwb3NpdGlvbmVk
IGluIHRoZSBtZWRpYSBlbGVtZW50J3MgaW50ZXJ2YWwgdHJlZSwgbWF5IG5lZWQgdG8KKyAgICAg
ICAgLy8gYmUgcmUtcmVuZGVyZWQsIGV0Yywgc28gcmVtb3ZlIGl0IGJlZm9yZSB0aGUgbW9kaWZp
Y2F0aW9uLi4uCisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7
CisgICAgfSk7CiB9CiAKIHZvaWQgVGV4dFRyYWNrOjpjdWVEaWRDaGFuZ2UoVGV4dFRyYWNrQ3Vl
JiBjdWUpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8g
TWFrZSBzdXJlIHRoZSBUZXh0VHJhY2tDdWVMaXN0IG9yZGVyIGlzIHVwLXRvLWRhdGUuCiAgICAg
ZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpLnVwZGF0ZUN1ZUluZGV4KGN1ZSk7CiAKICAgICAvLyAu
Li4gYW5kIGFkZCBpdCBiYWNrIGFnYWluLgotICAgIG1fY2xpZW50LT50ZXh0VHJhY2tBZGRDdWUo
KnRoaXMsIGN1ZSk7CisgICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsK
KyAgICAgICAgY2xpZW50LnRleHRUcmFja0FkZEN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIH0K
IAogaW50IFRleHRUcmFjazo6dHJhY2tJbmRleCgpCiB7CiAgICAgaWYgKCFtX3RyYWNrSW5kZXgp
IHsKLSAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgaWYgKCFtX3RleHRUcmFj
a0xpc3QpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgbV90cmFja0luZGV4ID0gbV9t
ZWRpYUVsZW1lbnQtPmVuc3VyZVRleHRUcmFja3MoKS5nZXRUcmFja0luZGV4KCp0aGlzKTsKKyAg
ICAgICAgbV90cmFja0luZGV4ID0gbV90ZXh0VHJhY2tMaXN0LT5nZXRUcmFja0luZGV4KCp0aGlz
KTsKICAgICB9CiAgICAgcmV0dXJuIG1fdHJhY2tJbmRleC52YWx1ZSgpOwogfQpAQCAtNTEyLDkg
KzUyOSw5IEBAIFRleHRUcmFja0N1ZUxpc3QmIFRleHRUcmFjazo6ZW5zdXJlVGV4dFRyYWNrQ3Vl
TGlzdCgpCiBpbnQgVGV4dFRyYWNrOjp0cmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tz
KCkKIHsKICAgICBpZiAoIW1fcmVuZGVyZWRUcmFja0luZGV4KSB7Ci0gICAgICAgIGlmICghbV9t
ZWRpYUVsZW1lbnQpCisgICAgICAgIGlmICghbV90ZXh0VHJhY2tMaXN0KQogICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIG1fcmVuZGVyZWRUcmFja0luZGV4ID0gbV9tZWRpYUVsZW1lbnQt
PmVuc3VyZVRleHRUcmFja3MoKS5nZXRUcmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tz
KCp0aGlzKTsKKyAgICAgICAgbV9yZW5kZXJlZFRyYWNrSW5kZXggPSBtX3RleHRUcmFja0xpc3Qt
PmdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoKnRoaXMpOwogICAgIH0KICAg
ICByZXR1cm4gbV9yZW5kZXJlZFRyYWNrSW5kZXgudmFsdWUoKTsKIH0KQEAgLTU5Nyw3ICs2MTQs
NiBAQCBjb25zdCBjaGFyKiBUZXh0VHJhY2s6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAog
ICAgIHJldHVybiAiVGV4dFRyYWNrIjsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiB2
b2lkIFRleHRUcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7
CiAgICAgLy8gMTEuMSBsYW5ndWFnZSwgb24gc2V0dGluZzoKQEAgLTYxMSwxNSArNjI3LDM1IEBA
IHZvaWQgVGV4dFRyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkK
IAogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sg
aXMgbm90IG51bGwsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBl
dmVudCBuYW1lZCBjaGFuZ2UgYXQgc291cmNlQnVmZmVyLnRleHRUcmFja3MuCi0gICAgaWYgKG1f
c291cmNlQnVmZmVyKQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dGV4dFRyYWNrcygpLnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8vIDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QgcmVmZXJl
bmNlZCBieQogICAgIC8vIHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlh
RWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVtZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgp
LT5lbnN1cmVUZXh0VHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOworICAgIG1fY2xpZW50
cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tM
YW5ndWFnZUNoYW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFRleHRUcmFjazo6c2V0
SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpCit7CisgICAgVHJhY2tCYXNlOjpzZXRJZChpZCk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LnRleHRUcmFja0lkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgVGV4dFRy
YWNrOjpzZXRMYWJlbChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBUcmFja0Jhc2U6
OnNldExhYmVsKGxhYmVsKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrTGFiZWxDaGFuZ2VkKCp0aGlzKTsKKyAg
ICB9KTsKK30KKwordm9pZCBUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoY29uc3QgVGV4dFRy
YWNrQ3VlTGlzdCYgbGlzdCkKK3sKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbJl0gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrQWRkQ3VlcygqdGhpcywgbGlzdCk7Cisg
ICAgfSk7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suaAppbmRleCA3NDYzMmVhNGMwZDlhMDM3YTdiNjYwMTE3N2Qz
NGM5YTljMTUzZTYyLi44YjMxNmU3YWRhNDljMzAyODk1MjQ1YjBhNzE4ZWNkNGQ4OTI5ZTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTMyLDMwICszMiwzNiBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5o
IgogI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBj
bGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0VHJhY2tMaXN0OwogY2xhc3MgVGV4dFRyYWNrQ3Vl
TGlzdDsKIGNsYXNzIFZUVFJlZ2lvbjsKIGNsYXNzIFZUVFJlZ2lvbkxpc3Q7CiAKLWNsYXNzIFRl
eHRUcmFja0NsaWVudCB7CitjbGFzcyBUZXh0VHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8VGV4dFRyYWNrQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dFRyYWNr
Q2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hhbmdl
ZChUZXh0VHJhY2smKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0
VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2smLCBUZXh0VHJh
Y2tDdWUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJh
Y2smLCBUZXh0VHJhY2tDdWUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0lkQ2hh
bmdlZChUZXh0VHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5n
ZWQoVGV4dFRyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2Vk
KFRleHRUcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tMYWJlbENoYW5nZWQo
VGV4dFRyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0xhbmd1YWdlQ2hhbmdl
ZChUZXh0VHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0
VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNr
Q3VlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sm
LCBUZXh0VHJhY2tDdWUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVRleHRUcmFj
ayhUZXh0VHJhY2smKSB7IH0KIH07CiAKIGNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jh
c2UsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFRleHRUcmFjayk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCosIFRleHRUcmFja0NsaWVu
dCosIGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBB
dG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOworICAgIHN0YXRp
YyBSZWY8VGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5k
LCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKTsKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKIAogICAgIHN0
YXRpYyBUZXh0VHJhY2smIGNhcHRpb25NZW51T2ZmSXRlbSgpOwpAQCAtNjQsNiArNzAsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsK
ICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbVN0cmluZyYpOwog
CisgICAgVGV4dFRyYWNrTGlzdCogdGV4dFRyYWNrTGlzdCgpIGNvbnN0OworCiAgICAgZW51bSBj
bGFzcyBLaW5kIHsgU3VidGl0bGVzLCBDYXB0aW9ucywgRGVzY3JpcHRpb25zLCBDaGFwdGVycywg
TWV0YWRhdGEsIEZvcmNlZCB9OwogICAgIEtpbmQga2luZCgpIGNvbnN0OwogCkBAIC04OCw3ICs5
Niw4IEBAIHB1YmxpYzoKIAogICAgIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXNJbnRlcm5hbCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3Vlcy5nZXQoKTsgfQogCi0gICAgdm9pZCBjbGVhckNsaWVudCgpIG92
ZXJyaWRlIHsgbV9jbGllbnQgPSBudWxscHRyOyB9CisgICAgdm9pZCBhZGRDbGllbnQoVGV4dFRy
YWNrQ2xpZW50Jik7CisgICAgdm9pZCBjbGVhckNsaWVudChUZXh0VHJhY2tDbGllbnQmKTsKIAog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZEN1ZShSZWY8VGV4dFRyYWNrQ3VlPiYmKTsKICAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmKTsKQEAgLTEy
Miw5ICsxMzEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVBbGxDdWVzKCk7CiAKLSNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0
cmluZyYpIG92ZXJyaWRlOwotI2VuZGlmCisgICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9t
U3RyaW5nJikgZmluYWw7CisKKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0luYmFuZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAg
LTEzOSwyMCArMTQ5LDIyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ3Vlc05v
dEluVGltZVJhbmdlcyhQbGF0Zm9ybVRpbWVSYW5nZXMmKTsKIAogcHJvdGVjdGVkOgotICAgIFRl
eHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3Qg
QXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcm
IGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7CisgICAg
VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5k
LCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBlKTsKIAogICAgIERvY3VtZW50JiBkb2N1
bWVudCgpIGNvbnN0OwotICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9j
bGllbnQ7IH0KIAogICAgIGJvb2wgaGFzQ3VlKFRleHRUcmFja0N1ZSYsIFRleHRUcmFja0N1ZTo6
Q3VlTWF0Y2hSdWxlcyA9IFRleHRUcmFja0N1ZTo6TWF0Y2hBbGxGaWVsZHMpOwogICAgIHZvaWQg
c2V0S2luZChLaW5kKTsKIAorICAgIHZvaWQgbmV3Q3Vlc0F2YWlsYWJsZShjb25zdCBUZXh0VHJh
Y2tDdWVMaXN0Jik7CisKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogICAg
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG1fc3R5bGVTaGVldHM7CisgICAgV2Vha0hh
c2hTZXQ8VGV4dFRyYWNrQ2xpZW50PiBtX2NsaWVudHM7CiAKIHByaXZhdGU6CiAgICAgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBUZXh0VHJhY2tFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsgfQogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTE2Niw2ICsx
NzgsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJUZXh0VHJhY2siOyB9CiAjZW5kaWYKIAorICAgIFdlYWtQdHI8VGV4
dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tMaXN0OworCiAgICAgVlRUUmVnaW9uTGlzdCYgZW5zdXJl
VlRUUmVnaW9uTGlzdCgpOwogICAgIFJlZlB0cjxWVFRSZWdpb25MaXN0PiBtX3JlZ2lvbnM7CiAK
QEAgLTE3Myw3ICsxODcsNiBAQCBwcml2YXRlOgogCiAgICAgTW9kZSBtX21vZGUgeyBNb2RlOjpE
aXNhYmxlZCB9OwogICAgIEtpbmQgbV9raW5kIHsgS2luZDo6U3VidGl0bGVzIH07Ci0gICAgVGV4
dFRyYWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBUZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwog
ICAgIFJlYWRpbmVzc1N0YXRlIG1fcmVhZGluZXNzU3RhdGUgeyBOb3RMb2FkZWQgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPGludD4gbV90cmFja0luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaWRsCmluZGV4IGFhMWIwNGEyNzJjOTkyZjEyZWNiNzEwODNlNjcwOTU4OGVjMmI4
ODguLjJlNWY1NzJmNDEwMjVlZjY4MWVkNzEzZjAxZmY2YmI1OGY2NjQwOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKQEAgLTMwLDcgKzMwLDcgQEAgZW51bSBUZXh0
VHJhY2tLaW5kIHsgInN1YnRpdGxlcyIsICJjYXB0aW9ucyIsICJkZXNjcmlwdGlvbnMiLCAiY2hh
cHRlcnMiLCAibWV0YWQKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklE
RU8sCiAgICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24sCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsRWxlbWVudFJvb3QsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZSwKICAgICBHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgRXhwb3NlZD1X
aW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCmluZGV4
IGZmOWExNDk5Y2Q1MTY4OGNhOGRiYzMwZjAxZGI0YjZjNjJiOTZkY2MuLjIyOTI2NTczN2FjY2Mw
YTMwYzJkMTc5OGVhMDgxY2ViYTRkYzdkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiVGV4dFRy
YWNrTGlzdC5oIgogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIklu
YmFuZFRleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNp
bmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgpAQCAtMzksMjcgKzM4LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRUcmFja0xpc3Qp
OwogCi1UZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVu
dD4gZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IFRyYWNr
TGlzdEJhc2UoZWxlbWVudCwgY29udGV4dCkKK1RleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2UoY29u
dGV4dCwgVHJhY2tMaXN0QmFzZTo6VGV4dFRyYWNrTGlzdCkKIHsKIH0KIAogVGV4dFRyYWNrTGlz
dDo6flRleHRUcmFja0xpc3QoKQogewotICAgIGNsZWFyRWxlbWVudCgpOwotfQotCi12b2lkIFRl
eHRUcmFja0xpc3Q6OmNsZWFyRWxlbWVudCgpCi17Ci0gICAgVHJhY2tMaXN0QmFzZTo6Y2xlYXJF
bGVtZW50KCk7Ci0gICAgZm9yIChhdXRvJiB0cmFjayA6IG1fZWxlbWVudFRyYWNrcykgewotICAg
ICAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgICAgICB0cmFjay0+Y2xl
YXJDbGllbnQoKTsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYWRkVHJhY2tUcmFj
a3MpIHsKLSAgICAgICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICAgICAg
dHJhY2stPmNsZWFyQ2xpZW50KCk7Ci0gICAgfQogfQogCiB1bnNpZ25lZCBUZXh0VHJhY2tMaXN0
OjpsZW5ndGgoKSBjb25zdApAQCAtMjAzLDggKzE4OCw4IEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6
YXBwZW5kKFJlZjxUZXh0VHJhY2s+JiYgdHJhY2spCiAKICAgICBpbnZhbGlkYXRlVHJhY2tJbmRl
eGVzQWZ0ZXJUcmFjayh0cmFjayk7CiAKLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQo
KSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwotICAgIHRyYWNr
LT5zZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJhY2stPnRyYWNr
TGlzdCgpKQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAogICAgIHNjaGVk
dWxlQWRkVHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CkBAIC0yMzMsOCArMjE4LDggQEAg
dm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUoVHJhY2tCYXNlJiB0cmFjaywgYm9vbCBzY2hlZHVs
ZUV2ZW50KQogCiAgICAgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodGV4dFRyYWNr
KTsKIAotICAgIEFTU0VSVCghdHJhY2subWVkaWFFbGVtZW50KCkgfHwgIWVsZW1lbnQoKSB8fCB0
cmFjay5tZWRpYUVsZW1lbnQoKSA9PSBlbGVtZW50KCkpOwotICAgIHRyYWNrLnNldE1lZGlhRWxl
bWVudChudWxscHRyKTsKKyAgICBpZiAodHJhY2sudHJhY2tMaXN0KCkgPT0gdGhpcykKKyAgICAg
ICAgdHJhY2suY2xlYXJUcmFja0xpc3QoKTsKIAogICAgIFJlZjxUcmFja0Jhc2U+IHRyYWNrUmVm
ID0gKigqdHJhY2tzKVtpbmRleF07CiAgICAgdHJhY2tzLT5yZW1vdmUoaW5kZXgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAppbmRleCBjZDJmZjdiZDBlNmY1ZDMy
ZWQ5YTBjY2EyNTVhZDQ4YWQ2YmM1ODk5Li43MDIxZWQzNjhhNTU4YTgwZGY0MDAwZTNjYWViYmJm
YmQzNWEzYmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrTGlz
dEJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzYsMTYgKzM3LDE0IEBAIGNsYXNzIFRleHRUcmFjazsKIGNsYXNzIFRleHRUcmFj
a0xpc3QgZmluYWwgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChUZXh0VHJhY2tMaXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHRUcmFj
a0xpc3Q+IGNyZWF0ZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxUZXh0VHJhY2tMaXN0PiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1
dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrTGlzdChlbGVtZW50LCBjb250ZXh0KSk7
CisgICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrTGlzdChjb250ZXh0
KSk7CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlz
dDsKICAgICB9CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrTGlzdCgpOwogCi0gICAgdm9pZCBjbGVh
ckVsZW1lbnQoKSBvdmVycmlkZTsKLQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGludCBnZXRUcmFja0luZGV4KFRleHRUcmFjayYpOwogICAgIGludCBnZXRUcmFj
a0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tzKFRleHRUcmFjayYpOwpAQCAtNTgsMTkgKzU3
LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChSZWY8VGV4dFRyYWNrPiYmKTsKICAgICB2
b2lkIHJlbW92ZShUcmFja0Jhc2UmLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKSBvdmVycmlk
ZTsKIAorICAgIHZvaWQgc2V0RHVyYXRpb24oTWVkaWFUaW1lIGR1cmF0aW9uKSB7IG1fZHVyYXRp
b24gPSBkdXJhdGlvbjsgfQorICAgIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2R1cmF0aW9uOyB9CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgVGV4dFRyYWNrTGlzdChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgVGV4dFRyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayhUZXh0VHJh
Y2smKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNlPj4gbV9hZGRUcmFja1RyYWNrczsK
ICAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+IG1fZWxlbWVudFRyYWNrczsKKyAgICBNZWRp
YVRpbWUgbV9kdXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUZXh0VHJhY2tMaXN0KQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpUcmFja0xpc3RCYXNlJiB0cmFja0xpc3QpIHsg
cmV0dXJuIHRyYWNrTGlzdC50eXBlKCkgPT0gV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6VGV4dFRy
YWNrTGlzdDsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwK
aW5kZXggZGY5Y2JlMTMwYmNhNzNiYTY0MGY5NzhjOTFlZjE0NDRjMjExMWU3YS4uODJiYzkyNzI4
ZTRmNTA5ZjRjNTI0YjkzZGIxNjA2NzEwNDg4ZTVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQWN0aXZl
RE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbEVsZW1lbnRSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgR2VuZXJh
dGVBZGRPcGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBUZXh0VHJh
Y2tMaXN0IDogRXZlbnRUYXJnZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwCmluZGV4IGU4Zjk1ZjkzMzEwM2FkODQyYWQ4MjcxMzM2MmYzNTFmNmRkODc3M2QuLmJkYzg4
YWI1MDQ2ZTkxY2ZkYzEzMTQ0MTk3MzkwNDVkMDY4MGQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIlRyYWNr
QmFzZS5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0xh
bmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5B
QkxFKFZJREVPKQogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBpbnQgc191bmlxdWVJZCA9IDA7CkBAIC00OCw4ICs0OCw5IEBA
IHN0YXRpYyBSZWZQdHI8TG9nZ2VyPiYgbnVsbExvZ2dlcigpCiB9CiAjZW5kaWYKIAotVHJhY2tC
YXNlOjpUcmFja0Jhc2UoVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRv
bVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQotICAgIDogbV91bmlx
dWVJZCgrK3NfdW5pcXVlSWQpCitUcmFja0Jhc2U6OlRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBB
dG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCisgICAgOiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQorICAgICwgbV91bmlxdWVJZCgrK3NfdW5p
cXVlSWQpCiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAsIG1fbGFu
Z3VhZ2UobGFuZ3VhZ2UpCkBAIC03MCwyMSArNzEsMjYgQEAgVHJhY2tCYXNlOjpUcmFja0Jhc2Uo
VHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWws
IGMKICNlbmRpZgogfQogCi1FbGVtZW50KiBUcmFja0Jhc2U6OmVsZW1lbnQoKQordm9pZCBUcmFj
a0Jhc2U6OnNldFRyYWNrTGlzdChUcmFja0xpc3RCYXNlJiB0cmFja0xpc3QpCiB7Ci0gICAgcmV0
dXJuIG1fbWVkaWFFbGVtZW50LmdldCgpOworICAgIG1fdHJhY2tMaXN0ID0gbWFrZVdlYWtQdHIo
dHJhY2tMaXN0KTsKIH0KIAotdm9pZCogVHJhY2tCYXNlOjpvcGFxdWVSb290KCkKK3ZvaWQgVHJh
Y2tCYXNlOjpjbGVhclRyYWNrTGlzdCgpCiB7Ci0gICAgaWYgKGF1dG8qIGFzc29jaWF0ZWRFbGVt
ZW50ID0gZWxlbWVudCgpKQotICAgICAgICByZXR1cm4gYXNzb2NpYXRlZEVsZW1lbnQtPm9wYXF1
ZVJvb3QoKTsKLSAgICByZXR1cm4gdGhpczsKKyAgICBtX3RyYWNrTGlzdCA9IG51bGxwdHI7Cit9
CisKK1RyYWNrTGlzdEJhc2UqIFRyYWNrQmFzZTo6dHJhY2tMaXN0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV90cmFja0xpc3QuZ2V0KCk7CiB9CiAKLXZvaWQgVHJhY2tCYXNlOjpzZXRNZWRpYUVs
ZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVtZW50KQordm9pZCogVHJhY2tCYXNl
OjpvcGFxdWVSb290KCkKIHsKLSAgICBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgaWYg
KGF1dG8gdHJhY2tMaXN0ID0gdGhpcy0+dHJhY2tMaXN0KCkpCisgICAgICAgIHJldHVybiB0cmFj
a0xpc3QtPm9wYXF1ZVJvb3QoKTsKKyAgICByZXR1cm4gdGhpczsKIH0KIAogLy8gU2VlOiBodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvYmNwNDcjc2VjdGlvbi0yLjEKQEAgLTE0OCw4ICsxNTQs
OCBAQCB2b2lkIFRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3Vh
Z2UpCiAKICAgICBtX3ZhbGlkQkNQNDdMYW5ndWFnZSA9IGVtcHR5QXRvbSgpOwogCi0gICAgYXV0
byBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpOwotICAgIGlmICghZWxlbWVudCkKKyAgICBhdXRv
IGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKQEAgLTE1OCw3ICsxNjQsNyBA
QCB2b2lkIFRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIGxhbmd1YWdlICci
LCBsYW5ndWFnZSwgIicgaXMgbm90IGEgdmFsaWQgQkNQIDQ3IGxhbmd1YWdlIHRhZy4iKTsKIAot
ICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOworICAgIGNvbnRleHQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCBtZXNzYWdlKTsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAt
MTc0LDggKzE4MCw4IEBAIFdURkxvZ0NoYW5uZWwmIFRyYWNrQmFzZTo6bG9nQ2hhbm5lbCgpIGNv
bnN0CiB9CiAjZW5kaWYKIAotTWVkaWFUcmFja0Jhc2U6Ok1lZGlhVHJhY2tCYXNlKFR5cGUgdHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IFRyYWNrQmFzZSh0eXBlLCBpZCwgbGFiZWwsIGxh
bmd1YWdlKQorTWVkaWFUcmFja0Jhc2U6Ok1lZGlhVHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0
b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKKyAgICA6IFRyYWNr
QmFzZShjb250ZXh0LCB0eXBlLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAppbmRleCBhZjQ1NDQxZDkzNzk0MDk1NGM1NmI2OWM1
YTFhY2ZiNDFiNWEyZTIyLi5lM2RiNDQzZGM5YTNiODg2N2JiMGEwY2Q3NTExNGUyNmRmZWMzZGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKQEAgLTI3LDE4ICsyNywxOSBA
QAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgRWxlbWVudDsKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFz
cyBTb3VyY2VCdWZmZXI7CitjbGFzcyBUcmFja0xpc3RCYXNlOwogCiBjbGFzcyBUcmFja0Jhc2UK
ICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4KKyAgICAsIHB1YmxpYyBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJp
dmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgpAQCAtNDksMjIgKzUwLDEwIEBAIHB1YmxpYzoKICAg
ICBlbnVtIFR5cGUgeyBCYXNlVHJhY2ssIFRleHRUcmFjaywgQXVkaW9UcmFjaywgVmlkZW9UcmFj
ayB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgdmly
dHVhbCBFbGVtZW50KiBlbGVtZW50KCk7Ci0gICAgdm9pZCogb3BhcXVlUm9vdCgpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Pik7Ci0g
ICAgV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21l
ZGlhRWxlbWVudDsgfQotCiAgICAgdmlydHVhbCBBdG9tU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkg
eyBtX2lkID0gaWQ7IH0KLQogICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBt
X2xhYmVsOyB9Ci0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkgeyBt
X2xhYmVsID0gbGFiZWw7IH0KLQogICAgIEF0b21TdHJpbmcgdmFsaWRCQ1A0N0xhbmd1YWdlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWxpZEJDUDQ3TGFuZ3VhZ2U7IH0KICAgICBBdG9tU3RyaW5nIGxh
bmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJD
bGllbnQoKSA9IDA7CiAKICAgICB2aXJ0dWFsIGludCB1bmlxdWVJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5pcXVlSWQ7IH0KIApAQCAtNzMsNiArNjIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciogYnVmZmVyKSB7IG1fc291cmNlQnVmZmVyID0gYnVm
ZmVyOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0VHJhY2tMaXN0KFRyYWNrTGlzdEJhc2UmKTsK
KyAgICB2b2lkIGNsZWFyVHJhY2tMaXN0KCk7CisgICAgVHJhY2tMaXN0QmFzZSogdHJhY2tMaXN0
KCkgY29uc3Q7CisgICAgdm9pZCogb3BhcXVlUm9vdCgpOworCiAgICAgdmlydHVhbCBib29sIGVu
YWJsZWQoKSBjb25zdCA9IDA7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTgzLDkg
Kzc3LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJhY2tCYXNlKFR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UpOworICAgIFRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVs
LCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSk7CiAKLSAgICBXZWFrUHRyPEhUTUxNZWRpYUVs
ZW1lbnQ+IG1fbWVkaWFFbGVtZW50IHsgbnVsbHB0ciB9OworICAgIHZpcnR1YWwgdm9pZCBzZXRJ
ZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TGFiZWwoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiAgICAgU291cmNlQnVmZmVyKiBtX3NvdXJjZUJ1ZmZlciB7IG51
bGxwdHIgfTsKQEAgLTEwMiw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNvbnN0IExv
Z2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0
ciB9OwogI2VuZGlmCisgICAgV2Vha1B0cjxUcmFja0xpc3RCYXNlPiBtX3RyYWNrTGlzdDsKIH07
CiAKIGNsYXNzIE1lZGlhVHJhY2tCYXNlIDogcHVibGljIFRyYWNrQmFzZSB7CkBAIC0xMTAsNyAr
MTA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21TdHJp
bmcmKTsKIAogcHJvdGVjdGVkOgotICAgIE1lZGlhVHJhY2tCYXNlKFR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UpOworICAgIE1lZGlhVHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0
b21TdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIHZvaWQgc2V0S2luZEludGVybmFsKGNvbnN0IEF0
b21TdHJpbmcmKTsKIApAQCAtMTIwLDYgKzExNywxMSBAQCBwcml2YXRlOgogICAgIEF0b21TdHJp
bmcgbV9raW5kOwogfTsKIAoraW5saW5lIHZvaWQqIHJvb3QoVHJhY2tCYXNlKiB0cmFjaykKK3sK
KyAgICByZXR1cm4gdHJhY2stPm9wYXF1ZVJvb3QoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tMaXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
Y3BwCmluZGV4IDAxM2EyM2M5ODFiYWU5YTA5NGUwMzdmY2EwMjY0OTE0NDgxNTM0OWIuLjBmMDUz
NTMzN2ZmZmUxYmU2MDM1YTE3YmIzNjIxYzg0YzE2OTQ1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IlRyYWNrTGlzdEJhc2UuaCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgIlRyYWNrRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtMzksMzcgKzM4LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFRyYWNrTGlzdEJhc2UpOwogCi1UcmFja0xpc3RCYXNlOjpUcmFja0xp
c3RCYXNlKFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK1RyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSB0eXBlKQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQpCi0gICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAsIG1fdHlwZSh0eXBlKQog
ewotICAgIEFTU0VSVCghY29udGV4dCB8fCBpczxEb2N1bWVudD4oY29udGV4dCkpOwogfQogCiBU
cmFja0xpc3RCYXNlOjp+VHJhY2tMaXN0QmFzZSgpCiB7Ci0gICAgY2xlYXJFbGVtZW50KCk7CiB9
CiAKLXZvaWQgVHJhY2tMaXN0QmFzZTo6Y2xlYXJFbGVtZW50KCkKK3ZvaWQqIFRyYWNrTGlzdEJh
c2U6Om9wYXF1ZVJvb3QoKQogewotICAgIG1fZWxlbWVudCA9IG51bGxwdHI7Ci0gICAgZm9yIChh
dXRvJiB0cmFjayA6IG1faW5iYW5kVHJhY2tzKSB7Ci0gICAgICAgIHRyYWNrLT5zZXRNZWRpYUVs
ZW1lbnQobnVsbHB0cik7Ci0gICAgICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOwotICAgIH0KLX0K
LQotRWxlbWVudCogVHJhY2tMaXN0QmFzZTo6ZWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fZWxlbWVudC5nZXQoKTsKLX0KLQotdm9pZCogVHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCgp
IGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudCgpKQot
ICAgICAgICByZXR1cm4gYXNzb2NpYXRlZEVsZW1lbnQtPm9wYXF1ZVJvb3QoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoYXV0byogcm9vdE9ic2VydmVyID0gbV9vcGFxdWVSb290T2Jz
ZXJ2ZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiAoKnJvb3RPYnNlcnZlcikoKTsKKyAgICByZXR1
cm4gdGhpczsKIH0KIAogdW5zaWduZWQgVHJhY2tMaXN0QmFzZTo6bGVuZ3RoKCkgY29uc3QKQEAg
LTgzLDEwICs2Niw4IEBAIHZvaWQgVHJhY2tMaXN0QmFzZTo6cmVtb3ZlKFRyYWNrQmFzZSYgdHJh
Y2ssIGJvb2wgc2NoZWR1bGVFdmVudCkKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICh0cmFjay5tZWRpYUVsZW1lbnQoKSkgewotICAgICAgICBB
U1NFUlQodHJhY2subWVkaWFFbGVtZW50KCkgPT0gbV9lbGVtZW50KTsKLSAgICAgICAgdHJhY2su
c2V0TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgIH0KKyAgICBpZiAodHJhY2sudHJhY2tMaXN0
KCkgPT0gdGhpcykKKyAgICAgICAgdHJhY2suY2xlYXJUcmFja0xpc3QoKTsKIAogICAgIFJlZjxU
cmFja0Jhc2U+IHRyYWNrUmVmID0gKm1faW5iYW5kVHJhY2tzW2luZGV4XTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaAppbmRleCBmYTAwZjg2MGZiZjkwOGQzZDIw
NzdlMWQyZGI4NjI5YjIwYTQyZDk5Li45ZDNlNjgxZTdkZTRhNjE5NGI2ODY3MGY1NGRmNTVlNjIy
YmI5ZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaApAQCAt
MjksMTQgKzI5LDEzIEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTE1lZGlhRWxlbWVu
dDsKLWNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBUcmFja0Jhc2U7CiAKIGNsYXNzIFRyYWNrTGlzdEJh
c2UgOiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewpAQCAtNDQsNiArNDMsOSBA
QCBjbGFzcyBUcmFja0xpc3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4s
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbgogcHVibGljOgogICAgIHZpcnR1YWwgflRyYWNrTGlz
dEJhc2UoKTsKIAorICAgIGVudW0gVHlwZSB7IEJhc2VUcmFja0xpc3QsIFRleHRUcmFja0xpc3Qs
IEF1ZGlvVHJhY2tMaXN0LCBWaWRlb1RyYWNrTGlzdCB9OworICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQorCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoVHJhY2tCYXNlJikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZShUcmFja0Jhc2UmLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKTsK
QEAgLTU0LDEwICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xp
c3RCYXNlPjo6ZGVyZWY7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9pZCogb3Bh
cXVlUm9vdCgpIGNvbnN0OwotICAgIFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CisgICAgdm9pZCogb3BhcXVlUm9vdCgp
OworCisgICAgdXNpbmcgT3BhcXVlUm9vdE9ic2VydmVyID0gV1RGOjpPYnNlcnZlcjx2b2lkKigp
PjsKKyAgICB2b2lkIHNldE9wYXF1ZVJvb3RPYnNlcnZlcihjb25zdCBPcGFxdWVSb290T2JzZXJ2
ZXImIG9ic2VydmVyKSB7IG1fb3BhcXVlUm9vdE9ic2VydmVyID0gbWFrZVdlYWtQdHIob2JzZXJ2
ZXIpOyB9OwogCiAgICAgLy8gTmVlZHMgdG8gYmUgcHVibGljIHNvIHRyYWNrcyBjYW4gY2FsbCBp
dAogICAgIHZvaWQgc2NoZWR1bGVDaGFuZ2VFdmVudCgpOwpAQCAtNjYsNyArNjgsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgVHJhY2tMaXN0QmFzZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+LCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CisgICAgVHJhY2tMaXN0QmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VHlwZSk7CiAKICAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tFdmVudChSZWY8VHJhY2tCYXNlPiYm
KTsKICAgICB2b2lkIHNjaGVkdWxlUmVtb3ZlVHJhY2tFdmVudChSZWY8VHJhY2tCYXNlPiYmKTsK
QEAgLTgwLDEwICs4MiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJl
ZigpOyB9CiAKLSAgICBXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBU
eXBlIG1fdHlwZTsKKyAgICBXZWFrUHRyPE9wYXF1ZVJvb3RPYnNlcnZlcj4gbV9vcGFxdWVSb290
T2JzZXJ2ZXI7CiAgICAgYm9vbCBtX2lzQ2hhbmdlRXZlbnRTY2hlZHVsZWQgeyBmYWxzZSB9Owog
fTsKIAoraW5saW5lIHZvaWQqIHJvb3QoVHJhY2tMaXN0QmFzZSogdHJhY2tMaXN0KQoreworICAg
IHJldHVybiB0cmFja0xpc3QtPm9wYXF1ZVJvb3QoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5jcHAKaW5kZXggZWQ3NTVhMjgwZWYzZjgzYWE5MTZlMjE5YzEyMWIwZDdhYjQ5
YjNjNi4uOTdmMDFhY2M2NTlhMGRjMGU1MWQwZWUxOGQwMzY0MDM2MTlhY2Y0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suY3BwCkBAIC0zNCw3ICszNCw2IEBACiAKICNp
ZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiVmlkZW9UcmFja0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApA
QCAtODAsOSArNzksOCBAQCBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YXJ5
S2V5d29yZCgpCiAgICAgcmV0dXJuIGNvbW1lbnRhcnk7CiB9CiAKLVZpZGVvVHJhY2s6OlZpZGVv
VHJhY2soVmlkZW9UcmFja0NsaWVudCYgY2xpZW50LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQ
cml2YXRlKQotICAgIDogTWVkaWFUcmFja0Jhc2UoTWVkaWFUcmFja0Jhc2U6OlZpZGVvVHJhY2ss
IHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxh
bmd1YWdlKCkpCi0gICAgLCBtX2NsaWVudCgmY2xpZW50KQorVmlkZW9UcmFjazo6VmlkZW9UcmFj
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJh
Y2tQcml2YXRlKQorICAgIDogTWVkaWFUcmFja0Jhc2UoY29udGV4dCwgTWVkaWFUcmFja0Jhc2U6
OlZpZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJh
Y2tQcml2YXRlLmxhbmd1YWdlKCkpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQogICAg
ICwgbV9zZWxlY3RlZCh0cmFja1ByaXZhdGUuc2VsZWN0ZWQoKSkKIHsKQEAgLTEzMCw4ICsxMjgs
MjEgQEAgdm9pZCBWaWRlb1RyYWNrOjpzZXRTZWxlY3RlZChjb25zdCBib29sIHNlbGVjdGVkKQog
ICAgIG1fc2VsZWN0ZWQgPSBzZWxlY3RlZDsKICAgICBtX3ByaXZhdGUtPnNldFNlbGVjdGVkKHNl
bGVjdGVkKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnZpZGVvVHJh
Y2tTZWxlY3RlZENoYW5nZWQoKnRoaXMpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAo
YXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KCp0aGlzKTsKKyAgICB9KTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjphZGRDbGllbnQoVmlkZW9U
cmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKGNs
aWVudCkpOworICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKK30KKwordm9pZCBWaWRlb1RyYWNr
OjpjbGVhckNsaWVudChWaWRlb1RyYWNrQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1f
Y2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7
CiB9CiAKIHNpemVfdCBWaWRlb1RyYWNrOjppbmJhbmRUcmFja0luZGV4KCkKQEAgLTE0MiwxNiAr
MTUzLDI1IEBAIHNpemVfdCBWaWRlb1RyYWNrOjppbmJhbmRUcmFja0luZGV4KCkKIHZvaWQgVmlk
ZW9UcmFjazo6c2VsZWN0ZWRDaGFuZ2VkKGJvb2wgc2VsZWN0ZWQpCiB7CiAgICAgc2V0U2VsZWN0
ZWQoc2VsZWN0ZWQpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50
KSB7CisgICAgICAgIGNsaWVudC52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKCp0aGlzKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBWaWRlb1RyYWNrOjppZENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYg
aWQpCiB7CiAgICAgc2V0SWQoaWQpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0
byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC52aWRlb1RyYWNrSWRDaGFuZ2VkKCp0aGlzKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBWaWRlb1RyYWNrOjpsYWJlbENoYW5nZWQoY29uc3QgQXRvbVN0
cmluZyYgbGFiZWwpCiB7CiAgICAgc2V0TGFiZWwobGFiZWwpOworICAgIG1fY2xpZW50cy5mb3JF
YWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC52aWRlb1RyYWNrTGFi
ZWxDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBWaWRlb1RyYWNrOjpsYW5ndWFn
ZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCkBAIC0xNjEsMTQgKzE4MSwxMSBA
QCB2b2lkIFZpZGVvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYW5n
dWFnZSkKIAogdm9pZCBWaWRlb1RyYWNrOjp3aWxsUmVtb3ZlKCkKIHsKLSAgICBhdXRvIGVsZW1l
bnQgPSBtYWtlUmVmUHRyKG1lZGlhRWxlbWVudCgpLmdldCgpKTsKLSAgICBpZiAoIWVsZW1lbnQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50LT5yZW1vdmVWaWRlb1RyYWNrKCp0aGlzKTsK
KyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBj
bGllbnQud2lsbFJlbW92ZVZpZGVvVHJhY2soKnRoaXMpOworICAgIH0pOwogfQogCi0jaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKLQogdm9pZCBWaWRlb1RyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21T
dHJpbmcmIGtpbmQpCiB7CiAgICAgLy8gMTAuMSBraW5kLCBvbiBzZXR0aW5nOgpAQCAtMTgyLDEy
ICsxOTksMTEgQEAgdm9pZCBWaWRlb1RyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21TdHJpbmcmIGtp
bmQpCiAKICAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGlzIHRy
YWNrIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlCiAgICAg
Ly8gZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci52aWRlb1RyYWNrcy4KLSAgICBp
ZiAobV9zb3VyY2VCdWZmZXIpCi0gICAgICAgIG1fc291cmNlQnVmZmVyLT52aWRlb1RyYWNrcygp
LnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8vIDQuIFF1ZXVlIGEgdGFzayB0byBmaXJl
IGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0
IHJlZmVyZW5jZWQgYnkKICAgICAvLyB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBI
VE1MTWVkaWFFbGVtZW50LgotICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygp
LnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1
dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja0tpbmRDaGFuZ2VkKCp0aGlz
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9t
U3RyaW5nJiBsYW5ndWFnZSkKQEAgLTE5OSw1NCArMjE1LDQ1IEBAIHZvaWQgVmlkZW9UcmFjazo6
c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAgICAgLy8gc2hhcmVkIGJl
dHdlZW4gYWxsIHRyYWNrcyB0aGF0IHN1cHBvcnQgc2V0dGluZyBsYW5ndWFnZS4KIAogICAgIC8v
IDIuIFVwZGF0ZSB0aGlzIGF0dHJpYnV0ZSB0byB0aGUgbmV3IHZhbHVlLgotICAgIE1lZGlhVHJh
Y2tCYXNlOjpzZXRMYW5ndWFnZShsYW5ndWFnZSk7CisgICAgVHJhY2tCYXNlOjpzZXRMYW5ndWFn
ZShsYW5ndWFnZSk7CiAKICAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBv
biB0aGlzIHRyYWNrIGlzIG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlCiAgICAgLy8gZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci52aWRlb1RyYWNr
cy4KLSAgICBpZiAobV9zb3VyY2VCdWZmZXIpCi0gICAgICAgIG1fc291cmNlQnVmZmVyLT52aWRl
b1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8vIDQuIFF1ZXVlIGEgdGFz
ayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUgVmlkZW9UcmFja0xp
c3Qgb2JqZWN0IHJlZmVyZW5jZWQgYnkKICAgICAvLyB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRl
IG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgotICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKLSAgICAg
ICAgbWVkaWFFbGVtZW50KCktPmVuc3VyZVZpZGVvVHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVu
dCgpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAg
IGNsaWVudC52aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAot
I2VuZGlmCi0KIHZvaWQgVmlkZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKIHsKICAg
ICBzd2l0Y2ggKG1fcHJpdmF0ZS0+a2luZCgpKSB7CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6QWx0ZXJuYXRpdmU6Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjphbHRl
cm5hdGl2ZUtleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6YWx0ZXJuYXRp
dmVLZXl3b3JkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6Q2FwdGlvbnM6Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpjYXB0aW9u
c0tleXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3Jk
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoK
LSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAg
ICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjoKLSAgICAgICAgc2V0S2luZEludGVy
bmFsKFZpZGVvVHJhY2s6OnNpZ25LZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKFZpZGVvVHJh
Y2s6OnNpZ25LZXl3b3JkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNr
UHJpdmF0ZTo6U3VidGl0bGVzOgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6
c3VidGl0bGVzS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzdWJ0aXRs
ZXNLZXl3b3JkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0
ZTo6Q29tbWVudGFyeToKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmNvbW1l
bnRhcnlLZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlL
ZXl3b3JkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6
Tm9uZToKLSAgICAgICAgc2V0S2luZEludGVybmFsKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBz
ZXRLaW5kKGVtcHR5U3RyaW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFZpZGVvVHJhY2s6OnNldE1lZGlhRWxlbWVudChX
ZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQpCi17Ci0gICAgVHJhY2tCYXNlOjpzZXRN
ZWRpYUVsZW1lbnQoZWxlbWVudCk7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZv
aWQgVmlkZW9UcmFjazo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lk
KiBsb2dJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApp
bmRleCAxNzllNzEzYmMzNjY5ZTVkNDQ4NDE3ZTQyYmUyOWJiMTBjMzkxODg4Li5lZjg0ODhlN2I1
OTgxZjEzMTcyMmJmYmQ2NzZkNmY0YjE2ZGY1MWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2suaApAQCAtMzAsMjMgKzMwLDMwIEBACiAKICNpbmNsdWRlICJUcmFja0Jhc2Uu
aCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFz
aFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhRGVzY3JpcHRpb247
CiBjbGFzcyBWaWRlb1RyYWNrOworY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAKLWNsYXNzIFZpZGVv
VHJhY2tDbGllbnQgeworY2xhc3MgVmlkZW9UcmFja0NsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxWaWRlb1RyYWNrQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VmlkZW9UcmFj
a0NsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVk
Q2hhbmdlZChWaWRlb1RyYWNrJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrSWRD
aGFuZ2VkKFZpZGVvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0tpbmRD
aGFuZ2VkKFZpZGVvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0xhYmVs
Q2hhbmdlZChWaWRlb1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tMYW5n
dWFnZUNoYW5nZWQoVmlkZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNr
U2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJl
bW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayYpIHsgfQogfTsKIAogY2xhc3MgVmlkZW9UcmFjayBm
aW5hbCA6IHB1YmxpYyBNZWRpYVRyYWNrQmFzZSwgcHJpdmF0ZSBWaWRlb1RyYWNrUHJpdmF0ZUNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrPiBjcmVhdGUoVmlkZW9U
cmFja0NsaWVudCYgY2xpZW50LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAg
IHN0YXRpYyBSZWY8VmlkZW9UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvVHJhY2soY29udGV4dCwgdHJhY2tQcml2
YXRlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflZpZGVvVHJhY2soKTsKIApAQCAtNjAsMjYgKzY3
LDIzIEBAIHB1YmxpYzoKICAgICBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxl
Y3RlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChjb25zdCBib29sKTsKIAotICAg
IHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIFZp
ZGVvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAg
dm9pZCBhZGRDbGllbnQoVmlkZW9UcmFja0NsaWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQo
VmlkZW9UcmFja0NsaWVudCYpOwogCiAgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKIAot
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21TdHJp
bmcmKSBmaW5hbDsKICAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5h
bDsKLSNlbmRpZgogCiAgICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24oKSBj
b25zdDsKIAogICAgIHZvaWQgc2V0UHJpdmF0ZShWaWRlb1RyYWNrUHJpdmF0ZSYpOwotICAgIHZv
aWQgc2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOwog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dl
ciYsIGNvbnN0IHZvaWQqKSBmaW5hbDsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFZpZGVvVHJh
Y2soVmlkZW9UcmFja0NsaWVudCYsIFZpZGVvVHJhY2tQcml2YXRlJik7CisgICAgVmlkZW9UcmFj
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVmlkZW9UcmFja1ByaXZhdGUmKTsKIAogICAgIGJv
b2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwogCkBAIC0xMDAs
NyArMTA0LDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiVmlkZW9UcmFjayI7IH0KICNlbmRpZgogCi0gICAgVmlkZW9UcmFj
a0NsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CisgICAgV2Vha1B0cjxWaWRlb1RyYWNrTGlz
dD4gbV92aWRlb1RyYWNrTGlzdDsKKyAgICBXZWFrSGFzaFNldDxWaWRlb1RyYWNrQ2xpZW50PiBt
X2NsaWVudHM7CiAgICAgUmVmPFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgYm9v
bCBtX3NlbGVjdGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrLmlkbAppbmRleCA3NDcyM2RiYWRkNWU5ZTM3MWMzZjJkMTY3YmJkNzUxNzIxNTU4YzBk
Li4yYzYwYjJiMmU3MDY1MzM4OGQ5YTRlY2MwMDM5YTMyZjM2NjBiMmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwKQEAgLTI1LDggKzI1LDcgQEAKIAogWwogICAg
IENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRS
b290LAotICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxl
LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBWaWRlb1RyYWNrIHsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2tMaXN0LmNwcAppbmRleCA4NDg2NTY2ZDE4Yzg0ZTZmNGE2OGFhZmJlOGEzYzA1
ODI0NzRkM2IwLi43YTkxYTU5MWVhYWE4ZjIxNDZjNGViMzk5NzJiNWE3YjM5NjlkMWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApAQCAtMjksMTMg
KzI5LDEyIEBACiAKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgogCi0jaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1WaWRlb1RyYWNrTGlzdDo6VmlkZW9UcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVk
aWFFbGVtZW50PiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAg
IDogVHJhY2tMaXN0QmFzZShlbGVtZW50LCBjb250ZXh0KQorVmlkZW9UcmFja0xpc3Q6OlZpZGVv
VHJhY2tMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xp
c3RCYXNlKGNvbnRleHQsIFRyYWNrTGlzdEJhc2U6OlZpZGVvVHJhY2tMaXN0KQogewogfQogCkBA
IC01Myw4ICs1Miw4IEBAIHZvaWQgVmlkZW9UcmFja0xpc3Q6OmFwcGVuZChSZWY8VmlkZW9UcmFj
az4mJiB0cmFjaykKICAgICB9CiAgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluc2VydGlvbklu
ZGV4LCB0cmFjay5wdHIoKSk7CiAKLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8
fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwotICAgIHRyYWNrLT5z
ZXRNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJhY2stPnRyYWNrTGlz
dCgpKQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAogICAgIHNjaGVkdWxl
QWRkVHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmgKaW5kZXggOTY2MGRmNmZlMjk3NzRkZGRmM2JjOTM2ZjM0NDEy
OTRkOGMwZGFiMy4uMjVjZWNiZmViYmU0YzJhYWJmYzI3N2YyZDYwODQxNjgyY2VmNjA2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaApAQCAtMzUsOSArMzUs
OSBAQCBjbGFzcyBWaWRlb1RyYWNrOwogCiBjbGFzcyBWaWRlb1RyYWNrTGlzdCBmaW5hbCA6IHB1
YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tM
aXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBvd25lciwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tMaXN0PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8g
bGlzdCA9IGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAg
ICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrTGlzdChjb250ZXh0KSk7
CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlzdDsK
ICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IFZpZGVvVHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKKyAgICBWaWRlb1RyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiB9
OwpAQCAtNjIsNCArNjIsOCBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihWaWRlb1RyYWNrTGlzdCkg
PT0gc2l6ZW9mKFRyYWNrTGlzdEJhc2UpLCAiIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJh
Y2tMaXN0KSB7IHJldHVybiB0cmFja0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJh
c2U6OlZpZGVvVHJhY2tMaXN0OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNl
bmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9U
cmFja0xpc3QuaWRsCmluZGV4IGFiMmI3ZTZjMjNlYmUwZTNiODBiNjczYWI5NTk4YTQxNzg4ZGU3
ZGIuLmE2Y2NjM2M2ZGM5ODZkNzNlMDIxMzFkNWJhNjZhZTQzNzg2YjJlNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCkBAIC0yNiw3ICsyNiw3IEBA
CiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdl
bmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGUsCiAgICAgR2VuZXJhdGVBZGRPcGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGlu
dGVyZmFjZSBWaWRlb1RyYWNrTGlzdCA6IEV2ZW50VGFyZ2V0IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437649</attachid>
            <date>2021-09-08 11:22:53 -0700</date>
            <delta_ts>2021-09-08 11:30:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229924-20210908112253.patch</filename>
            <type>text/plain</type>
            <size>109924</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmYmYxMThlMjE1ZDM3
M2M3ZTc5YzQ3YmY0ZjM4NDRiNjA3MjFkYi4uOTIxZTY2ZGZlMWU2ZjEyZmEzNDQyYTJiMzVkZGIx
ZDY1YTBkOGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAyMS0wOS0wNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBWaWRlbyxB
dWRpbyxUZXh0VHJhY2sgYW5kIFRyYWNrTGlzdHMgdG8gbm90IGRlcGVuZCBvbiBIVE1MTWVkaWFF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
cmFja0Jhc2UgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMgY3VycmVudGx5IGFyZSBvbmx5IGFibGUg
dG8gaGFuZGxlIGEgc2luZ2xlICJjbGllbnQiCisgICAgICAgIGF0IGEgdGltZSwgd2hpY2ggbWVh
bnMgYSBjb21wbGljYXRlZCByZS1zZW5kaW5nIG9mIG5vdGlmaWNhdGlvbnMgZnJvbSBvbmUgY2xp
ZW50IHRvCisgICAgICAgIHRoZSBuZXh0IHRvIGVuc3VyZSBldmVyeXRoaW5nIGZsb3dzIHRvIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGlzCisgICAgICAgIGNvbXBsaWNh
dGVkIGNsaWVudCBoZWlyYXJjaHksIFRyYWNrcyBhbmQgdGhlaXIgVHJhY2tMaXN0cyBiZWluZyB0
aWdodGx5IGJvdW5kIHRvIHRoZWlyCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBtYWtl
IE1TRS1pbi1hLVdvcmtlciBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIGltcGxlbWVudC4KKworICAg
ICAgICBSZWZhY3RvciBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIHRvIGhh
dmUgbXVsdGlwbGUgY2xpZW50cywgdHJhY2tlZCBieQorICAgICAgICBhIFdlYWtIYXNoU2V0LiBS
ZW1vdmUgSFRNTE1lZGlhRWxlbWVudCBmcm9tIHRoYXQgY2xhc3MgaGVpcmFyY2h5LCBhbmQgcmVw
bGFjZSBpdCB3aXRoCisgICAgICAgIGEgV2Vha1B0ciB0byB0aGVpciBUcmFja0xpc3QgZm9yIG9w
YXF1ZVJvb3QgcHVycG9zZXMuCisKKyAgICAgICAgU2ltaWxhcmx5LCByZWZhY3RvciBBdWRpb1Ry
YWNrTGlzdCwgVmlkZW9UcmFja0xpc3QsIGFuZCBUZXh0VHJhY2tMaXN0IHRvIG5vdCByZXF1aXJl
CisgICAgICAgIGEgYmFja3BvaW50ZXIgdG8gSFRNTE1lZGlhRWxlbWVudCwgYW5kIHVzZSBhIFdl
YWtQdHI8dm9pZD4gaW5zdGVhZCwgYWxsb3dpbmcgZWl0aGVyCisgICAgICAgIFNvdXJjZUJ1ZmZl
ciBvciBIVE1MTWVkaWFFbGVtZW50IHRvIGJlIHRoZSBsaXN0J3Mgb3BhcXVlUm9vdC4KKworICAg
ICAgICBBIFRyYWNrQmFzZSBuZWVkZWQgYWNjZXNzIHRvIGEgSFRNTE1lZGlhRWxlbWVudCBvbmx5
IGZvciB0aGUgbmVjZXNzaXR5IG9mIG91dHB1dHRpbmcKKyAgICAgICAgYSB3YXJuaW5nIHRvIHRo
ZSBjb25zb2xlIHdoZW4gYSBsYW5ndWFnZSBlcnJvciBvY2N1cnJlZDsgaW5zdGVhZCwgbWFrZSBU
cmFja0Jhc2UgYQorICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgYW5kIHBhc3Mg
YSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBUcmFja0Jhc2UgKGFuZAorICAgICAgICBh
bGwgaXRzIGRlcml2ZWQgY2xhc3NlcykgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIEEg
VHJhY2tMaXN0QmFzZSBub3cgaGFzIGEgdHlwZSgpIG1ldGhvZCwgd2hpY2ggYWxsb3dzIGl0IHRv
IGJlIHNhZmVseSBjYXN0IHRvIEF1ZGlvVHJhY2ssCisgICAgICAgIFZpZGVvVHJhY2ssIGFuZCBU
ZXh0VHJhY2ssIHRocm91Z2ggdHlwZSB0cmFpdCBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICBU
ZXh0VHJhY2sgdXNlZCBIVE1MTWVkaWFFbGVtZW50IHRvIHJldHJpZXZlIGl0cyBUZXh0VHJhY2tM
aXN0IGZvciBjZXJ0YWluIG9wZXJhdGlvbnMsCisgICAgICAgIGFuZCBub3cgdGhhdCBlYWNoIFRy
YWNrQmFzZSBoYXMgYSBiYWNrcG9pbnRlciB0byBpdHMgVHJhY2tMaXN0LCB0aGlzIGlzIG5vIGxv
bmdlciBuZWNlc3NhcnkuCisKKyAgICAgICAgVGV4dFRyYWNrTGlzdCBub3cgaGFzIHNldER1cmF0
aW9uKCkvZHVyYXRpb24oKSBtZW1iZXIgZnVuY3Rpb25zLCBzbyB0aGF0IHdoZW4gVGV4dFRyYWNr
CisgICAgICAgIHJlY2VpdmVzIGEgY3VlIHdpdGggYW4gaW5kZWZpbml0ZSBkdXJhdGlvbiwgdGhh
dCBjdWUncyBlbmRUaW1lIGNhbiBiZSBjYWxjdWxhdGVkLgorCisgICAgICAgIFRoZSBBdWRpb1Ry
YWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIElETHMgcHJldmlvdXNseSBzcGVjaWZpZWQg
R2VuZXJhdGVJc1JlYWNoYWJsZSwKKyAgICAgICAgd2l0aCBhIHBhcmFtZXRlciBvZiBJbXBsRWxl
bWVudFJvb3QsIHdoaWNoIHJlcXVpcmVkIGFuIGVsZW1lbnQoKSBtZXRob2Qgb24gZWFjaDsgbm93
CisgICAgICAgIHRoYXQgVHJhY2tCYXNlIGhhcyBhbiBvcGFxdWVSb290KCkgbWV0aG9kLCB0aGlz
IHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRp
b1RyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrTGFiZWxDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYW5ndWFn
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92
ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxUcmFja0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjppZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OndpbGxSZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tJZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0xhbmd1YWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50Ojp3aWxsUmVtb3Zl
QXVkaW9UcmFjayk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0OjpyZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGw6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
RGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Oklu
YmFuZEdlbmVyaWNUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0
b21hdGljSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2s6On5UZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0ZXh0
VHJhY2tMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZUFsbEN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3VlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tBZGRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpjbGVhclRy
YWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnRyYWNrTGlzdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZSk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6aWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0Jhc2U6Omxhbmd1YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrQmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldElk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFiZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzZXRPcGFxdWVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OnJvb3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZWxlY3RlZENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6aWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjp3aWxsUmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZpZGVvVHJh
Y2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVudDo6dmlkZW9U
cmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZp
ZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVu
dDo6dmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrQ2xpZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tDbGllbnQ6OndpbGxSZW1vdmVWaWRlb1RyYWNrKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6CiAyMDIxLTA4LTIzICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIERlLWZsYWtlIG1lZGlhIHBhaW50aW5n
IHRlc3RzIGJ5IGRlbGF5aW5nIHJlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgdW50aWwg
ZWxlbWVudCBpcyBhYmxlIHRvIHBhaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNjdhNjFiYzg0MWRkYmY5NDkxNzdj
YTFlZGU3MWVlYzA3ODkwN2JlNS4uZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRlMDY0
NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNzQsNiArNzQsNyBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZl
cihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KHNvdXJjZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICwgbV9wcml2YXRlKFdURk1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihbdGhpc10geyByZXR1cm4g
b3BhcXVlUm9vdCgpOyB9KQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3Rh
cnQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNjMyLDIyICs2MzMsMjggQEAgdWludDY0
X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiAKIFZpZGVvVHJhY2tM
aXN0JiBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdmlkZW9UcmFj
a3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKChpc1JlbW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkp
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsK
KyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2V0T3BhcXVlUm9vdE9i
c2VydmVyKG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsKKyAgICB9CiAgICAgcmV0dXJuICptX3ZpZGVv
VHJhY2tzOwogfQogCiBBdWRpb1RyYWNrTGlzdCYgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrcygp
CiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVk
aW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVkKCkgPyBudWxscHRyIDog
bV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRpb1Ry
YWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVk
aW9UcmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7Cisg
ICAgfQogICAgIHJldHVybiAqbV9hdWRpb1RyYWNrczsKIH0KIAogVGV4dFRyYWNrTGlzdCYgU291
cmNlQnVmZmVyOjp0ZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAg
ICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRyKChpc1Jl
bW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpKSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykgeworICAgICAgICBtX3Rl
eHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVS
b290UHJvdmlkZXIpOworICAgIH0KICAgICByZXR1cm4gKm1fdGV4dFRyYWNrczsKIH0KIApAQCAt
Nzc5LDcgKzc4Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHN0ZXBzIDUuMi4xLTUuMi44LjEgYXMgcGVyIEVkaXRvcidzIERyYWZ0
IDA5IEphbnVhcnkgMjAxNSwgYW5kIHJlb3JkZXIgdGhpcwogICAgICAgICAgICAgLy8gNS4yLjEg
TGV0IG5ldyBhdWRpbyB0cmFjayBiZSBhIG5ldyBBdWRpb1RyYWNrIG9iamVjdC4KICAgICAgICAg
ICAgIC8vIDUuMi4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGlk
IHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KLSAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9U
cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSgqdGhpcywgKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICphdWRpb1RyYWNrSW5mby50cmFjayk7CisgICAgICAgICAg
ICBuZXdBdWRpb1RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbmV3QXVkaW9U
cmFjay0+c2V0U291cmNlQnVmZmVyKHRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjIuMyBJZiBh
dWRpb1RyYWNrcy5sZW5ndGggZXF1YWxzIDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CkBAIC04MDEsNyArODA5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAgICAgICAg
IC8vIDUuMi43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBub3QgY2Fu
Y2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBB
dWRpb1RyYWNrTGlzdCBvYmplY3QKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1
ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3
QXVkaW9UcmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVu
dCgpLT5hZGRBdWRpb1RyYWNrKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAogICAgICAgICAg
ICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVj
KCkpOwogCkBAIC04MTQsNyArODIyLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RlcHMgNS4zLjEtNS4zLjguMSBhcyBwZXIgRWRp
dG9yJ3MgRHJhZnQgMDkgSmFudWFyeSAyMDE1LCBhbmQgcmVvcmRlciB0aGlzCiAgICAgICAgICAg
ICAvLyA1LjMuMSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0
LgogICAgICAgICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBp
dCB0byB0aGUgaWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgotICAgICAgICAgICAgYXV0
byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKCp0aGlzLCAqdmlkZW9UcmFja0lu
Zm8udHJhY2spOworICAgICAgICAgICAgYXV0byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnZpZGVvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIG5ld1ZpZGVvVHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAg
ICBuZXdWaWRlb1RyYWNrLT5zZXRTb3VyY2VCdWZmZXIodGhpcyk7CiAKICAgICAgICAgICAgIC8v
IDUuMy4zIElmIHZpZGVvVHJhY2tzLmxlbmd0aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKQEAgLTgzNiw3ICs4NDUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQog
ICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50
IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAg
IC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFj
ZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNl
ZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50Lgot
ICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygp
LmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+
bWVkaWFFbGVtZW50KCktPmFkZFZpZGVvVHJhY2sobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwog
CiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlw
dGlvbi0+Y29kZWMoKSk7CiAKQEAgLTg1MSw3ICs4NjAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlh
bGl6YQogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdGVwcyA1LjQuMS01LjQuOC4x
IGFzIHBlciBFZGl0b3IncyBEcmFmdCAwOSBKYW51YXJ5IDIwMTUsIGFuZCByZW9yZGVyIHRoaXMK
ICAgICAgICAgICAgIC8vIDUuNC4xIExldCBuZXcgdGV4dCB0cmFjayBiZSBhIG5ldyBUZXh0VHJh
Y2sgb2JqZWN0IHdpdGggaXRzIHByb3BlcnRpZXMgcG9wdWxhdGVkIHdpdGggdGhlCiAgICAgICAg
ICAgICAvLyBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBz
ZWdtZW50LgotICAgICAgICAgICAgYXV0byBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6
OmNyZWF0ZShkb2N1bWVudCgpLCAqdGhpcywgdGV4dFRyYWNrUHJpdmF0ZSk7CisgICAgICAgICAg
ICBhdXRvIG5ld1RleHRUcmFjayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHRUcmFja1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VGV4dFRyYWNrLT5hZGRDbGllbnQo
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBu
ZXcgdGV4dCB0cmFjayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3Rp
dmUKICAgICAgICAgICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KQEAgLTg2OCw3ICs4NzgsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQogICAgICAgICAgICAgLy8gNS40LjYgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90
IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1
c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBv
biB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1l
bnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YWRkVGV4dFRyYWNrKG5ld1Rl
eHRUcmFjay5jb3B5UmVmKCkpOwogCiAgICAgICAgICAgICBtX3RleHRDb2RlY3MuYXBwZW5kKHRl
eHRUcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOwogCkBAIC0xMDIzLDkgKzEwMzMsMjQg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYgdHJhY2spCiAKICAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250
YWlucyh0cmFjaykpCiAgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKK30KIAotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVs
ZW1lbnQoKS0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCh0cmFjayk7Cit2b2lkIFNvdXJjZUJ1
ZmZlcjo6dmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQoreworICAgIGlm
IChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAg
ICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlcjo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAg
ICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisg
ICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2sp
Cit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJh
Y2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYg
dHJhY2spCkBAIC0xMDUwLDkgKzEwNzUsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKIAogICAgIGlmIChtX2F1ZGlvVHJh
Y2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAgbV9hdWRpb1Ry
YWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQogCi0gICAgaWYgKCFpc1JlbW92ZWQoKSkK
LSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQodHJhY2spOwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRp
b1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQo
QXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1Ry
YWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFuZ3VhZ2VD
aGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1f
YXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2No
ZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKQEAgLTEwNzcsMzkgKzExMTcsMTggQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiAKICAg
ICBpZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAg
ICAgICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQotICAgIGlmICghaXNS
ZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrTW9k
ZUNoYW5nZWQodHJhY2spOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmICghaXNSZW1v
dmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrQWRkQ3Vl
KHRyYWNrLCBjdWUpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBjdWVMaXN0KQotewotICAg
IGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4
dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3VlTGlzdCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyOjp0
ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17
Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYgdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmIGN1ZUxpc3QpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrJiB0cmFjaykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3Nv
dXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZUxpc3Qp
OworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykp
CisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFj
aykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKKyAgICBpZiAobV90ZXh0VHJhY2tz
ICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3RleHRUcmFja3Mt
PnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikKQEAgLTExMTks
OCArMTEzOCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KQogewotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlv
bkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc291cmNlLT5zZXREdXJhdGlvbkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBp
ZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0
aW9uKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIaWdoZXN0
UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CmluZGV4IGVlY2QzMWJmYzVmNGJhMmYzZjY2MDgwN2RlYTYyNTE3Nzc1YmE3NmIuLjg4OGQyZDZl
OThkYWJmOTdkYWJlMWM5MWYyNDhiMTA4NWQ2OTJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtNjksNiArNjksOSBAQCBj
bGFzcyBTb3VyY2VCdWZmZXIgZmluYWwKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNv
dXJjZUJ1ZmZlcik7CiBwdWJsaWM6CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFy
Z2V0OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9y
eTsKKwogICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7
CiAKQEAgLTEzNSw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyAgICB2b2lkKiBvcGFxdWVSb290KCkgeyBy
ZXR1cm4gdGhpczsgfQorCiBwcml2YXRlOgogICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtMTYxLDE1ICsxNjYsMjAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKICAgICB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7Ci0gICAgLy8gVmlkZW9UcmFja0NsaWVudAot
ICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCBhdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZv
aWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBh
dWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKwogICAgIC8vIFRl
eHRUcmFja0NsaWVudAogICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikg
ZmluYWw7CiAgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUo
VGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJh
Y2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisKKyAgICAvLyBWaWRlb1RyYWNr
Q2xpZW50CisgICAgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFs
OworICAgIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAg
ICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFsOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQpAQCAtMjA5LDYgKzIxOSw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEFwcGVuZE1vZGUgbV9tb2RlIHsgQXBwZW5kTW9kZTo6U2VnbWVu
dHMgfTsKIAorICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7
CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggOGY5OTBkYWYyYTRhNWZiZTRj
NDYxMTIwZDIwY2ZmOGJkMmVmODkyMy4uMDdkNDkyYzQwZjNjZmQ2M2MxN2NiZDZjMWRkZWMzZjAy
YTczNzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbApAQCAtMzgsNiArMzgsNyBAQAogICAgIENvbmRpdGlvbmFsPU1FRElB
X1NPVVJDRSwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlhU291cmNlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU291cmNlQnVmZmVyIDogRXZlbnRUYXJnZXQgewogICAg
IGF0dHJpYnV0ZSBBcHBlbmRNb2RlIG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmgKaW5kZXggZWY3MmQ5YjdhYWJkYzk5ZTczMGZmZGVlODBlMTAxMzU5ZjBh
ZmQwZi4uZjA1OGM5OWQ5MzVjMWY3M2JhOWY1OTE4NWI1MTRhNzkwNGQ3NDU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaApAQCAtMzYsMTMgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFja0Jhc2UmKTsKIAotaW5saW5lIHZvaWQqIHJv
b3QoVHJhY2tCYXNlKiB0cmFjaykKLXsKLSAgICBpZiAodHJhY2stPmVsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPmVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHRyYWNrOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiZTAxMmY5N2IwMDQ4OTQy
YTEwMGUzMjAzNGFhMGI3ZmQwYmM5ODllLi5kMDFjOWM5Njc5NDA2NTIwN2EyMDcyMGRlZjE5Njg0
ZmE0YjhkODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTQ1MCw2ICs0NTAsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9zaG91bGRB
dWRpb1BsYXliYWNrUmVxdWlyZVVzZXJHZXN0dXJlKGRvY3VtZW50LnRvcERvY3VtZW50KCkuYXVk
aW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkKICAgICAsIG1fc2hvdWxkVmlkZW9QbGF5YmFja1JlcXVpcmVVc2VyR2VzdHVy
ZShkb2N1bWVudC50b3BEb2N1bWVudCgpLnZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KCkgJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgLCBtX3ZvbHVtZUxv
Y2tlZChkZWZhdWx0Vm9sdW1lTG9ja2VkKCkpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihb
dGhpc10geyByZXR1cm4gb3BhcXVlUm9vdCgpOyB9KQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgLCBtX3JlbW90ZShSZW1vdGVQbGF5YmFjazo6Y3JlYXRlKCp0aGlz
KSkKICNlbmRpZgpAQCAtNTQ0LDEzICs1NDUsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlQ29u
ZmlndXJhdGlvbkNoYW5nZU9ic2VydmVyKCp0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKG1fYXVk
aW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyRWxlbWVudCgpOwotICAgIGlm
IChtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJFbGVtZW50KCk7Ci0g
ICAgaWYgKG1fdmlkZW9UcmFja3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyRWxlbWVu
dCgpOwotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBpZiAoaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZEV2ZW50KSB8fCBtX3JlbW90ZS0+aGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzKCkp
IHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGZh
bHNlOwpAQCAtMTg2OSw2ICsxODYzLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9U
cmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9B
bmRWaWRlbygpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tLaW5kQ2hh
bmdlZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1
ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNr
TGFiZWxDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tz
ICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1f
YXVkaW9UcmFja3MgJiYgbV9hdWRpb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBt
X2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAg
cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKIHsKICAgICBib29sIHRyYWNrSXNM
b2FkZWQgPSB0cnVlOwpAQCAtMTg4NCw4ICsxOTAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogICAgIH0KIAogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFkZGVkIHRyYWNrLCBjcmVhdGUgdGhlIGxpc3Qgb2YgdGV4
dCB0cmFja3MuCi0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcyA9
IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGVuc3VyZVRleHRUcmFja3MoKTsKIAog
ICAgIC8vIE1hcmsgdGhpcyB0cmFjayBhcyAiY29uZmlndXJlZCIgc28gY29uZmlndXJlVGV4dFRy
YWNrcyB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4uCiAgICAgdHJhY2suc2V0SGFzQmVlbkNv
bmZpZ3VyZWQodHJ1ZSk7CkBAIC0xOTA0LDYgKzE5MjAsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogI2VuZGlmCiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0
cmFjaykKK3sKKyAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlv
bnMgJiYgdHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNr
Lm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCisgICAgICAgIHRyYWNrLnNldE1v
ZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworCisgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBt
X3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TGFiZWxDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRyYWNrcyAm
JiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRy
YWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJh
Y2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmICh0cmFjay50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgcmVtb3ZlVGV4dFRyYWNr
KHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKQEAgLTE5MTEsMTAgKzE5NTQsMjcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sm
IHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9BbmRWaWRlbygpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykK
IHsKLSAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNrLm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCi0gICAgICAgIHRyYWNrLnNldE1vZGUoVGV4
dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYWJl
bENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYg
bV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV92aWRl
b1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICByZW1v
dmVWaWRlb1RyYWNrKHRyYWNrKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkln
bm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKQpAQCAtNDA4NywxNSArNDE0NywxNCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIHNldEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0
YXRlKEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRlOjpQcmV2ZW50ZWRBdXRvcGxheSk7CiAgICAg
fQogCi0gICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoKnRoaXMsIHRyYWNrKSk7
CisgICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0cmFjaykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQogewogICAgIC8v
IDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKICAgICAvLyAxLiBBc3Nv
Y2lhdGUgdGhlIHJlbGV2YW50IGRhdGEgd2l0aCBhIG5ldyB0ZXh0IHRyYWNrIGFuZCBpdHMgY29y
cmVzcG9uZGluZyBuZXcgVGV4dFRyYWNrIG9iamVjdC4KLSAgICBhdXRvIHRleHRUcmFjayA9IElu
YmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCksICp0aGlzLCB0cmFjayk7Ci0gICAgdGV4
dFRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQoKSwgdHJhY2spOwogCiAg
ICAgLy8gMi4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIGtpbmQsIGxhYmVsLCBhbmQgbGFuZ3Vh
Z2UgYmFzZWQgb24gdGhlIHNlbWFudGljcyBvZiB0aGUgcmVsZXZhbnQgZGF0YSwKICAgICAvLyBh
cyBkZWZpbmVkIGJ5IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9uLiBJZiB0aGVyZSBpcyBubyBs
YWJlbCBpbiB0aGF0IGRhdGEsIHRoZW4gdGhlIGxhYmVsIG11c3QKQEAgLTQxMjUsNyArNDE4NCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKLSAg
ICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSgqdGhpcywgdHJhY2spKTsKKyAgICBh
dXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0cmFjayk7CisgICAgYWRkVmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrKQpAQCAtNDE0OCw2ICs0MjA4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFJlZjxBdWRpb1RyYWNrPiYmIHRyYWNrKQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xpZW50KCp0aGlzKTsKICAg
ICBlbnN1cmVBdWRpb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQx
NjUsNiArNDIyNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFJlZjxU
ZXh0VHJhY2s+JiYgdHJhY2spCiAgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IHBh
Z2UtPmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuY2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZW5zdXJlVGV4
dFRyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQxNzMsMjggKzQyMzUs
MzYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNr
PiYmIHRyYWNrKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dn
ZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICBlbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNr
KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhSZWY8QXVk
aW9UcmFjaz4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICBpZiAo
IW1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRy
YWNrLT5jbGVhckNsaWVudCgqdGhpcyk7CiAgICAgbV9hdWRpb1RyYWNrcy0+cmVtb3ZlKHRyYWNr
LmdldCgpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2soUmVm
PFRleHRUcmFjaz4mJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2ZW50KQogeworICAgIGlmICghbV90
ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIHJldHVybjsKKwogICAgIFRyYWNr
RGlzcGxheVVwZGF0ZVNjb3BlIHNjb3BlIHsgKnRoaXMgfTsKICAgICBpZiAoYXV0byBjdWVzID0g
bWFrZVJlZlB0cih0cmFjay0+Y3VlcygpKSkKICAgICAgICAgdGV4dFRyYWNrUmVtb3ZlQ3Vlcyh0
cmFjaywgKmN1ZXMpOwotICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOworICAgIHRyYWNrLT5jbGVh
ckNsaWVudCgqdGhpcyk7CiAgICAgaWYgKG1fdGV4dFRyYWNrcykKICAgICAgICAgbV90ZXh0VHJh
Y2tzLT5yZW1vdmUodHJhY2ssIHNjaGVkdWxlRXZlbnQpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2soUmVmPFZpZGVvVHJhY2s+JiYgdHJhY2spCiB7Ci0gICAg
dHJhY2stPmNsZWFyQ2xpZW50KCk7CisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0
cmFjaykpCisgICAgICAgIHJldHVybjsKKyAgICB0cmFjay0+Y2xlYXJDbGllbnQoKnRoaXMpOwog
ICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7CiB9CiAKQEAgLTQyMzEsNyArNDMwMSw3
IEBAIEV4Y2VwdGlvbk9yPFRleHRUcmFjayY+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFj
ayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0CiAKICAgICAvLyA1LiBDcmVhdGUgYSBuZXcgdGV4
dCB0cmFjayBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXcgb2JqZWN0LCBhbmQgc2V0IGl0cyB0ZXh0
IHRyYWNrIGtpbmQgdG8ga2luZCwgaXRzIHRleHQKICAgICAvLyB0cmFjayBsYWJlbCB0byBsYWJl
bCwgaXRzIHRleHQgdHJhY2sgbGFuZ3VhZ2UgdG8gbGFuZ3VhZ2UuLi4KLSAgICBhdXRvIHRyYWNr
ID0gVGV4dFRyYWNrOjpjcmVhdGUoJmRvY3VtZW50KCksIHRoaXMsIGtpbmQsIGVtcHR5U3RyaW5n
KCksIGxhYmVsLCBsYW5ndWFnZSk7CisgICAgYXV0byB0cmFjayA9IFRleHRUcmFjazo6Y3JlYXRl
KCZkb2N1bWVudCgpLCBraW5kLCBlbXB0eVN0cmluZygpLCBsYWJlbCwgbGFuZ3VhZ2UpOwogICAg
IGF1dG8mIHRyYWNrUmVmZXJlbmNlID0gdHJhY2suZ2V0KCk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgdHJhY2tSZWZlcmVuY2Uuc2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlm
aWVyKCkpOwpAQCAtNDI1NCwyNCArNDMyNCwzMSBAQCBFeGNlcHRpb25PcjxUZXh0VHJhY2smPiBI
VE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdAog
CiBBdWRpb1RyYWNrTGlzdCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlQXVkaW9UcmFja3MoKQog
ewotICAgIGlmICghbV9hdWRpb1RyYWNrcykKLSAgICAgICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlv
VHJhY2tMaXN0OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fYXVkaW9UcmFja3MpIHsKKyAgICAg
ICAgbV9hdWRpb1RyYWNrcyA9IEF1ZGlvVHJhY2tMaXN0OjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zZXRP
cGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVSb290UHJvdmlkZXIpOworICAgIH0KIAogICAgIHJl
dHVybiAqbV9hdWRpb1RyYWNrczsKIH0KIAogVGV4dFRyYWNrTGlzdCYgSFRNTE1lZGlhRWxlbWVu
dDo6ZW5zdXJlVGV4dFRyYWNrcygpCiB7Ci0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAg
IG1fdGV4dFRyYWNrcyA9IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwg
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghbV90
ZXh0VHJhY2tzKSB7CisgICAgICAgIG1fdGV4dFRyYWNrcyA9IFRleHRUcmFja0xpc3Q6OmNyZWF0
ZShBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1f
dGV4dFRyYWNrcy0+c2V0T3BhcXVlUm9vdE9ic2VydmVyKG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsK
KyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXREdXJhdGlvbihkdXJhdGlvbk1lZGlhVGltZSgpKTsK
KyAgICB9CiAKICAgICByZXR1cm4gKm1fdGV4dFRyYWNrczsKIH0KIAogVmlkZW9UcmFja0xpc3Qm
IEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZVZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdmlk
ZW9UcmFja3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRl
KG1ha2VXZWFrUHRyKHRoaXMpLCBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKSB7CisgICAgICAgIG1fdmlkZW9UcmFja3Mg
PSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2V0T3BhcXVlUm9vdE9ic2VydmVy
KG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gKm1fdmlkZW9UcmFj
a3M7CiB9CkBAIC01MDQ3LDYgKzUxMjQsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyRHVyYXRpb25DaGFuZ2VkKCkKICAgICBpZiAobm93ID4gZHVyKQogICAgICAgICBzZWVr
SW50ZXJuYWwoZHVyKTsKIAorICAgIGlmIChtX3RleHRUcmFja3MpCisgICAgICAgIG1fdGV4dFRy
YWNrcy0+c2V0RHVyYXRpb24oZHVyKTsKKwogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNh
bGxiYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
NmUxYzlmOWQ1NmIxMWQxNjE2YmQ2NzExZjk3N2ViNWRmZTMxMmJmOC4uMzJlZGNjZDgwOTQ3NThj
OGM0YjQyNjYyY2NmNzFmNGY0YjI2ODg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xp
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhl
bHBlci5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQpAQCAtMzgzLDE3
ICszODQsMjggQEAgcHVibGljOgogCiAgICAgLy8gQXVkaW9UcmFja0NsaWVudAogICAgIHZvaWQg
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIGF1
ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBhdWRpb1Ry
YWNrTGFiZWxDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvVHJhY2tM
YW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgd2lsbFJlbW92ZUF1
ZGlvVHJhY2soQXVkaW9UcmFjayYpIGZpbmFsOwogCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50Ci0g
ICAgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2smKSBvdmVycmlkZTsKLSAgICB2
b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRl
eHRUcmFja0N1ZUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0
VHJhY2smLCBUZXh0VHJhY2tDdWUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92
ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRU
cmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIGZpbmFsOworICAgIHZvaWQgdGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tMYWJlbENoYW5n
ZWQoVGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQo
VGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayYs
IGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja1JlbW92
ZUN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOworICAgIHZv
aWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOworICAg
IHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIGZpbmFs
OworICAgIHZvaWQgd2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smKSBmaW5hbDsKIAogICAg
IC8vIFZpZGVvVHJhY2tDbGllbnQKKyAgICB2b2lkIHZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRl
b1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB2aWRlb1RyYWNrTGFiZWxDaGFuZ2VkKFZpZGVvVHJh
Y2smKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFj
ayYpIGZpbmFsOwogICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNr
JikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJikgZmlu
YWw7CiAKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdDsK
ICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFja1JlcHJlc2VudGF0
aW9uKik7CkBAIC0xMTU3LDYgKzExNjksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxCbG9iPiBt
X2Jsb2I7CiAgICAgVVJMIG1fYmxvYlVSTEZvclJlYWRpbmc7CiAgICAgTWVkaWFQcm92aWRlciBt
X21lZGlhUHJvdmlkZXI7CisgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1ZVJvb3RQ
cm92aWRlcjsKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIGJvb2wg
bV9oYXNOZWVka2V5TGlzdGVuZXIgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRy
YWNrRWxlbWVudC5jcHAKaW5kZXggYjg2NWM3MmEyZDNkYzQ5YmZlN2E2ZTQxNDE3NTVkODliZmNl
OWE3ZC4uMWJmMTlhZWNkNzFjNWM1ZWFjNjhmZmFjNmQzMmI5ODdhMTE1MGUxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIEhUTUxU
cmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KCkKIHsKICAgICBpZiAobV90cmFjaykgewog
ICAgICAgICBtX3RyYWNrLT5jbGVhckVsZW1lbnQoKTsKLSAgICAgICAgbV90cmFjay0+Y2xlYXJD
bGllbnQoKTsKKyAgICAgICAgbV90cmFjay0+Y2xlYXJDbGllbnQoKnRoaXMpOwogICAgIH0KIH0K
IApAQCAtMTUyLDYgKzE1Miw3IEBAIExvYWRhYmxlVGV4dFRyYWNrJiBIVE1MVHJhY2tFbGVtZW50
Ojp0cmFjaygpCiAgICAgICAgIGlmICghVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoa2lu
ZCkpCiAgICAgICAgICAgICBraW5kID0gVGV4dFRyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCk7CiAg
ICAgICAgIG1fdHJhY2sgPSBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKCp0aGlzLCBraW5kLCBs
YWJlbCgpLCBzcmNsYW5nKCkpOworICAgICAgICBtX3RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwog
ICAgIH0KICAgICBBU1NFUlQobV90cmFjay0+dHJhY2tFbGVtZW50KCkgPT0gdGhpcyk7CiAKQEAg
LTI5OSw0NCArMzAwLDExIEBAIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxUcmFja0VsZW1lbnQ6Om1l
ZGlhRWxlbWVudENyb3NzT3JpZ2luQXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4gbnVsbEF0
b20oKTsKIH0KIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZChU
ZXh0VHJhY2smIHRyYWNrKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVudCgp
KQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKLX0KLQotdm9p
ZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNr
KQordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sm
KQogewogICAgIC8vIFNpbmNlIHdlJ3ZlIG1vdmVkIHRvIGEgbmV3IHBhcmVudCwgd2UgbWF5IG5v
dyBiZSBhYmxlIHRvIGxvYWQuCiAgICAgaWYgKHJlYWR5U3RhdGUoKSA9PSBIVE1MVHJhY2tFbGVt
ZW50OjpOT05FKQogICAgICAgICBzY2hlZHVsZUxvYWQoKTsKLQotICAgIGlmIChhdXRvIHBhcmVu
dCA9IG1lZGlhRWxlbWVudCgpKQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja01vZGVDaGFuZ2Vk
KHRyYWNrKTsKLX0KLQotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRl
eHRUcmFjayYgdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmIGN1ZXMpCi17Ci0gICAgaWYg
KGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNr
QWRkQ3Vlcyh0cmFjaywgY3Vlcyk7Ci19Ci0gICAgCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRl
eHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlz
dCYgY3VlcykKLXsKLSAgICBpZiAoYXV0byBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAg
ICAgcGFyZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKHRyYWNrLCBjdWVzKTsKLX0KLSAgICAKLXZv
aWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayYgdHJhY2ssIFRl
eHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVudCgp
KQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja0FkZEN1ZSh0cmFjaywgY3VlKTsKLX0KLSAgICAK
LXZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayYgdHJh
Y2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxl
bWVudCgpKQotICAgICAgICBwYXJlbnQtPnRleHRUcmFja1JlbW92ZUN1ZSh0cmFjaywgY3VlKTsK
IH0KIAogUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxl
bWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCmluZGV4IGY3
ODk4OThkMWY3ZGQ3MGUzNjU3MTk4YTI5MWM4ZGI0MjcyYThhY2MuLmI4NjJkNDlhNGE5MmMzMzY3
MzU1ODkxY2I2NDY4NWU2ODAxNWU2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5oCkBAIC04NCwxMSArODQsNiBAQCBwcml2YXRlOgogCiAgICAgLy8gVGV4dFRyYWNrQ2xp
ZW50CiAgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsKLSAg
ICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIGZpbmFsOwotICAgIHZvaWQg
dGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmlu
YWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QmKSBmaW5hbDsKLSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sm
LCBUZXh0VHJhY2tDdWUmKSBmaW5hbDsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0
VHJhY2smLCBUZXh0VHJhY2tDdWUmKSBmaW5hbDsKIAogICAgIGJvb2wgY2FuTG9hZFVSTChjb25z
dCBVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKaW5kZXgg
Y2FiNzc4MjFhOTQ3Y2Q4ZWM3YTIyMDk1Zjc5YTIyNjk5ZmQwYzMzMy4uM2NiNzE4ZDNkYzI3ZTU4
M2I1YTVkZjEwOTNhMDM2NTI3YzAyZWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9BdWRpb1RyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2suY3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKKyNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogCiAj
aWYgRU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NSw5
ICs3NSw4IEBAIGNvbnN0IEF0b21TdHJpbmcmIEF1ZGlvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3Jk
KCkKICAgICByZXR1cm4gY29tbWVudGFyeTsKIH0KIAotQXVkaW9UcmFjazo6QXVkaW9UcmFjayhB
dWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUp
Ci0gICAgOiBNZWRpYVRyYWNrQmFzZShNZWRpYVRyYWNrQmFzZTo6QXVkaW9UcmFjaywgdHJhY2tQ
cml2YXRlLmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2Uo
KSkKLSAgICAsIG1fY2xpZW50KCZjbGllbnQpCitBdWRpb1RyYWNrOjpBdWRpb1RyYWNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZh
dGUpCisgICAgOiBNZWRpYVRyYWNrQmFzZShjb250ZXh0LCBNZWRpYVRyYWNrQmFzZTo6QXVkaW9U
cmFjaywgdHJhY2tQcml2YXRlLmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZh
dGUubGFuZ3VhZ2UoKSkKICAgICAsIG1fcHJpdmF0ZSh0cmFja1ByaXZhdGUpCiAgICAgLCBtX2Vu
YWJsZWQodHJhY2tQcml2YXRlLmVuYWJsZWQoKSkKIHsKQEAgLTEwNyw2ICsxMDYsMTUgQEAgdm9p
ZCBBdWRpb1RyYWNrOjpzZXRQcml2YXRlKEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUp
CiAgICAgc2V0SWQobV9wcml2YXRlLT5pZCgpKTsKIH0KIAordm9pZCBBdWRpb1RyYWNrOjpzZXRM
YW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAgICBUcmFja0Jhc2U6OnNl
dExhbmd1YWdlKGxhbmd1YWdlKTsKKworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYg
Y2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKCp0aGlz
KTsKKyAgICB9KTsKK30KKwogYm9vbCBBdWRpb1RyYWNrOjppc1ZhbGlkS2luZChjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICByZXR1cm4gdmFsdWUgPT0gYWx0ZXJuYXRpdmVL
ZXl3b3JkKCkKQEAgLTEyMyw2ICsxMzEsMjEgQEAgdm9pZCBBdWRpb1RyYWNrOjpzZXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wcml2YXRlLT5zZXRFbmFi
bGVkKGVuYWJsZWQpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50
KSB7CisgICAgICAgIGNsaWVudC5hdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAg
IH0pOworfQorCit2b2lkIEF1ZGlvVHJhY2s6OmFkZENsaWVudChBdWRpb1RyYWNrQ2xpZW50JiBj
bGllbnQpCit7CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSk7CisgICAg
bV9jbGllbnRzLmFkZChjbGllbnQpOworfQorCit2b2lkIEF1ZGlvVHJhY2s6OmNsZWFyQ2xpZW50
KEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRh
aW5zKGNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKIH0KIAogc2l6ZV90
IEF1ZGlvVHJhY2s6OmluYmFuZFRyYWNrSW5kZXgoKSBjb25zdApAQCAtMTM3LDE4ICsxNjAsMjUg
QEAgdm9pZCBBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZChib29sIGVuYWJsZWQpCiAKICAgICBt
X2VuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFj
aChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQuYXVkaW9UcmFja0VuYWJs
ZWRDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdWRpb1RyYWNrOjppZENoYW5n
ZWQoY29uc3QgQXRvbVN0cmluZyYgaWQpCiB7CiAgICAgc2V0SWQoaWQpOworICAgIG1fY2xpZW50
cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRpb1Ry
YWNrSWRDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdWRpb1RyYWNrOjpsYWJl
bENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwpCiB7CiAgICAgc2V0TGFiZWwobGFiZWwp
OworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAg
IGNsaWVudC5hdWRpb1RyYWNrTGFiZWxDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBBdWRpb1RyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Up
CkBAIC0xNTgsMTEgKzE4OCw5IEBAIHZvaWQgQXVkaW9UcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNv
bnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiB2b2lkIEF1ZGlvVHJhY2s6OndpbGxSZW1vdmUo
KQogewotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIobWVkaWFFbGVtZW50KCkuZ2V0KCkp
OwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZWxlbWVudC0+cmVt
b3ZlQXVkaW9UcmFjaygqdGhpcyk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRv
JiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LndpbGxSZW1vdmVBdWRpb1RyYWNrKCp0aGlzKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBBdWRpb1RyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZhdGUoKQpA
QCAtMTk1LDExICsyMjMsNiBAQCB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0
ZSgpCiAgICAgfQogfQogCi12b2lkIEF1ZGlvVHJhY2s6OnNldE1lZGlhRWxlbWVudChXZWFrUHRy
PEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQpCi17Ci0gICAgVHJhY2tCYXNlOjpzZXRNZWRpYUVs
ZW1lbnQoZWxlbWVudCk7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgQXVk
aW9UcmFjazo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJ
ZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAppbmRleCA5
OWE0NTMyOGMyOWVhMGIyYzVlY2Y0MjdmMTdhNDVjMDQ0MTdmZGY3Li4zNzUxMGE4Y2QyZjhmNDAx
NTM1ODkyNWRmOTlkYWVjOThmMTk2MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0F1ZGlvVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2suaApAQCAtMzAsMjIgKzMwLDI5IEBACiAKICNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvVHJhY2s7CitjbGFzcyBBdWRp
b1RyYWNrTGlzdDsKIAotY2xhc3MgQXVkaW9UcmFja0NsaWVudCB7CitjbGFzcyBBdWRpb1RyYWNr
Q2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEF1ZGlvVHJhY2tDbGllbnQ+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5BdWRpb1RyYWNrQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1
YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgYXVkaW9UcmFja0lkQ2hhbmdlZChBdWRpb1RyYWNrJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRpb1RyYWNrJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoQXVkaW9UcmFjayYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBhdWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYpIHsgfQog
fTsKIAogY2xhc3MgQXVkaW9UcmFjayBmaW5hbCA6IHB1YmxpYyBNZWRpYVRyYWNrQmFzZSwgcHJp
dmF0ZSBBdWRpb1RyYWNrUHJpdmF0ZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxB
dWRpb1RyYWNrPiBjcmVhdGUoQXVkaW9UcmFja0NsaWVudCYgY2xpZW50LCBBdWRpb1RyYWNrUHJp
dmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHN0YXRpYyBSZWY8QXVkaW9UcmFjaz4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrKGNs
aWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
VHJhY2soY29udGV4dCwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkF1ZGlv
VHJhY2soKTsKIApAQCAtNTksMjEgKzY2LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHNldEVuYWJsZWQo
Y29uc3QgYm9vbCk7CiAKLSAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9
IG51bGxwdHI7IH0KLSAgICBBdWRpb1RyYWNrQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVy
biBtX2NsaWVudDsgfQorICAgIHZvaWQgYWRkQ2xpZW50KEF1ZGlvVHJhY2tDbGllbnQmKTsKKyAg
ICB2b2lkIGNsZWFyQ2xpZW50KEF1ZGlvVHJhY2tDbGllbnQmKTsKIAogICAgIHNpemVfdCBpbmJh
bmRUcmFja0luZGV4KCkgY29uc3Q7CiAKICAgICBjb25zdCBBdWRpb1RyYWNrUHJpdmF0ZSYgcHJp
dmF0ZVRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlOyB9CiAgICAgdm9pZCBzZXRQcml2
YXRlKEF1ZGlvVHJhY2tQcml2YXRlJik7CiAKLSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChXZWFr
UHRyPEhUTUxNZWRpYUVsZW1lbnQ+KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExhbmd1YWdlKGNv
bnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKSBmaW5hbDsKICNlbmRp
ZgogCiBwcml2YXRlOgotICAgIEF1ZGlvVHJhY2soQXVkaW9UcmFja0NsaWVudCYsIEF1ZGlvVHJh
Y2tQcml2YXRlJik7CisgICAgQXVkaW9UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXVk
aW9UcmFja1ByaXZhdGUmKTsKIAogICAgIGJvb2wgaXNWYWxpZEtpbmQoY29uc3QgQXRvbVN0cmlu
ZyYpIGNvbnN0IGZpbmFsOwogCkBAIC05Miw3ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJBdWRpb1RyYWNrIjsg
fQogI2VuZGlmCiAKLSAgICBBdWRpb1RyYWNrQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsK
KyAgICBXZWFrUHRyPEF1ZGlvVHJhY2tMaXN0PiBtX2F1ZGlvVHJhY2tMaXN0OworICAgIFdlYWtI
YXNoU2V0PEF1ZGlvVHJhY2tDbGllbnQ+IG1fY2xpZW50czsKICAgICBSZWY8QXVkaW9UcmFja1By
aXZhdGU+IG1fcHJpdmF0ZTsKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKaW5kZXggMzkzNDY2NmY1ZmMwNjIx
N2QzZTNlZTljNWUwMWQ0Y2E3MzFjMGVmYS4uYjk0M2NmNTVlZDlmMTU5M2U3MzMyNzVkNzljYzYw
MjhiMDAyNjE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsCkBA
IC0yNiw4ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgRXhwb3J0TWFj
cm89V0VCQ09SRV9FWFBPUlQsCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJv
b3QsCi0gICAgR2VuZXJhdGVBZGRPcGFxdWVSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUs
CiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIEF1ZGlvVHJhY2sgewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QXVkaW9UcmFja0xpc3QuY3BwCmluZGV4IDY0MDU4MTcxZDQ1YTg4MWVmMWUwZGM2ZDhlZTNkMzQz
M2Q1NjFkY2EuLjMzYTA3ZDRlYzcxZDE4OGJiOTU4N2QwZDliYTg4MjdhMzk2MTQ4NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuY3BwCkBAIC0zMCwxMiAr
MzAsMTEgQEAKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogCiAjaW5jbHVkZSAiQXVkaW9U
cmFjay5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1BdWRpb1RyYWNrTGlzdDo6QXVkaW9UcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFF
bGVtZW50PiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDog
VHJhY2tMaXN0QmFzZShlbGVtZW50LCBjb250ZXh0KQorQXVkaW9UcmFja0xpc3Q6OkF1ZGlvVHJh
Y2tMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RC
YXNlKGNvbnRleHQsIFRyYWNrTGlzdEJhc2U6OlZpZGVvVHJhY2tMaXN0KQogewogfQogCkBAIC01
MywxMyArNTIsMjEgQEAgdm9pZCBBdWRpb1RyYWNrTGlzdDo6YXBwZW5kKFJlZjxBdWRpb1RyYWNr
PiYmIHRyYWNrKQogICAgIH0KICAgICBtX2luYmFuZFRyYWNrcy5pbnNlcnQoaW5zZXJ0aW9uSW5k
ZXgsIHRyYWNrLnB0cigpKTsKIAotCi0gICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkg
fHwgdHJhY2stPm1lZGlhRWxlbWVudCgpID09IG1lZGlhRWxlbWVudCgpKTsKLSAgICB0cmFjay0+
c2V0TWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCgpKTsKKyAgICBpZiAoIXRyYWNrLT50cmFja0xp
c3QoKSkKKyAgICAgICAgdHJhY2stPnNldFRyYWNrTGlzdCgqdGhpcyk7CiAKICAgICBzY2hlZHVs
ZUFkZFRyYWNrRXZlbnQoV1RGTW92ZSh0cmFjaykpOwogfQogCit2b2lkIEF1ZGlvVHJhY2tMaXN0
OjpyZW1vdmUoVHJhY2tCYXNlJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2ZW50KQoreworICAgIGF1
dG8mIGF1ZGlvVHJhY2sgPSBkb3duY2FzdDxBdWRpb1RyYWNrPih0cmFjayk7CisgICAgaWYgKGF1
ZGlvVHJhY2sudHJhY2tMaXN0KCkgPT0gdGhpcykKKyAgICAgICAgYXVkaW9UcmFjay5jbGVhclRy
YWNrTGlzdCgpOworCisgICAgVHJhY2tMaXN0QmFzZTo6cmVtb3ZlKHRyYWNrLCBzY2hlZHVsZUV2
ZW50KTsKK30KKwogQXVkaW9UcmFjayogQXVkaW9UcmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0CiB7CiAgICAgaWYgKGluZGV4IDwgbV9pbmJhbmRUcmFja3Muc2l6ZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCmluZGV4IDhhZTAzNDIwMTQy
ZmUxY2Y2MzgwZWZkM2RiZTgxMjJjNGI0NDhkN2UuLjk1ZmQ5MGI0Y2FiYmJkODM4MGM1YWMwYjUz
OTk4ZjE0YWNhZjQ1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVk
aW9UcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3MgQXVkaW9UcmFjazsKIAogY2xhc3MgQXVkaW9U
cmFja0xpc3QgZmluYWwgOiBwdWJsaWMgVHJhY2tMaXN0QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxBdWRpb1RyYWNrTGlzdD4gY3JlYXRlKFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4g
b3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxB
dWRpb1RyYWNrTGlzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgewotICAgICAgICBhdXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2tMaXN0KG93
bmVyLCBjb250ZXh0KSk7CisgICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja0xpc3QoY29udGV4dCkpOwogICAgICAgICBsaXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQpAQCAtNDgsMTIgKzQ4LDEzIEBAIHB1YmxpYzoKICAg
ICBBdWRpb1RyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBBdWRpb1RyYWNr
KiBsYXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIGl0ZW0obGVuZ3RoKCkgLSAxKTsgfQogICAgIHZv
aWQgYXBwZW5kKFJlZjxBdWRpb1RyYWNrPiYmKTsKKyAgICB2b2lkIHJlbW92ZShUcmFja0Jhc2Um
LCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0
CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBBdWRpb1RyYWNrTGlzdChXZWFrUHRyPEhUTUxNZWRp
YUVsZW1lbnQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgQXVkaW9UcmFja0xpc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogfTsKQEAgLTYxLDQgKzYyLDggQEAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoQXVkaW9UcmFja0xpc3QpID09IHNpemVvZihUcmFja0xpc3RCYXNlKSwgIiIpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6QXVkaW9UcmFja0xpc3QpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdl
YkNvcmU6OlRyYWNrTGlzdEJhc2UmIHRyYWNrTGlzdCkgeyByZXR1cm4gdHJhY2tMaXN0LnR5cGUo
KSA9PSBXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpBdWRpb1RyYWNrTGlzdDsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbAppbmRleCBjNDU1NGNmMmQyMDdm
NjNmYTdlMzk5ZGFlNDc0OWU2YzkxMjc0N2RhLi4yOTEzYzhlNDJmNjY1MDI1NTZlZmYyOWJjODgw
NGYzNWYzYTlkZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlv
VHJhY2tMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tM
aXN0LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBD
b25kaXRpb25hbD1WSURFTywKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9v
dCwKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwK
ICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFja0xpc3QgOiBFdmVudFRh
cmdldCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFU
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRy
YWNrLmNwcAppbmRleCA4MzgwMjMyYjc5MjhhMjdiOTMyMzY4MDZjMDI4NTI5ZjA3YmJlYTgwLi5m
YTc4ZjNiYmUyOTE4ZGNhYTgzODQ5NzdjOTM3OWFhNDg1ZDQ0ZDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKQEAgLTMwLDIyICsz
MCwyMiBAQAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIkRhdGFDdWUuaCIKLSNpbmNs
dWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZS5oIgorI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChJbmJhbmREYXRhVGV4dFRyYWNrKTsKIAotaW5saW5lIEluYmFuZERhdGFUZXh0VHJh
Y2s6OkluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGll
bnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDog
SW5iYW5kVGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkKK2lubGluZSBJ
bmJhbmREYXRhVGV4dFRyYWNrOjpJbmJhbmREYXRhVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVu
dCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogSW5iYW5kVGV4
dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpCiB7CiB9CiAKLVJlZjxJbmJhbmREYXRhVGV4
dFRyYWNrPiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBU
ZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2
YXRlKQorUmVmPEluYmFuZERhdGFUZXh0VHJhY2s+IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0
ZSkKIHsKLSAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kRGF0YVRleHRU
cmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpKTsKKyAgICBhdXRvIHRleHRUcmFj
ayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kRGF0YVRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQcml2
YXRlKSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdGV4
dFRyYWNrOwogfQpAQCAtNzAsOCArNzAsOSBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OmFk
ZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGVuZC5pc1Bvc2l0aXZlSW5maW5pdGUoKSAm
JiBtZWRpYUVsZW1lbnQoKSkgewotICAgICAgICBjdWUtPnNldEVuZFRpbWUobWVkaWFFbGVtZW50
KCktPmR1cmF0aW9uTWVkaWFUaW1lKCkpOworICAgIGF1dG8qIHRleHRUcmFja0xpc3QgPSBkb3du
Y2FzdDxUZXh0VHJhY2tMaXN0Pih0cmFja0xpc3QoKSk7CisgICAgaWYgKGVuZC5pc1Bvc2l0aXZl
SW5maW5pdGUoKSAmJiB0ZXh0VHJhY2tMaXN0ICYmIHRleHRUcmFja0xpc3QtPmR1cmF0aW9uKCku
aXNWYWxpZCgpKSB7CisgICAgICAgIGN1ZS0+c2V0RW5kVGltZSh0ZXh0VHJhY2tMaXN0LT5kdXJh
dGlvbigpKTsKICAgICAgICAgbV9pbmNvbXBsZXRlQ3VlTWFwLmFwcGVuZCgmY3VlLmdldCgpKTsK
ICAgICB9CiAKQEAgLTEwMSw4ICsxMDIsOSBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OnVw
ZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJgogICAg
IGN1ZS0+d2lsbENoYW5nZSgpOwogCiAgICAgTWVkaWFUaW1lIGVuZCA9IGluRW5kOwotICAgIGlm
IChlbmQuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIGVu
ZCA9IG1lZGlhRWxlbWVudCgpLT5kdXJhdGlvbk1lZGlhVGltZSgpOworICAgIGF1dG8qIHRleHRU
cmFja0xpc3QgPSBkb3duY2FzdDxUZXh0VHJhY2tMaXN0Pih0cmFja0xpc3QoKSk7CisgICAgaWYg
KGVuZC5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiB0ZXh0VHJhY2tMaXN0ICYmIHRleHRUcmFja0xp
c3QtPmR1cmF0aW9uKCkuaXNWYWxpZCgpKQorICAgICAgICBlbmQgPSB0ZXh0VHJhY2tMaXN0LT5k
dXJhdGlvbigpOwogICAgIGVsc2UKICAgICAgICAgbV9pbmNvbXBsZXRlQ3VlTWFwLnJlbW92ZUZp
cnN0KGN1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4
dFRyYWNrLmgKaW5kZXggZjZiNTBmNDdhOWE0NTI0NjYzZTU2YmUxYjYxYjYwMzc4MjM2ZjMxNC4u
MjUwMTg0YWE3NTBhYzY4MzQxZGM2MWEyODk3ZGZjMTJiMDg1YTE4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKQEAgLTM3LDExICszNywx
MSBAQCBjbGFzcyBEYXRhQ3VlOwogY2xhc3MgSW5iYW5kRGF0YVRleHRUcmFjayBmaW5hbCA6IHB1
YmxpYyBJbmJhbmRUZXh0VHJhY2sgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5iYW5k
RGF0YVRleHRUcmFjayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmJhbmREYXRhVGV4dFRy
YWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlJik7CisgICAgc3RhdGljIFJlZjxJbmJhbmREYXRhVGV4dFRyYWNrPiBjcmVhdGUoRG9j
dW1lbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAgICAgdmlydHVhbCB+SW5iYW5kRGF0
YVRleHRUcmFjaygpOwogCiBwcml2YXRlOgotICAgIEluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1l
bnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgSW5i
YW5kRGF0YVRleHRUcmFjayhEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAog
ICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggNTU2
ZTQ0OWU4NzYyYWYxNTA1YzkxMDkwMzY3ZWUxNThkZDNhMDI5Zi4uMjM5MWQ1ZWRlNTcyNjAxYWI3
OTRkMzI1NWE2ZmU5ZTE1ZDRiODNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZh
dGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgog
I2luY2x1ZGUgIlZUVFJlZ2lvbkxpc3QuaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTYzLDE0ICs2NCwxNCBAQCB2b2lkIEdlbmVyaWNU
ZXh0VHJhY2tDdWVNYXA6OnJlbW92ZShUZXh0VHJhY2tDdWUmIHB1YmxpY0N1ZSkKICAgICAgICAg
bV9kYXRhVG9DdWVNYXAucmVtb3ZlKGN1ZUlkZW50aWZpZXIpOwogfQogCi1pbmxpbmUgSW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6SW5iYW5kR2VuZXJpY1RleHRUcmFjayhEb2N1bWVudCYgZG9jdW1l
bnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFj
a1ByaXZhdGUpCi0gICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQ
cml2YXRlKQoraW5saW5lIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OkluYmFuZEdlbmVyaWNUZXh0
VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCisgICAgOiBJbmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkKIHsK
IH0KIAotUmVmPEluYmFuZEdlbmVyaWNUZXh0VHJhY2s+IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCitSZWY8SW5iYW5kR2VuZXJpY1RleHRU
cmFjaz4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIGF1dG8gdGV4dFRy
YWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmRHZW5lcmljVGV4dFRyYWNrKGRvY3VtZW50LCBjbGll
bnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJ
bmJhbmRHZW5lcmljVGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpKTsKICAgICB0ZXh0
VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJhY2s7CiB9CkBAIC04
Myw4ICs4NCw4IEBAIHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6dXBkYXRlQ3VlRnJvbUN1
ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyYgY3VlLCBJbmJhCiAKICAgICBjdWUuc2V0U3RhcnRU
aW1lKGluYmFuZEN1ZS5zdGFydFRpbWUoKSk7CiAgICAgTWVkaWFUaW1lIGVuZFRpbWUgPSBpbmJh
bmRDdWUuZW5kVGltZSgpOwotICAgIGlmIChlbmRUaW1lLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYm
IG1lZGlhRWxlbWVudCgpKQotICAgICAgICBlbmRUaW1lID0gbWVkaWFFbGVtZW50KCktPmR1cmF0
aW9uTWVkaWFUaW1lKCk7CisgICAgaWYgKGVuZFRpbWUuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYg
dGV4dFRyYWNrTGlzdCgpICYmIHRleHRUcmFja0xpc3QoKS0+ZHVyYXRpb24oKS5pc1ZhbGlkKCkp
CisgICAgICAgIGVuZFRpbWUgPSB0ZXh0VHJhY2tMaXN0KCktPmR1cmF0aW9uKCk7CiAgICAgY3Vl
LnNldEVuZFRpbWUoZW5kVGltZSk7CiAgICAgY3VlLnNldFRleHQoaW5iYW5kQ3VlLmNvbnRlbnQo
KSk7CiAgICAgY3VlLnNldElkKGluYmFuZEN1ZS5pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmgKaW5kZXggZmU5NTM0OGQzZmJi
MWI4MzY0MDg1NzRiMjcwMTBhNzZkM2EzMWIwZC4uNDU5N2IyYTFjNmY3M2I1NjkxYjQ3NTg3MTM1
NDIzMjcyOTJlNThjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmgKQEAgLTUzLDExICs1MywxMSBAQCBwcml2YXRlOgogY2xhc3Mg
SW5iYW5kR2VuZXJpY1RleHRUcmFjayBmaW5hbCA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2ssIHBy
aXZhdGUgV2ViVlRUUGFyc2VyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKElu
YmFuZEdlbmVyaWNUZXh0VHJhY2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8SW5iYW5kR2VuZXJpY1RleHRUcmFj
az4gY3JlYXRlKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogICAgIHZpcnR1
YWwgfkluYmFuZEdlbmVyaWNUZXh0VHJhY2soKTsKIAogcHJpdmF0ZToKLSAgICBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSYpOworICAgIEluYmFuZEdlbmVyaWNUZXh0VHJhY2soRG9jdW1lbnQmLCBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICB2b2lkIGFkZEdlbmVyaWNDdWUoSW5iYW5kR2VuZXJp
Y0N1ZSYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3Vl
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRl
eHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHAKaW5kZXggOWNmYTE0ZGYyYWU5NTg2NmM1M2I4YjEwM2I2ZDg1OWQ0YmZkNWQ5Yy4uYzZmZWEz
NWVkMzhiMDQ4NjAzZDJjZTgxZGZhYmIwMjYxODg0MjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYg
RU5BQkxFKFZJREVPKQogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUg
IkluYmFuZERhdGFUZXh0VHJhY2suaCIKICNpbmNsdWRlICJJbmJhbmRHZW5lcmljVGV4dFRyYWNr
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgpAQCAtMzksMjQgKzM4LDI0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElu
YmFuZFRleHRUcmFjayk7CiAKLVJlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFRleHRUcmFjazo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmRUZXh0VHJhY2s+IElu
YmFuZFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewogICAgIHN3aXRjaCAodHJhY2tQcml2YXRlLmN1ZUZv
cm1hdCgpKSB7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6OkRh
dGE6Ci0gICAgICAgIHJldHVybiBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQs
IGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICAgICAgcmV0dXJuIEluYmFuZERhdGFUZXh0VHJh
Y2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICBjYXNlIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOwor
ICAgICAgICByZXR1cm4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCB0
cmFja1ByaXZhdGUpOwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0
OjpXZWJWVFQ6Ci0gICAgICAgIHJldHVybiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0ZShk
b2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZhdGUpOworICAgICAgICByZXR1cm4gSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGF1dG8gdGV4dFRyYWNrID0gSW5iYW5kRGF0YVRl
eHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgYXV0
byB0ZXh0VHJhY2sgPSBJbmJhbmREYXRhVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIHRyYWNr
UHJpdmF0ZSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4g
dGV4dFRyYWNrOwogfQogCi1JbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayhEb2N1bWVu
dCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlJiB0cmFja1ByaXZhdGUpCi0gICAgOiBUZXh0VHJhY2soJmRvY3VtZW50LCAmY2xpZW50LCBl
bXB0eUF0b20oKSwgdHJhY2tQcml2YXRlLmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFj
a1ByaXZhdGUubGFuZ3VhZ2UoKSwgSW5CYW5kKQorSW5iYW5kVGV4dFRyYWNrOjpJbmJhbmRUZXh0
VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCisgICAgOiBUZXh0VHJhY2soJmRvY3VtZW50LCBlbXB0eUF0b20oKSwgdHJhY2tQcml2
YXRlLmlkKCksIHRyYWNrUHJpdmF0ZS5sYWJlbCgpLCB0cmFja1ByaXZhdGUubGFuZ3VhZ2UoKSwg
SW5CYW5kKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKIHsKICAgICBtX3ByaXZhdGUt
PnNldENsaWVudCh0aGlzKTsKQEAgLTE1OSwxMCArMTU4LDkgQEAgdm9pZCBJbmJhbmRUZXh0VHJh
Y2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBJ
bmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmUoKQogewotICAgIGF1dG8gZWxlbWVudCA9IG1ha2VS
ZWZQdHIobWVkaWFFbGVtZW50KCkuZ2V0KCkpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotICAgIGVsZW1lbnQtPnJlbW92ZVRleHRUcmFjaygqdGhpcyk7CisgICAgbV9jbGll
bnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LndpbGxSZW1v
dmVUZXh0VHJhY2soKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEluYmFuZFRleHRUcmFjazo6
dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKQEAgLTE5NywxNCArMTk1LDYgQEAgTWVkaWFUaW1lIElu
YmFuZFRleHRUcmFjazo6c3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdAogICAgIHJldHVybiBtX3By
aXZhdGUtPnN0YXJ0VGltZVZhcmlhbmNlKCk7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrOjpz
ZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVtZW50KQotewotICAg
IFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50KGVsZW1lbnQpOwotI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAotICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVy
KCkpOwotI2VuZGlmCi19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgSW5iYW5k
VGV4dFRyYWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suaAppbmRleCBiYjEyYzE1OWRlNzRmOTI5NDUzNjk1NDFkNzg3MmU2YzVjMWFjYjQ3Li5mMjhh
MWQ0ODVhNTk5YjY4OWMwZjYxMDRkNmYzZjg0MTBjNWUwODE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgSW5iYW5kVGV4dFRyYWNrIDogcHVibGljIFRleHRUcmFjaywgcHJp
dmF0ZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKEluYmFuZFRleHRUcmFjayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmJhbmRU
ZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRU
cmFja1ByaXZhdGUmKTsKKyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFjaz4gY3JlYXRlKERv
Y3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogICAgIHZpcnR1YWwgfkluYmFuZFRl
eHRUcmFjaygpOwogCiAgICAgYm9vbCBpc0Nsb3NlZENhcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7
CkBAIC00OSwxMyArNDksMTIgQEAgcHVibGljOgogICAgIEF0b21TdHJpbmcgaW5CYW5kTWV0YWRh
dGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRQcml2
YXRlKEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKLSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChX
ZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+KSBvdmVycmlkZTsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKikgZmlu
YWw7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIEluYmFuZFRleHRUcmFjayhEb2N1bWVudCYs
IFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBJbmJhbmRU
ZXh0VHJhY2soRG9jdW1lbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICB2b2lk
IHNldE1vZGVJbnRlcm5hbChNb2RlKTsKICAgICB2b2lkIHVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suY3BwCmluZGV4IDJhYTlmM2IwM2FiM2ExNDRlOTI3MTNhNjVmYWYzZmZjZGY1YWE3YWMuLjIy
MjNhNTcyYWEwZjZjYTk0YzJkMjc0ZjFlYzM3NTRiYzUyNWY3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKQEAgLTM5LDE0
ICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChJbmJhbmRXZWJWVFRUZXh0VHJhY2spOwogCi1pbmxpbmUgSW5iYW5kV2ViVlRUVGV4dFRy
YWNrOjpJbmJhbmRXZWJWVFRUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tD
bGllbnQmIGNsaWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAg
IDogSW5iYW5kVGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkKK2lubGlu
ZSBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OkluYmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVudCYg
ZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICA6IElu
YmFuZFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQcml2YXRlKQogewogfQogCi1SZWY8SW5iYW5k
VGV4dFRyYWNrPiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFRleHRUcmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFj
a1ByaXZhdGUpCitSZWY8SW5iYW5kVGV4dFRyYWNrPiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKIHsKLSAgICBhdXRvIHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgSW5iYW5kV2ViVlRU
VGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmRXZWJWVFRUZXh0VHJhY2soZG9jdW1lbnQsIHRy
YWNrUHJpdmF0ZSkpOwogICAgIHRleHRUcmFjay0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0
dXJuIHRleHRUcmFjazsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5oCmluZGV4IDMxNTIzNTcyOWI1ZmJkOTlmNjM0ZmE3ZDZjNzc2YzI3
YmM2YzFjNTIuLjkxZmEwMzk4YTRmOWMwZTdhNTQ5NzY2MjQ4ZmEzMDU2ZjgxNzU3MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaApA
QCAtMzYsMTEgKzM2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluYmFuZFdlYlZU
VFRleHRUcmFjayBmaW5hbCA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2ssIHByaXZhdGUgV2ViVlRU
UGFyc2VyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEluYmFuZFdlYlZUVFRl
eHRUcmFjayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmJhbmRUZXh0VHJhY2s+IGNyZWF0
ZShEb2N1bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsK
KyAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFjaz4gY3JlYXRlKERvY3VtZW50JiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYpOwogICAgIHZpcnR1YWwgfkluYmFuZFdlYlZUVFRleHRUcmFjaygp
OwogCiBwcml2YXRlOgotICAgIEluYmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVudCYsIFRleHRU
cmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBJbmJhbmRXZWJWVFRU
ZXh0VHJhY2soRG9jdW1lbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAKICAgICBXZWJW
VFRQYXJzZXImIHBhcnNlcigpOwogICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDMxY2JmMGE2NThkODUzZGM5
OTEwNThlMWYyYTlmY2I5OWZlNzc5ZDQuLjM4MzU3NjQxMTZkMDkyNTk4ODc4YjY1YThmZDhhODI1
OTAzZWQ1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVU
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0
VHJhY2suY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChMb2FkYWJsZVRleHRUcmFjayk7CiAKIExvYWRhYmxlVGV4dFRy
YWNrOjpMb2FkYWJsZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50JiB0cmFjaywgY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQot
ICAgIDogVGV4dFRyYWNrKCZ0cmFjay5kb2N1bWVudCgpLCAmdHJhY2ssIGtpbmQsIGVtcHR5U3Ry
aW5nKCksIGxhYmVsLCBsYW5ndWFnZSwgVHJhY2tFbGVtZW50KQorICAgIDogVGV4dFRyYWNrKCZ0
cmFjay5kb2N1bWVudCgpLCBraW5kLCBlbXB0eVN0cmluZygpLCBsYWJlbCwgbGFuZ3VhZ2UsIFRy
YWNrRWxlbWVudCkKICAgICAsIG1fdHJhY2tFbGVtZW50KCZ0cmFjaykKIHsKIH0KQEAgLTk2LDEx
ICs5Niw2IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnNjaGVkdWxlTG9hZChjb25zdCBVUkwm
IHVybCkKICAgICB9KTsKIH0KIAotRWxlbWVudCogTG9hZGFibGVUZXh0VHJhY2s6OmVsZW1lbnQo
KQotewotICAgIHJldHVybiBtX3RyYWNrRWxlbWVudDsKLX0KLQogdm9pZCBMb2FkYWJsZVRleHRU
cmFjazo6bmV3Q3Vlc0F2YWlsYWJsZShUZXh0VHJhY2tMb2FkZXImIGxvYWRlcikKIHsKICAgICBB
U1NFUlRfVU5VU0VEKGxvYWRlciwgbV9sb2FkZXIuZ2V0KCkgPT0gJmxvYWRlcik7CkBAIC0xMTQs
OCArMTA5LDcgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJsZShUZXh0
VHJhY2tMb2FkZXImIGxvYWRlcikKICAgICAgICAgbV9jdWVzLT5hZGQoV1RGTW92ZShuZXdDdWUp
KTsKICAgICB9CiAKLSAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT50ZXh0VHJh
Y2tBZGRDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAgICBUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFi
bGUoKm1fY3Vlcyk7CiB9CiAKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdDb21w
bGV0ZWQoVGV4dFRyYWNrTG9hZGVyJiBsb2FkZXIsIGJvb2wgbG9hZGluZ0ZhaWxlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAppbmRleCAwOGRmYWFk
MjhkY2RkMWQ4YWI1Y2IwZmI2YWUyZjg2MWJlNzkwOGIzLi5iN2ZiNDNmOTdlMDhlNzdiNjk2ZGMz
YWRhYzg0ZGQ2ZjQ5ZjE3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2Fk
YWJsZVRleHRUcmFjay5oCkBAIC01Niw3ICs1Niw2IEBAIHByaXZhdGU6CiAKICAgICBBdG9tU3Ry
aW5nIGlkKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCBmaW5hbDsK
LSAgICBFbGVtZW50KiBlbGVtZW50KCkgZmluYWw7CiAKICAgICB2b2lkIGxvYWRUaW1lckZpcmVk
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAppbmRleCBlNWU1MGI0
MTk1NmViMTQxNjFiM2FmNTI4MzgxYTU3NWRkMGYxOGM1Li41Y2UyNmU2YWRhNDA1ZjA5ZjMxZmZj
NzM4OGNhODg5ODMwY2M4YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
Y3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRGF0YUN1ZS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlz
dC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKQEAgLTg4LDIwICs4NywxOSBAQCBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgZm9yY2VkS2V5d29yZCgpCiAKIFRleHRUcmFjayYgVGV4dFRy
YWNrOjpjYXB0aW9uTWVudU9mZkl0ZW0oKQogewotICAgIHN0YXRpYyBUZXh0VHJhY2smIG9mZiA9
IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsIG51bGxwdHIsICJvZmYgbWVudSBpdGVtIiwgZW1w
dHlBdG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOworICAgIHN0YXRp
YyBUZXh0VHJhY2smIG9mZiA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJvZmYgbWVudSBp
dGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOwog
ICAgIHJldHVybiBvZmY7CiB9CiAKIFRleHRUcmFjayYgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1
dG9tYXRpY0l0ZW0oKQogewotICAgIHN0YXRpYyBUZXh0VHJhY2smIGF1dG9tYXRpYyA9IFRleHRU
cmFjazo6Y3JlYXRlKG51bGxwdHIsIG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIiwgZW1w
dHlBdG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOworICAgIHN0YXRp
YyBUZXh0VHJhY2smIGF1dG9tYXRpYyA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJhdXRv
bWF0aWMgbWVudSBpdGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSku
bGVha1JlZigpOwogICAgIHJldHVybiBhdXRvbWF0aWM7CiB9CiAKLVRleHRUcmFjazo6VGV4dFRy
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xp
ZW50LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3Qg
QXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tU
eXBlIHR5cGUpCi0gICAgOiBUcmFja0Jhc2UoVHJhY2tCYXNlOjpUZXh0VHJhY2ssIGlkLCBsYWJl
bCwgbGFuZ3VhZ2UpCitUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlLCBUZXh0
VHJhY2tUeXBlIHR5cGUpCisgICAgOiBUcmFja0Jhc2UoY29udGV4dCwgVHJhY2tCYXNlOjpUZXh0
VHJhY2ssIGlkLCBsYWJlbCwgbGFuZ3VhZ2UpCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4
dCkKLSAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fdHJhY2tUeXBlKHR5cGUpCiB7CiAg
ICAgaWYgKGtpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCkBAIC0xMTYsOSArMTE0LDkgQEAgVGV4
dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRy
YWNrQ2xpZW50KiBjbGllbnQsIGMKICAgICAgICAgbV9raW5kID0gS2luZDo6TWV0YWRhdGE7CiB9
CiAKLVJlZjxUZXh0VHJhY2s+IFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwg
VGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0
b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYg
bGFuZ3VhZ2UpCitSZWY8VGV4dFRyYWNrPiBUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25z
dCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7Ci0gICAg
YXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50
LCBraW5kLCBpZCwgbGFiZWwsIGxhbmd1YWdlLCBBZGRUcmFjaykpOworICAgIGF1dG8gdGV4dFRy
YWNrID0gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2soZG9jdW1lbnQsIGtpbmQsIGlkLCBsYWJlbCwg
bGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsK
ICAgICByZXR1cm4gdGV4dFRyYWNrOwogfQpAQCAtMTI2LDggKzEyNCw5IEBAIFJlZjxUZXh0VHJh
Y2s+IFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50
KiBjbGllbnQsIGNvCiBUZXh0VHJhY2s6On5UZXh0VHJhY2soKQogewogICAgIGlmIChtX2N1ZXMp
IHsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFj
a1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgICAgICBtX2NsaWVudHMuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICAgICAgY2xpZW50LnRleHRUcmFja1JlbW92
ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgICAgICB9KTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBtX2N1ZXMtPml0
ZW0oaSktPnNldFRyYWNrKG51bGxwdHIpOwogICAgIH0KQEAgLTEzNyw2ICsxMzYsMjMgQEAgVGV4
dFRyYWNrOjp+VGV4dFRyYWNrKCkKICAgICB9CiB9CiAKK1RleHRUcmFja0xpc3QqIFRleHRUcmFj
azo6dGV4dFRyYWNrTGlzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PFRleHRUcmFj
a0xpc3Q+KHRyYWNrTGlzdCgpKTsKK30KKwordm9pZCBUZXh0VHJhY2s6OmFkZENsaWVudChUZXh0
VHJhY2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhj
bGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgVGV4dFRyYWNr
OjpjbGVhckNsaWVudChUZXh0VHJhY2tDbGllbnQmIGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9j
bGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsK
K30KKwogRG9jdW1lbnQmIFRleHRUcmFjazo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwpAQCAtMjAwLDE5ICsyMTYsMTUgQEAgdm9pZCBU
ZXh0VHJhY2s6OnNldEtpbmQoS2luZCBuZXdLaW5kKQogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAgICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBp
cyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2
ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudGV4dFRyYWNrcy4KLSAgICBpZiAobV9z
b3VyY2VCdWZmZXIpCi0gICAgICAgIG1fc291cmNlQnVmZmVyLT50ZXh0VHJhY2tzKCkuc2NoZWR1
bGVDaGFuZ2VFdmVudCgpOwotCiAgICAgLy8gNC4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1w
bGUgZXZlbnQgbmFtZWQgY2hhbmdlIGF0IHRoZSBUZXh0VHJhY2tMaXN0IG9iamVjdCByZWZlcmVu
Y2VkIGJ5CiAgICAgLy8gdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFF
bGVtZW50LgotICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgbWVkaWFFbGVtZW50KCkt
PmVuc3VyZVRleHRUcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiAjZW5kaWYKIAogICAg
IGlmIChvbGRLaW5kICE9IG1fa2luZCkgewogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIG1fa2luZCk7Ci0gICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50
LT50ZXh0VHJhY2tLaW5kQ2hhbmdlZCgqdGhpcyk7CisgICAgICAgIG1fY2xpZW50cy5mb3JFYWNo
KFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgICAgICBjbGllbnQudGV4dFRyYWNrS2lu
ZENoYW5nZWQoKnRoaXMpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKQEAgLTI1Miw4ICsyNjQs
MTEgQEAgdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2RlKQogCiAgICAgLy8gSWYgbW9k
ZSBjaGFuZ2VzIHRvIGRpc2FibGVkLCByZW1vdmUgdGhpcyB0cmFjaydzIGN1ZXMgZnJvbSB0aGUg
Y2xpZW50CiAgICAgLy8gYmVjYXVzZSB0aGV5IHdpbGwgbm8gbG9uZ2VyIGJlIGFjY2Vzc2libGUg
ZnJvbSB0aGUgY3VlcygpIGZ1bmN0aW9uLgotICAgIGlmIChtb2RlID09IE1vZGU6OkRpc2FibGVk
ICYmIG1fY2xpZW50ICYmIG1fY3VlcykKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92
ZUN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgIGlmIChtb2RlID09IE1vZGU6OkRpc2FibGVkICYm
IG1fY3VlcykgeworICAgICAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVu
dCkgeworICAgICAgICAgICAgY2xpZW50LnRleHRUcmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1
ZXMpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICBpZiAobW9kZSAhPSBNb2RlOjpTaG93aW5n
ICYmIG1fY3VlcykgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY3Vlcy0+bGVu
Z3RoKCk7ICsraSkKQEAgLTI2Miw4ICsyNzcsOSBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZShN
b2RlIG1vZGUpCiAKICAgICBtX21vZGUgPSBtb2RlOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAg
ICAgICBtX2NsaWVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQoKnRoaXMpOworICAgIG1fY2xpZW50
cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJh
Y2tNb2RlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKIFRleHRUcmFja0N1ZUxpc3QqIFRl
eHRUcmFjazo6Y3VlcygpCkBAIC0yODUsOSArMzAxLDEwIEBAIHZvaWQgVGV4dFRyYWNrOjpyZW1v
dmVBbGxDdWVzKCkKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBpZiAo
bV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAq
bV9jdWVzKTsKLSAgICAKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVu
dCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7
CisgICAgfSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY3Vlcy0+bGVuZ3RoKCk7
ICsraSkKICAgICAgICAgbV9jdWVzLT5pdGVtKGkpLT5zZXRUcmFjayhudWxscHRyKTsKICAgICAK
QEAgLTM0MSw4ICszNTgsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBUZXh0VHJhY2s6OmFkZEN1ZShS
ZWY8VGV4dFRyYWNrQ3VlPiYmIGN1ZSkKICAgICBjdWUtPnNldFRyYWNrKHRoaXMpOwogICAgIGVu
c3VyZVRleHRUcmFja0N1ZUxpc3QoKS5hZGQoY3VlLmNvcHlSZWYoKSk7CiAKLSAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT50ZXh0VHJhY2tBZGRDdWUoKnRoaXMsIGN1ZSk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXMsIGN1ZV0gKGF1dG8mIGNsaWVudCkgeworICAgICAg
ICBjbGllbnQudGV4dFRyYWNrQWRkQ3VlKCp0aGlzLCBjdWUpOworICAgIH0pOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KQEAgLTM2Niw4ICszODQsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBUZXh0VHJh
Y2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmIGN1ZSkKICAgICBtX2N1ZXMtPnJlbW92ZShjdWUp
OwogICAgIGN1ZS5zZXRJc0FjdGl2ZShmYWxzZSk7CiAgICAgY3VlLnNldFRyYWNrKG51bGxwdHIp
OwotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1
ZSgqdGhpcywgY3VlKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkg
eworICAgICAgICBjbGllbnQudGV4dFRyYWNrUmVtb3ZlQ3VlKCp0aGlzLCBjdWUpOworICAgIH0p
OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTQ2MCwzMiArNDc5LDMwIEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFRleHRUcmFjazo6cmVtb3ZlUmVnaW9uKFZUVFJlZ2lvbiYgcmVnaW9uKQogCiB2b2lk
IFRleHRUcmFjazo6Y3VlV2lsbENoYW5nZShUZXh0VHJhY2tDdWUmIGN1ZSkKIHsKLSAgICBpZiAo
IW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGUgY3VlIG1heSBuZWVkIHRv
IGJlIHJlcG9zaXRpb25lZCBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGludGVydmFsIHRyZWUsIG1h
eSBuZWVkIHRvCi0gICAgLy8gYmUgcmUtcmVuZGVyZWQsIGV0Yywgc28gcmVtb3ZlIGl0IGJlZm9y
ZSB0aGUgbW9kaWZpY2F0aW9uLi4uCi0gICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1ZSgq
dGhpcywgY3VlKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkgewor
ICAgICAgICAvLyBUaGUgY3VlIG1heSBuZWVkIHRvIGJlIHJlcG9zaXRpb25lZCBpbiB0aGUgbWVk
aWEgZWxlbWVudCdzIGludGVydmFsIHRyZWUsIG1heSBuZWVkIHRvCisgICAgICAgIC8vIGJlIHJl
LXJlbmRlcmVkLCBldGMsIHNvIHJlbW92ZSBpdCBiZWZvcmUgdGhlIG1vZGlmaWNhdGlvbi4uLgor
ICAgICAgICBjbGllbnQudGV4dFRyYWNrUmVtb3ZlQ3VlKCp0aGlzLCBjdWUpOworICAgIH0pOwog
fQogCiB2b2lkIFRleHRUcmFjazo6Y3VlRGlkQ2hhbmdlKFRleHRUcmFja0N1ZSYgY3VlKQogewot
ICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgVGV4dFRyYWNrQ3VlTGlzdCBvcmRlciBpcyB1cC10by1kYXRlLgogICAgIGVuc3VyZVRleHRU
cmFja0N1ZUxpc3QoKS51cGRhdGVDdWVJbmRleChjdWUpOwogCiAgICAgLy8gLi4uIGFuZCBhZGQg
aXQgYmFjayBhZ2Fpbi4KLSAgICBtX2NsaWVudC0+dGV4dFRyYWNrQWRkQ3VlKCp0aGlzLCBjdWUp
OworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNs
aWVudC50ZXh0VHJhY2tBZGRDdWUoKnRoaXMsIGN1ZSk7CisgICAgfSk7CiB9CiAKIGludCBUZXh0
VHJhY2s6OnRyYWNrSW5kZXgoKQogewogICAgIGlmICghbV90cmFja0luZGV4KSB7Ci0gICAgICAg
IGlmICghbV9tZWRpYUVsZW1lbnQpCisgICAgICAgIGlmICghbV90ZXh0VHJhY2tMaXN0KQogICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG1fdHJhY2tJbmRleCA9IG1fbWVkaWFFbGVtZW50
LT5lbnN1cmVUZXh0VHJhY2tzKCkuZ2V0VHJhY2tJbmRleCgqdGhpcyk7CisgICAgICAgIG1fdHJh
Y2tJbmRleCA9IG1fdGV4dFRyYWNrTGlzdC0+Z2V0VHJhY2tJbmRleCgqdGhpcyk7CiAgICAgfQog
ICAgIHJldHVybiBtX3RyYWNrSW5kZXgudmFsdWUoKTsKIH0KQEAgLTUxMiw5ICs1MjksOSBAQCBU
ZXh0VHJhY2tDdWVMaXN0JiBUZXh0VHJhY2s6OmVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKQogaW50
IFRleHRUcmFjazo6dHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNrcygpCiB7CiAgICAg
aWYgKCFtX3JlbmRlcmVkVHJhY2tJbmRleCkgewotICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50
KQorICAgICAgICBpZiAoIW1fdGV4dFRyYWNrTGlzdCkKICAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICBtX3JlbmRlcmVkVHJhY2tJbmRleCA9IG1fbWVkaWFFbGVtZW50LT5lbnN1cmVUZXh0
VHJhY2tzKCkuZ2V0VHJhY2tJbmRleFJlbGF0aXZlVG9SZW5kZXJlZFRyYWNrcygqdGhpcyk7Cisg
ICAgICAgIG1fcmVuZGVyZWRUcmFja0luZGV4ID0gbV90ZXh0VHJhY2tMaXN0LT5nZXRUcmFja0lu
ZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tzKCp0aGlzKTsKICAgICB9CiAgICAgcmV0dXJuIG1f
cmVuZGVyZWRUcmFja0luZGV4LnZhbHVlKCk7CiB9CkBAIC01OTcsNyArNjE0LDYgQEAgY29uc3Qg
Y2hhciogVGV4dFRyYWNrOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4g
IlRleHRUcmFjayI7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogdm9pZCBUZXh0VHJh
Y2s6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogewogICAgIC8vIDEx
LjEgbGFuZ3VhZ2UsIG9uIHNldHRpbmc6CkBAIC02MTEsMTUgKzYyNywzNSBAQCB2b2lkIFRleHRU
cmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKICAgICAvLyAz
LiBJZiB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGlzIHRyYWNrIGlzIG5vdCBudWxs
LCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlCiAgICAgLy8gZXZlbnQgbmFtZWQg
Y2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLgotICAgIGlmIChtX3NvdXJjZUJ1ZmZl
cikKLSAgICAgICAgbV9zb3VyY2VCdWZmZXItPnRleHRUcmFja3MoKS5zY2hlZHVsZUNoYW5nZUV2
ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBu
YW1lZCBjaGFuZ2UgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJlZmVyZW5jZWQgYnkKICAg
ICAvLyB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCi0g
ICAgaWYgKG1lZGlhRWxlbWVudCgpKQotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVGV4
dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChb
Jl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudGV4dFRyYWNrTGFuZ3VhZ2VDaGFu
Z2VkKCp0aGlzKTsKKyAgICB9KTsKK30KKwordm9pZCBUZXh0VHJhY2s6OnNldElkKGNvbnN0IEF0
b21TdHJpbmcmIGlkKQoreworICAgIFRyYWNrQmFzZTo6c2V0SWQoaWQpOworICAgIG1fY2xpZW50
cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJh
Y2tJZENoYW5nZWQoKnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFRleHRUcmFjazo6c2V0TGFi
ZWwoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwpCit7CisgICAgVHJhY2tCYXNlOjpzZXRMYWJlbChs
YWJlbCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgY2xpZW50LnRleHRUcmFja0xhYmVsQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKGNvbnN0IFRleHRUcmFja0N1ZUxpc3Qm
IGxpc3QpCit7CisgICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAg
ICAgICAgY2xpZW50LnRleHRUcmFja0FkZEN1ZXMoKnRoaXMsIGxpc3QpOworICAgIH0pOwogfQot
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrLmgKaW5kZXggNzQ2MzJlYTRjMGQ5YTAzN2E3YjY2MDExNzdkMzRjOWE5YzE1M2U2
Mi4uOGIzMTZlN2FkYTQ5YzMwMjg5NTI0NWIwYTcxOGVjZDRkODkyOWUyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCkBAIC0zMiwzMCArMzIsMzYgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRl
ICJUcmFja0Jhc2UuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dFRy
YWNrOworY2xhc3MgVGV4dFRyYWNrTGlzdDsKIGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CiBjbGFz
cyBWVFRSZWdpb247CiBjbGFzcyBWVFRSZWdpb25MaXN0OwogCi1jbGFzcyBUZXh0VHJhY2tDbGll
bnQgeworY2xhc3MgVGV4dFRyYWNrQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRleHRU
cmFja0NsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpID0g
ZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNr
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29u
c3QgVGV4dFRyYWNrQ3VlTGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVt
b3ZlQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRy
YWNrQ3VlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tJZENoYW5nZWQoVGV4dFRy
YWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFj
ayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTGFiZWxDaGFuZ2VkKFRleHRUcmFjayYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNr
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29u
c3QgVGV4dFRyYWNrQ3VlTGlzdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNr
Q3VlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNr
JikgeyB9CiB9OwogCiBjbGFzcyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChUZXh0VHJhY2spOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8VGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQqLCBUZXh0VHJhY2tDbGllbnQqLCBjb25zdCBB
dG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYg
bGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAgICBzdGF0aWMgUmVmPFRleHRU
cmFjaz4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRv
bVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBs
YW5ndWFnZSk7CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrKCk7CiAKICAgICBzdGF0aWMgVGV4dFRy
YWNrJiBjYXB0aW9uTWVudU9mZkl0ZW0oKTsKQEAgLTY0LDYgKzcwLDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzdWJ0aXRsZXNLZXl3b3JkKCk7CiAgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21TdHJpbmcmKTsKIAorICAgIFRleHRU
cmFja0xpc3QqIHRleHRUcmFja0xpc3QoKSBjb25zdDsKKwogICAgIGVudW0gY2xhc3MgS2luZCB7
IFN1YnRpdGxlcywgQ2FwdGlvbnMsIERlc2NyaXB0aW9ucywgQ2hhcHRlcnMsIE1ldGFkYXRhLCBG
b3JjZWQgfTsKICAgICBLaW5kIGtpbmQoKSBjb25zdDsKIApAQCAtODgsNyArOTYsOCBAQCBwdWJs
aWM6CiAKICAgICBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzSW50ZXJuYWwoKSBjb25zdCB7IHJldHVy
biBtX2N1ZXMuZ2V0KCk7IH0KIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBvdmVycmlkZSB7IG1f
Y2xpZW50ID0gbnVsbHB0cjsgfQorICAgIHZvaWQgYWRkQ2xpZW50KFRleHRUcmFja0NsaWVudCYp
OworICAgIHZvaWQgY2xlYXJDbGllbnQoVGV4dFRyYWNrQ2xpZW50Jik7CiAKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBhZGRDdWUoUmVmPFRleHRUcmFja0N1ZT4mJik7CiAgICAgdmlydHVhbCBFeGNl
cHRpb25Pcjx2b2lkPiByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJik7CkBAIC0xMjIsOSArMTMxLDEw
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQWxsQ3VlcygpOwogCi0jaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKLSAgICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVy
cmlkZTsKLSNlbmRpZgorICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIGZp
bmFsOworCisgICAgdm9pZCBzZXRJZChjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRMYWJlbChjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNJbmJhbmQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC0xMzksMjAgKzE0
OSwyMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUN1ZXNOb3RJblRpbWVSYW5n
ZXMoUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKIHByb3RlY3RlZDoKLSAgICBUZXh0VHJhY2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IEF0b21TdHJpbmcm
IGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29u
c3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUpOworICAgIFRleHRUcmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRv
bVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBs
YW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25z
dDsKLSAgICBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAK
ICAgICBib29sIGhhc0N1ZShUZXh0VHJhY2tDdWUmLCBUZXh0VHJhY2tDdWU6OkN1ZU1hdGNoUnVs
ZXMgPSBUZXh0VHJhY2tDdWU6Ok1hdGNoQWxsRmllbGRzKTsKICAgICB2b2lkIHNldEtpbmQoS2lu
ZCk7CiAKKyAgICB2b2lkIG5ld0N1ZXNBdmFpbGFibGUoY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYp
OworCiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxTdHJpbmc+PiBtX3N0eWxlU2hlZXRzOworICAgIFdlYWtIYXNoU2V0PFRleHRU
cmFja0NsaWVudD4gbV9jbGllbnRzOwogCiBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVGV4dFRyYWNr
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAg
IGJvb2wgZW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xNjYsNiArMTc4LDggQEAgcHJp
dmF0ZToKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiVGV4dFRyYWNrIjsgfQogI2VuZGlmCiAKKyAgICBXZWFrUHRyPFRleHRUcmFja0xpc3Q+
IG1fdGV4dFRyYWNrTGlzdDsKKwogICAgIFZUVFJlZ2lvbkxpc3QmIGVuc3VyZVZUVFJlZ2lvbkxp
c3QoKTsKICAgICBSZWZQdHI8VlRUUmVnaW9uTGlzdD4gbV9yZWdpb25zOwogCkBAIC0xNzMsNyAr
MTg3LDYgQEAgcHJpdmF0ZToKIAogICAgIE1vZGUgbV9tb2RlIHsgTW9kZTo6RGlzYWJsZWQgfTsK
ICAgICBLaW5kIG1fa2luZCB7IEtpbmQ6OlN1YnRpdGxlcyB9OwotICAgIFRleHRUcmFja0NsaWVu
dCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlwZTsKICAgICBSZWFkaW5l
c3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkIH07CiAgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IG1fdHJhY2tJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlk
bAppbmRleCBhYTFiMDRhMjcyYzk5MmYxMmVjYjcxMDgzZTY3MDk1ODhlYzJiODg4Li4yZTVmNTcy
ZjQxMDI1ZWY2ODFlZDcxM2YwMWZmNmJiNThmNjY0MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2suaWRsCkBAIC0zMCw3ICszMCw3IEBAIGVudW0gVGV4dFRyYWNrS2luZCB7
ICJzdWJ0aXRsZXMiLCAiY2FwdGlvbnMiLCAiZGVzY3JpcHRpb25zIiwgImNoYXB0ZXJzIiwgIm1l
dGFkCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAogICAgIEV4
cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1l
bnRSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgR2VuZXJhdGVBZGRPcGFxdWVS
b290LAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogICAgIEV4cG9zZWQ9V2luZG93CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAppbmRleCBmZjlhMTQ5OWNk
NTE2ODhjYThkYmMzMGYwMWRiNGI2YzYyYjk2ZGNjLi4yMjkyNjU3MzdhY2NjMGEzMGMyZDE3OThl
YTA4MWNlYmE0ZGM3ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIK
IAotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJh
Y2suaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiTG9h
ZGFibGVUZXh0VHJhY2suaCIKQEAgLTM5LDI3ICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tMaXN0KTsKIAotVGV4dFRy
YWNrTGlzdDo6VGV4dFRyYWNrTGlzdChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBUcmFja0xpc3RCYXNlKGVs
ZW1lbnQsIGNvbnRleHQpCitUZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKGNvbnRleHQsIFRyYWNr
TGlzdEJhc2U6OlRleHRUcmFja0xpc3QpCiB7CiB9CiAKIFRleHRUcmFja0xpc3Q6On5UZXh0VHJh
Y2tMaXN0KCkKIHsKLSAgICBjbGVhckVsZW1lbnQoKTsKLX0KLQotdm9pZCBUZXh0VHJhY2tMaXN0
OjpjbGVhckVsZW1lbnQoKQotewotICAgIFRyYWNrTGlzdEJhc2U6OmNsZWFyRWxlbWVudCgpOwot
ICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2VsZW1lbnRUcmFja3MpIHsKLSAgICAgICAgdHJhY2st
PnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgdHJhY2stPmNsZWFyQ2xpZW50KCk7
Ci0gICAgfQotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2FkZFRyYWNrVHJhY2tzKSB7Ci0gICAg
ICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7Ci0gICAgICAgIHRyYWNrLT5jbGVh
ckNsaWVudCgpOwotICAgIH0KIH0KIAogdW5zaWduZWQgVGV4dFRyYWNrTGlzdDo6bGVuZ3RoKCkg
Y29uc3QKQEAgLTIwMyw4ICsxODgsOCBAQCB2b2lkIFRleHRUcmFja0xpc3Q6OmFwcGVuZChSZWY8
VGV4dFRyYWNrPiYmIHRyYWNrKQogCiAgICAgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJh
Y2sodHJhY2spOwogCi0gICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2st
Pm1lZGlhRWxlbWVudCgpID09IG1lZGlhRWxlbWVudCgpKTsKLSAgICB0cmFjay0+c2V0TWVkaWFF
bGVtZW50KG1lZGlhRWxlbWVudCgpKTsKKyAgICBpZiAoIXRyYWNrLT50cmFja0xpc3QoKSkKKyAg
ICAgICAgdHJhY2stPnNldFRyYWNrTGlzdCgqdGhpcyk7CiAKICAgICBzY2hlZHVsZUFkZFRyYWNr
RXZlbnQoV1RGTW92ZSh0cmFjaykpOwogfQpAQCAtMjMzLDggKzIxOCw4IEBAIHZvaWQgVGV4dFRy
YWNrTGlzdDo6cmVtb3ZlKFRyYWNrQmFzZSYgdHJhY2ssIGJvb2wgc2NoZWR1bGVFdmVudCkKIAog
ICAgIGludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKHRleHRUcmFjayk7CiAKLSAgICBB
U1NFUlQoIXRyYWNrLm1lZGlhRWxlbWVudCgpIHx8ICFlbGVtZW50KCkgfHwgdHJhY2subWVkaWFF
bGVtZW50KCkgPT0gZWxlbWVudCgpKTsKLSAgICB0cmFjay5zZXRNZWRpYUVsZW1lbnQobnVsbHB0
cik7CisgICAgaWYgKHRyYWNrLnRyYWNrTGlzdCgpID09IHRoaXMpCisgICAgICAgIHRyYWNrLmNs
ZWFyVHJhY2tMaXN0KCk7CiAKICAgICBSZWY8VHJhY2tCYXNlPiB0cmFja1JlZiA9ICooKnRyYWNr
cylbaW5kZXhdOwogICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggY2QyZmY3YmQwZTZmNWQzMmVkOWEwY2NhMjU1
YWQ0OGFkNmJjNTg5OS4uNzAyMWVkMzY4YTU1OGE4MGRmNDAwMGUzY2FlYmJiZmJkMzVhM2JlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCisj
aW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2
LDE2ICszNywxNCBAQCBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJhY2tMaXN0IGZpbmFs
IDogcHVibGljIFRyYWNrTGlzdEJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4
dFRyYWNrTGlzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0VHJhY2tMaXN0PiBjcmVh
dGUoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrTGlzdD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBhdXRvIGxpc3QgPSBh
ZG9wdFJlZigqbmV3IFRleHRUcmFja0xpc3QoZWxlbWVudCwgY29udGV4dCkpOworICAgICAgICBh
dXRvIGxpc3QgPSBhZG9wdFJlZigqbmV3IFRleHRUcmFja0xpc3QoY29udGV4dCkpOwogICAgICAg
ICBsaXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQog
ICAgIHZpcnR1YWwgflRleHRUcmFja0xpc3QoKTsKIAotICAgIHZvaWQgY2xlYXJFbGVtZW50KCkg
b3ZlcnJpZGU7Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZTsKICAgICBp
bnQgZ2V0VHJhY2tJbmRleChUZXh0VHJhY2smKTsKICAgICBpbnQgZ2V0VHJhY2tJbmRleFJlbGF0
aXZlVG9SZW5kZXJlZFRyYWNrcyhUZXh0VHJhY2smKTsKQEAgLTU4LDE5ICs1NywyNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmQoUmVmPFRleHRUcmFjaz4mJik7CiAgICAgdm9pZCByZW1vdmUo
VHJhY2tCYXNlJiwgYm9vbCBzY2hlZHVsZUV2ZW50ID0gdHJ1ZSkgb3ZlcnJpZGU7CiAKKyAgICB2
b2lkIHNldER1cmF0aW9uKE1lZGlhVGltZSBkdXJhdGlvbikgeyBtX2R1cmF0aW9uID0gZHVyYXRp
b247IH0KKyAgICBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
dXJhdGlvbjsgfQorCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IFRleHRUcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworICAgIFRleHRUcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAogICAg
IHZvaWQgaW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrJik7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+IG1fYWRkVHJhY2tUcmFja3M7CiAgICAgVmVjdG9y
PFJlZlB0cjxUcmFja0Jhc2U+PiBtX2VsZW1lbnRUcmFja3M7CisgICAgTWVkaWFUaW1lIG1fZHVy
YXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQkVHSU4oV2ViQ29yZTo6VGV4dFRyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVybiB0cmFj
a0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRleHRUcmFja0xpc3Q7IH0K
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShWSURFTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCmluZGV4IGRmOWNi
ZTEzMGJjYTczYmE2NDBmOTc4YzkxZWYxNDQ0YzIxMTFlN2EuLjgyYmM5MjcyOGU0ZjUwOWY0YzUy
NGI5M2RiMTYwNjcxMDQ4OGU1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIEFjdGl2ZURPTU9iamVjdCwK
ICAgICBDb25kaXRpb25hbD1WSURFTywKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVt
ZW50Um9vdCwKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgIEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgVGV4dFRyYWNrTGlzdCA6IEV2
ZW50VGFyZ2V0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAppbmRleCBl
OGY5NWY5MzMxMDNhZDg0MmFkODI3MTMzNjJmMzUxZjZkZDg3NzNkLi5iZGM4OGFiNTA0NmU5MWNm
ZGMxMzE0NDE5NzM5MDQ1ZDA2ODBkMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0Jhc2UuY3BwCkBAIC0yNywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiVHJhY2tMaXN0QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShWSURFTykK
IAotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgaW50IHNfdW5pcXVlSWQgPSAwOwpAQCAtNDgsOCArNDgsOSBAQCBzdGF0aWMgUmVm
UHRyPExvZ2dlcj4mIG51bGxMb2dnZXIoKQogfQogI2VuZGlmCiAKLVRyYWNrQmFzZTo6VHJhY2tC
YXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxh
YmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IG1fdW5pcXVlSWQoKytzX3Vu
aXF1ZUlkKQorVHJhY2tCYXNlOjpUcmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYg
bGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQorICAgIDogQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIoY29udGV4dCkKKyAgICAsIG1fdW5pcXVlSWQoKytzX3VuaXF1ZUlkKQogICAg
ICwgbV9pZChpZCkKICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1
YWdlKQpAQCAtNzAsMjEgKzcxLDI2IEBAIFRyYWNrQmFzZTo6VHJhY2tCYXNlKFR5cGUgdHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjCiAjZW5kaWYK
IH0KIAotRWxlbWVudCogVHJhY2tCYXNlOjplbGVtZW50KCkKK3ZvaWQgVHJhY2tCYXNlOjpzZXRU
cmFja0xpc3QoVHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KQogewotICAgIHJldHVybiBtX21lZGlh
RWxlbWVudC5nZXQoKTsKKyAgICBtX3RyYWNrTGlzdCA9IG1ha2VXZWFrUHRyKHRyYWNrTGlzdCk7
CiB9CiAKLXZvaWQqIFRyYWNrQmFzZTo6b3BhcXVlUm9vdCgpCit2b2lkIFRyYWNrQmFzZTo6Y2xl
YXJUcmFja0xpc3QoKQogewotICAgIGlmIChhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIGFzc29jaWF0ZWRFbGVtZW50LT5vcGFxdWVSb290KCk7Ci0g
ICAgcmV0dXJuIHRoaXM7CisgICAgbV90cmFja0xpc3QgPSBudWxscHRyOworfQorCitUcmFja0xp
c3RCYXNlKiBUcmFja0Jhc2U6OnRyYWNrTGlzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJh
Y2tMaXN0LmdldCgpOwogfQogCi12b2lkIFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50KFdlYWtQ
dHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCkKK3ZvaWQqIFRyYWNrQmFzZTo6b3BhcXVlUm9v
dCgpCiB7Ci0gICAgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50OworICAgIGlmIChhdXRvIHRyYWNr
TGlzdCA9IHRoaXMtPnRyYWNrTGlzdCgpKQorICAgICAgICByZXR1cm4gdHJhY2tMaXN0LT5vcGFx
dWVSb290KCk7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIC8vIFNlZTogaHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL2JjcDQ3I3NlY3Rpb24tMi4xCkBAIC0xNDgsOCArMTU0LDggQEAgdm9pZCBU
cmFja0Jhc2U6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiAgICAg
bV92YWxpZEJDUDQ3TGFuZ3VhZ2UgPSBlbXB0eUF0b20oKTsKIAotICAgIGF1dG8gZWxlbWVudCA9
IHRoaXMtPmVsZW1lbnQoKTsKLSAgICBpZiAoIWVsZW1lbnQpCisgICAgYXV0byBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CkBAIC0xNTgsNyArMTY0LDcgQEAgdm9pZCBUcmFj
a0Jhc2U6OnNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogICAgIGVsc2UK
ICAgICAgICAgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBsYW5ndWFnZSAnIiwgbGFuZ3VhZ2Us
ICInIGlzIG5vdCBhIHZhbGlkIEJDUCA0NyBsYW5ndWFnZSB0YWcuIik7CiAKLSAgICBlbGVtZW50
LT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKTsKKyAgICBjb250ZXh0LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
bWVzc2FnZSk7CiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE3NCw4ICsxODAs
OCBAQCBXVEZMb2dDaGFubmVsJiBUcmFja0Jhc2U6OmxvZ0NoYW5uZWwoKSBjb25zdAogfQogI2Vu
ZGlmCiAKLU1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZShUeXBlIHR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYg
bGFuZ3VhZ2UpCi0gICAgOiBUcmFja0Jhc2UodHlwZSwgaWQsIGxhYmVsLCBsYW5ndWFnZSkKK01l
ZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBs
YWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCisgICAgOiBUcmFja0Jhc2UoY29udGV4
dCwgdHlwZSwgaWQsIGxhYmVsLCBsYW5ndWFnZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tCYXNlLmgKaW5kZXggYWY0NTQ0MWQ5Mzc5NDA5NTRjNTZiNjljNWExYWNmYjQxYjVh
MmUyMi4uZTNkYjQ0M2RjOWEzYjg4NjdiYjBhMGNkNzUxMTRlMjZkZmVjM2RiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0yNywxOCArMjcsMTkgQEAKIAogI2lmIEVO
QUJMRShWSURFTykKIAorI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAj
aW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgU291cmNlQnVm
ZmVyOworY2xhc3MgVHJhY2tMaXN0QmFzZTsKIAogY2xhc3MgVHJhY2tCYXNlCiAgICAgOiBwdWJs
aWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+CisgICAgLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIHByaXZhdGUgTG9nZ2Vy
SGVscGVyCiAjZW5kaWYKQEAgLTQ5LDIyICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgZW51bSBUeXBl
IHsgQmFzZVRyYWNrLCBUZXh0VHJhY2ssIEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2sgfTsKICAgICBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIHZpcnR1YWwgRWxlbWVu
dCogZWxlbWVudCgpOwotICAgIHZvaWQqIG9wYXF1ZVJvb3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pOwotICAgIFdlYWtQdHI8
SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7
IH0KLQogICAgIHZpcnR1YWwgQXRvbVN0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIHsgbV9pZCA9IGlk
OyB9Ci0KICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQot
ICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxh
YmVsOyB9Ci0KICAgICBBdG9tU3RyaW5nIHZhbGlkQkNQNDdMYW5ndWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsaWRCQ1A0N0xhbmd1YWdlOyB9CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2Uo
Y29uc3QgQXRvbVN0cmluZyYpOwotCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgPSAw
OwogCiAgICAgdmlydHVhbCBpbnQgdW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1ZUlk
OyB9CiAKQEAgLTczLDYgKzYyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNvdXJjZUJ1ZmZl
cihTb3VyY2VCdWZmZXIqIGJ1ZmZlcikgeyBtX3NvdXJjZUJ1ZmZlciA9IGJ1ZmZlcjsgfQogI2Vu
ZGlmCiAKKyAgICB2b2lkIHNldFRyYWNrTGlzdChUcmFja0xpc3RCYXNlJik7CisgICAgdm9pZCBj
bGVhclRyYWNrTGlzdCgpOworICAgIFRyYWNrTGlzdEJhc2UqIHRyYWNrTGlzdCgpIGNvbnN0Owor
ICAgIHZvaWQqIG9wYXF1ZVJvb3QoKTsKKwogICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29u
c3QgPSAwOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC04Myw5ICs3NywxMSBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFRyYWNrQmFzZShUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcm
IGxhbmd1YWdlKTsKKyAgICBUcmFja0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRv
bVN0cmluZyYgbGFuZ3VhZ2UpOwogCi0gICAgV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtX21l
ZGlhRWxlbWVudCB7IG51bGxwdHIgfTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SWQoY29uc3QgQXRv
bVN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldExhYmVsKGNv
bnN0IEF0b21TdHJpbmcmIGxhYmVsKSB7IG1fbGFiZWwgPSBsYWJlbDsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQogICAgIFNvdXJjZUJ1ZmZlciogbV9zb3VyY2VCdWZmZXIgeyBudWxscHRyIH07CkBA
IC0xMDIsNiArOTgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9n
Z2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKICNlbmRp
ZgorICAgIFdlYWtQdHI8VHJhY2tMaXN0QmFzZT4gbV90cmFja0xpc3Q7CiB9OwogCiBjbGFzcyBN
ZWRpYVRyYWNrQmFzZSA6IHB1YmxpYyBUcmFja0Jhc2UgewpAQCAtMTEwLDcgKzEwNyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9tU3RyaW5nJik7CiAKIHBy
b3RlY3RlZDoKLSAgICBNZWRpYVRyYWNrQmFzZShUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwg
Y29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKTsKKyAg
ICBNZWRpYVRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBs
YW5ndWFnZSk7CiAKICAgICB2b2lkIHNldEtpbmRJbnRlcm5hbChjb25zdCBBdG9tU3RyaW5nJik7
CiAKQEAgLTEyMCw2ICsxMTcsMTEgQEAgcHJpdmF0ZToKICAgICBBdG9tU3RyaW5nIG1fa2luZDsK
IH07CiAKK2lubGluZSB2b2lkKiByb290KFRyYWNrQmFzZSogdHJhY2spCit7CisgICAgcmV0dXJu
IHRyYWNrLT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcAppbmRleCAw
MTNhMjNjOTgxYmFlOWEwOTRlMDM3ZmNhMDI2NDkxNDQ4MTUzNDliLi4wZjA1MzUzMzdmZmZlMWJl
NjAzNWExN2JiMzYyMWM4NGMxNjk0NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJUcmFja0xpc3RC
YXNlLmgiCiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJU
cmFja0V2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTM5LDM3
ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChUcmFja0xpc3RCYXNlKTsKIAotVHJhY2tMaXN0QmFzZTo6VHJhY2tMaXN0QmFzZShXZWFr
UHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCitUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFR5cGUgdHlwZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQot
ICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBBU1NF
UlQoIWNvbnRleHQgfHwgaXM8RG9jdW1lbnQ+KGNvbnRleHQpKTsKIH0KIAogVHJhY2tMaXN0QmFz
ZTo6flRyYWNrTGlzdEJhc2UoKQogewotICAgIGNsZWFyRWxlbWVudCgpOwogfQogCi12b2lkIFRy
YWNrTGlzdEJhc2U6OmNsZWFyRWxlbWVudCgpCit2b2lkKiBUcmFja0xpc3RCYXNlOjpvcGFxdWVS
b290KCkKIHsKLSAgICBtX2VsZW1lbnQgPSBudWxscHRyOwotICAgIGZvciAoYXV0byYgdHJhY2sg
OiBtX2luYmFuZFRyYWNrcykgewotICAgICAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG51bGxw
dHIpOwotICAgICAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKLSAgICB9Ci19Ci0KLUVsZW1lbnQq
IFRyYWNrTGlzdEJhc2U6OmVsZW1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2VsZW1lbnQu
Z2V0KCk7Ci19Ci0KLXZvaWQqIFRyYWNrTGlzdEJhc2U6Om9wYXF1ZVJvb3QoKSBjb25zdAotewot
ICAgIGlmIChhdXRvKiBhc3NvY2lhdGVkRWxlbWVudCA9IGVsZW1lbnQoKSkKLSAgICAgICAgcmV0
dXJuIGFzc29jaWF0ZWRFbGVtZW50LT5vcGFxdWVSb290KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgaWYgKGF1dG8qIHJvb3RPYnNlcnZlciA9IG1fb3BhcXVlUm9vdE9ic2VydmVyLmdldCgp
KQorICAgICAgICByZXR1cm4gKCpyb290T2JzZXJ2ZXIpKCk7CisgICAgcmV0dXJuIHRoaXM7CiB9
CiAKIHVuc2lnbmVkIFRyYWNrTGlzdEJhc2U6Omxlbmd0aCgpIGNvbnN0CkBAIC04MywxMCArNjYs
OCBAQCB2b2lkIFRyYWNrTGlzdEJhc2U6OnJlbW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNj
aGVkdWxlRXZlbnQpCiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAodHJhY2subWVkaWFFbGVtZW50KCkpIHsKLSAgICAgICAgQVNTRVJUKHRyYWNr
Lm1lZGlhRWxlbWVudCgpID09IG1fZWxlbWVudCk7Ci0gICAgICAgIHRyYWNrLnNldE1lZGlhRWxl
bWVudChudWxscHRyKTsKLSAgICB9CisgICAgaWYgKHRyYWNrLnRyYWNrTGlzdCgpID09IHRoaXMp
CisgICAgICAgIHRyYWNrLmNsZWFyVHJhY2tMaXN0KCk7CiAKICAgICBSZWY8VHJhY2tCYXNlPiB0
cmFja1JlZiA9ICptX2luYmFuZFRyYWNrc1tpbmRleF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggZmEwMGY4NjBmYmY5MDhkM2QyMDc3ZTFkMmRiODYy
OWIyMGE0MmQ5OS4uOWQzZTY4MWU3ZGU0YTYxOTRiNjg2NzBmNTRkZjU1ZTYyMmJiOWUyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKQEAgLTI5LDE0ICsyOSwx
MyBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBF
bGVtZW50OwogY2xhc3MgVHJhY2tCYXNlOwogCiBjbGFzcyBUcmFja0xpc3RCYXNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVE
YXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKQEAgLTQ0LDYgKzQzLDkgQEAgY2xhc3MgVHJh
Y2tMaXN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrTGlzdEJhc2U+LCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW4KIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UcmFja0xpc3RCYXNlKCk7CiAK
KyAgICBlbnVtIFR5cGUgeyBCYXNlVHJhY2tMaXN0LCBUZXh0VHJhY2tMaXN0LCBBdWRpb1RyYWNr
TGlzdCwgVmlkZW9UcmFja0xpc3QgfTsKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKwogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmUoVHJhY2tCYXNlJiwgYm9vbCBzY2hlZHVsZUV2ZW50ID0gdHJ1ZSk7CkBAIC01NCwxMCAr
NTYsMTAgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT46OmRl
cmVmOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFbGVtZW50KCk7
Ci0gICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0OwotICAgIHZvaWQqIG9wYXF1ZVJvb3QoKSBj
b25zdDsKLSAgICBXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1lZGlhRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIHZvaWQqIG9wYXF1ZVJvb3QoKTsKKworICAgIHVz
aW5nIE9wYXF1ZVJvb3RPYnNlcnZlciA9IFdURjo6T2JzZXJ2ZXI8dm9pZCooKT47CisgICAgdm9p
ZCBzZXRPcGFxdWVSb290T2JzZXJ2ZXIoY29uc3QgT3BhcXVlUm9vdE9ic2VydmVyJiBvYnNlcnZl
cikgeyBtX29wYXF1ZVJvb3RPYnNlcnZlciA9IG1ha2VXZWFrUHRyKG9ic2VydmVyKTsgfTsKIAog
ICAgIC8vIE5lZWRzIHRvIGJlIHB1YmxpYyBzbyB0cmFja3MgY2FuIGNhbGwgaXQKICAgICB2b2lk
IHNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKQEAgLTY2LDcgKzY4LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNBbnlUcmFja0VuYWJsZWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFRyYWNrTGlz
dEJhc2UoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworICAgIFRyYWNrTGlzdEJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUpOwogCiAg
ICAgdm9pZCBzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUmVmPFRyYWNrQmFzZT4mJik7CiAgICAgdm9p
ZCBzY2hlZHVsZVJlbW92ZVRyYWNrRXZlbnQoUmVmPFRyYWNrQmFzZT4mJik7CkBAIC04MCwxMCAr
ODIsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYo
KTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0g
ICAgV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgVHlwZSBtX3R5cGU7
CisgICAgV2Vha1B0cjxPcGFxdWVSb290T2JzZXJ2ZXI+IG1fb3BhcXVlUm9vdE9ic2VydmVyOwog
ICAgIGJvb2wgbV9pc0NoYW5nZUV2ZW50U2NoZWR1bGVkIHsgZmFsc2UgfTsKIH07CiAKK2lubGlu
ZSB2b2lkKiByb290KFRyYWNrTGlzdEJhc2UqIHRyYWNrTGlzdCkKK3sKKyAgICByZXR1cm4gdHJh
Y2tMaXN0LT5vcGFxdWVSb290KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVmlkZW9UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2su
Y3BwCmluZGV4IGVkNzU1YTI4MGVmM2Y4M2FhOTE2ZTIxOWMxMjFiMGQ3YWI0OWIzYzYuLjk3ZjAx
YWNjNjU5YTBkYzBlNTFkMGVlMThkMDM2NDAzNjE5YWNmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WaWRlb1RyYWNrLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaWYgRU5BQkxFKFZJ
REVPKQogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlZpZGVvVHJh
Y2tMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTgwLDkgKzc5
LDggQEAgY29uc3QgQXRvbVN0cmluZyYgVmlkZW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQog
ICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1WaWRlb1RyYWNrOjpWaWRlb1RyYWNrKFZpZGVv
VHJhY2tDbGllbnQmIGNsaWVudCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAg
ICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNrLCB0cmFja1ByaXZh
dGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQot
ICAgICwgbV9jbGllbnQoJmNsaWVudCkKK1ZpZGVvVHJhY2s6OlZpZGVvVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
KyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpWaWRlb1RyYWNr
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKICAgICAsIG1fc2VsZWN0
ZWQodHJhY2tQcml2YXRlLnNlbGVjdGVkKCkpCiB7CkBAIC0xMzAsOCArMTI4LDIxIEBAIHZvaWQg
VmlkZW9UcmFjazo6c2V0U2VsZWN0ZWQoY29uc3QgYm9vbCBzZWxlY3RlZCkKICAgICBtX3NlbGVj
dGVkID0gc2VsZWN0ZWQ7CiAgICAgbV9wcml2YXRlLT5zZXRTZWxlY3RlZChzZWxlY3RlZCk7CiAK
LSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT52aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVu
dCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCgqdGhpcyk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6YWRkQ2xpZW50KFZpZGVvVHJhY2tDbGllbnQm
IGNsaWVudCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAg
ICBtX2NsaWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgVmlkZW9UcmFjazo6Y2xlYXJDbGll
bnQoVmlkZW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29u
dGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCiBzaXpl
X3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCkBAIC0xNDIsMTYgKzE1MywyNSBAQCBz
aXplX3QgVmlkZW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpCiB2b2lkIFZpZGVvVHJhY2s6OnNl
bGVjdGVkQ2hhbmdlZChib29sIHNlbGVjdGVkKQogewogICAgIHNldFNlbGVjdGVkKHNlbGVjdGVk
KTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAg
ICBjbGllbnQudmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVmlkZW9UcmFjazo6aWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGlkKQogewogICAg
IHNldElkKGlkKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkg
eworICAgICAgICBjbGllbnQudmlkZW9UcmFja0lkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9
CiAKIHZvaWQgVmlkZW9UcmFjazo6bGFiZWxDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhYmVs
KQogewogICAgIHNldExhYmVsKGxhYmVsKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10g
KGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlkZW9UcmFja0xhYmVsQ2hhbmdlZCgq
dGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6bGFuZ3VhZ2VDaGFuZ2VkKGNv
bnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQpAQCAtMTYxLDE0ICsxODEsMTEgQEAgdm9pZCBWaWRl
b1RyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZv
aWQgVmlkZW9UcmFjazo6d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJl
ZlB0cihtZWRpYUVsZW1lbnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICBy
ZXR1cm47Ci0gICAgZWxlbWVudC0+cmVtb3ZlVmlkZW9UcmFjaygqdGhpcyk7CisgICAgbV9jbGll
bnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LndpbGxS
ZW1vdmVWaWRlb1RyYWNrKCp0aGlzKTsKKyAgICB9KTsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCi0KIHZvaWQgVmlkZW9UcmFjazo6c2V0S2luZChjb25zdCBBdG9tU3RyaW5nJiBraW5k
KQogewogICAgIC8vIDEwLjEga2luZCwgb24gc2V0dGluZzoKQEAgLTE4MiwxMiArMTk5LDExIEBA
IHZvaWQgVmlkZW9UcmFjazo6c2V0S2luZChjb25zdCBBdG9tU3RyaW5nJiBraW5kKQogCiAgICAg
Ly8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFjayBpcyBub3Qg
bnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8vIGV2ZW50IG5h
bWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYgKG1fc291cmNl
QnVmZmVyKQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBl
dmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCByZWZlcmVuY2Vk
IGJ5CiAgICAgLy8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxl
bWVudC4KLSAgICBtZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQp
IHsKKyAgICAgICAgY2xpZW50LnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7
CiB9CiAKIHZvaWQgVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UpCkBAIC0xOTksNTQgKzIxNSw0NSBAQCB2b2lkIFZpZGVvVHJhY2s6OnNldExhbmd1YWdl
KGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogICAgIC8vIHNoYXJlZCBiZXR3ZWVuIGFsbCB0
cmFja3MgdGhhdCBzdXBwb3J0IHNldHRpbmcgbGFuZ3VhZ2UuCiAKICAgICAvLyAyLiBVcGRhdGUg
dGhpcyBhdHRyaWJ1dGUgdG8gdGhlIG5ldyB2YWx1ZS4KLSAgICBNZWRpYVRyYWNrQmFzZTo6c2V0
TGFuZ3VhZ2UobGFuZ3VhZ2UpOworICAgIFRyYWNrQmFzZTo6c2V0TGFuZ3VhZ2UobGFuZ3VhZ2Up
OwogCiAgICAgLy8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlciBhdHRyaWJ1dGUgb24gdGhpcyB0cmFj
ayBpcyBub3QgbnVsbCwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZQogICAgIC8v
IGV2ZW50IG5hbWVkIGNoYW5nZSBhdCBzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MuCi0gICAgaWYg
KG1fc291cmNlQnVmZmVyKQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dmlkZW9UcmFja3MoKS5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdCBy
ZWZlcmVuY2VkIGJ5CiAgICAgLy8gdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRN
TE1lZGlhRWxlbWVudC4KLSAgICBpZiAobWVkaWFFbGVtZW50KCkpCi0gICAgICAgIG1lZGlhRWxl
bWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBt
X2NsaWVudHMuZm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQudmlk
ZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7CiB9CiAKLSNlbmRpZgotCiB2
b2lkIFZpZGVvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAgc3dpdGNoICht
X3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkFsdGVybmF0
aXZlOgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3
b3JkKCkpOworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmFsdGVybmF0aXZlS2V5d29yZCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNhcHRpb25z
OgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkp
OworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNhcHRpb25zS2V5d29yZCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok1haW46Ci0gICAgICAgIHNl
dEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2lu
ZChWaWRlb1RyYWNrOjptYWluS2V5d29yZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
VmlkZW9UcmFja1ByaXZhdGU6OlNpZ246Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1Ry
YWNrOjpzaWduS2V5d29yZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzaWduS2V5
d29yZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OlN1
YnRpdGxlczoKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OnN1YnRpdGxlc0tl
eXdvcmQoKSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29yZCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6OkNvbW1lbnRh
cnk6Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29y
ZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVmlkZW9UcmFja1ByaXZhdGU6Ok5vbmU6Ci0gICAg
ICAgIHNldEtpbmRJbnRlcm5hbChlbXB0eVN0cmluZygpKTsKKyAgICAgICAgc2V0S2luZChlbXB0
eVN0cmluZygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAotdm9pZCBWaWRlb1RyYWNrOjpzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1M
TWVkaWFFbGVtZW50PiBlbGVtZW50KQotewotICAgIFRyYWNrQmFzZTo6c2V0TWVkaWFFbGVtZW50
KGVsZW1lbnQpOwotfQotCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiB2b2lkIFZpZGVvVHJh
Y2s6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRlbnRp
ZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgKaW5kZXggMTc5ZTcx
M2JjMzY2OWU1ZDQ0ODQxN2U0MmJlMjliYjEwYzM5MTg4OC4uZWY4NDg4ZTdiNTk4MWYxMzE3MjJi
ZmJkNjc2ZDZmNGIxNmRmNTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WaWRlb1RyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
LmgKQEAgLTMwLDIzICszMCwzMCBAQAogCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAjaW5jbHVk
ZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYURlc2NyaXB0aW9uOwogY2xhc3MgVmlk
ZW9UcmFjazsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0OwogCi1jbGFzcyBWaWRlb1RyYWNrQ2xpZW50
IHsKK2NsYXNzIFZpZGVvVHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VmlkZW9U
cmFja0NsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgflZpZGVvVHJhY2tDbGllbnQoKSA9
IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlk
ZW9UcmFjayYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0lkQ2hhbmdlZChWaWRl
b1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRl
b1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tMYWJlbENoYW5nZWQoVmlk
ZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2Vk
KFZpZGVvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hh
bmdlZChWaWRlb1RyYWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVWaWRlb1Ry
YWNrKFZpZGVvVHJhY2smKSB7IH0KIH07CiAKIGNsYXNzIFZpZGVvVHJhY2sgZmluYWwgOiBwdWJs
aWMgTWVkaWFUcmFja0Jhc2UsIHByaXZhdGUgVmlkZW9UcmFja1ByaXZhdGVDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8VmlkZW9UcmFjaz4gY3JlYXRlKFZpZGVvVHJhY2tDbGllbnQm
IGNsaWVudCwgVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICBzdGF0aWMgUmVm
PFZpZGVvVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWaWRl
b1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVmlkZW9UcmFjayhjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrKGNvbnRleHQsIHRyYWNrUHJpdmF0ZSkpOwogICAg
IH0KICAgICB2aXJ0dWFsIH5WaWRlb1RyYWNrKCk7CiAKQEAgLTYwLDI2ICs2NywyMyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CiAKLSAgICB2b2lkIGNsZWFy
Q2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICBWaWRlb1RyYWNrQ2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZvaWQgYWRkQ2xp
ZW50KFZpZGVvVHJhY2tDbGllbnQmKTsKKyAgICB2b2lkIGNsZWFyQ2xpZW50KFZpZGVvVHJhY2tD
bGllbnQmKTsKIAogICAgIHNpemVfdCBpbmJhbmRUcmFja0luZGV4KCk7CiAKLSNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQogICAgIHZvaWQgc2V0S2luZChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7Ci0jZW5kaWYK
IAogICAgIGNvbnN0IE1lZGlhRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAg
ICB2b2lkIHNldFByaXZhdGUoVmlkZW9UcmFja1ByaXZhdGUmKTsKLSAgICB2b2lkIHNldE1lZGlh
RWxlbWVudChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+KSBvdmVycmlkZTsKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2
b2lkKikgZmluYWw7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBWaWRlb1RyYWNrKFZpZGVvVHJh
Y2tDbGllbnQmLCBWaWRlb1RyYWNrUHJpdmF0ZSYpOworICAgIFZpZGVvVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFZpZGVvVHJhY2tQcml2YXRlJik7CiAKICAgICBib29sIGlzVmFsaWRL
aW5kKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKIApAQCAtMTAwLDcgKzEwNCw4IEBA
IHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIlZpZGVvVHJhY2siOyB9CiAjZW5kaWYKIAotICAgIFZpZGVvVHJhY2tDbGllbnQqIG1f
Y2xpZW50IHsgbnVsbHB0ciB9OworICAgIFdlYWtQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9U
cmFja0xpc3Q7CisgICAgV2Vha0hhc2hTZXQ8VmlkZW9UcmFja0NsaWVudD4gbV9jbGllbnRzOwog
ICAgIFJlZjxWaWRlb1RyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIGJvb2wgbV9zZWxlY3Rl
ZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5pZGwK
aW5kZXggNzQ3MjNkYmFkZDVlOWUzNzFjM2YyZDE2N2JiZDc1MTcyMTU1OGMwZC4uMmM2MGIyYjJl
NzA2NTMzODhkOWE0ZWNjMDAzOWEzMmYzNjYwYjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suaWRsCkBAIC0yNSw4ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25h
bD1WSURFTywKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwKLSAgICBH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZSwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgVmlkZW9UcmFjayB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNr
TGlzdC5jcHAKaW5kZXggODQ4NjU2NmQxOGM4NGU2ZjRhNjhhYWZiZThhM2MwNTgyNDc0ZDNiMC4u
N2E5MWE1OTFlYWFhOGYyMTQ2YzRlYjM5OTcyYjVhN2IzOTY5ZDFiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5jcHAKQEAgLTI5LDEzICsyOSwxMiBAQAog
CiAjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIKIAotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnQuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4g
ZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IFRyYWNrTGlz
dEJhc2UoZWxlbWVudCwgY29udGV4dCkKK1ZpZGVvVHJhY2tMaXN0OjpWaWRlb1RyYWNrTGlzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogVHJhY2tMaXN0QmFzZShjb250
ZXh0LCBUcmFja0xpc3RCYXNlOjpWaWRlb1RyYWNrTGlzdCkKIHsKIH0KIApAQCAtNTMsOCArNTIs
OCBAQCB2b2lkIFZpZGVvVHJhY2tMaXN0OjphcHBlbmQoUmVmPFZpZGVvVHJhY2s+JiYgdHJhY2sp
CiAgICAgfQogICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbnNlcnRpb25JbmRleCwgdHJhY2su
cHRyKCkpOwogCi0gICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1l
ZGlhRWxlbWVudCgpID09IG1lZGlhRWxlbWVudCgpKTsKLSAgICB0cmFjay0+c2V0TWVkaWFFbGVt
ZW50KG1lZGlhRWxlbWVudCgpKTsKKyAgICBpZiAoIXRyYWNrLT50cmFja0xpc3QoKSkKKyAgICAg
ICAgdHJhY2stPnNldFRyYWNrTGlzdCgqdGhpcyk7CiAKICAgICBzY2hlZHVsZUFkZFRyYWNrRXZl
bnQoV1RGTW92ZSh0cmFjaykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WaWRlb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5oCmluZGV4IDk2NjBkZjZmZTI5Nzc0ZGRkZjNiYzkzNmYzNDQxMjk0ZDhjMGRhYjMu
LjI1Y2VjYmZlYmJlNGMyYWFiZmMyNzdmMmQ2MDg0MTY4MmNlZjYwNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTM1LDkgKzM1LDkgQEAgY2xhc3Mg
VmlkZW9UcmFjazsKIAogY2xhc3MgVmlkZW9UcmFja0xpc3QgZmluYWwgOiBwdWJsaWMgVHJhY2tM
aXN0QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrTGlzdD4gY3JlYXRl
KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrTGlzdD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewotICAgICAgICBhdXRvIGxpc3QgPSBhZG9w
dFJlZigqbmV3IFZpZGVvVHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgICAgIGF1dG8g
bGlzdCA9IGFkb3B0UmVmKCpuZXcgVmlkZW9UcmFja0xpc3QoY29udGV4dCkpOwogICAgICAgICBs
aXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQpAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBWaWRlb1RyYWNr
TGlzdChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgVmlkZW9UcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgY29u
c3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogfTsKQEAgLTYyLDQg
KzYyLDggQEAgc3RhdGljX2Fzc2VydChzaXplb2YoVmlkZW9UcmFja0xpc3QpID09IHNpemVvZihU
cmFja0xpc3RCYXNlKSwgIiIpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VmlkZW9UcmFja0xpc3QpCisgICAgc3RhdGlj
IGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2UmIHRyYWNrTGlzdCkgeyBy
ZXR1cm4gdHJhY2tMaXN0LnR5cGUoKSA9PSBXZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpWaWRlb1Ry
YWNrTGlzdDsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRU5B
QkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0Lmlk
bAppbmRleCBhYjJiN2U2YzIzZWJlMGUzYjgwYjY3M2FiOTU5OGE0MTc4OGRlN2RiLi5hNmNjYzNj
NmRjOTg2ZDczZTAyMTMxZDViYTY2YWU0Mzc4NmIyZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmlkbApAQCAtMjYsNyArMjYsNyBAQAogWwogICAgIEFj
dGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1WSURFTywKLSAgICBHZW5lcmF0ZUlzUmVh
Y2hhYmxlPUltcGxFbGVtZW50Um9vdCwKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgIEdl
bmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgVmlk
ZW9UcmFja0xpc3QgOiBFdmVudFRhcmdldCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437650</attachid>
            <date>2021-09-08 11:30:55 -0700</date>
            <delta_ts>2021-09-09 09:50:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229924-20210908113054.patch</filename>
            <type>text/plain</type>
            <size>109977</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZmYmYxMThlMjE1ZDM3
M2M3ZTc5YzQ3YmY0ZjM4NDRiNjA3MjFkYi4uOTIxZTY2ZGZlMWU2ZjEyZmEzNDQyYTJiMzVkZGIx
ZDY1YTBkOGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAyMS0wOS0wNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBWaWRlbyxB
dWRpbyxUZXh0VHJhY2sgYW5kIFRyYWNrTGlzdHMgdG8gbm90IGRlcGVuZCBvbiBIVE1MTWVkaWFF
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjk5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
cmFja0Jhc2UgYW5kIGl0cyBkZXJpdmVkIGNsYXNzZXMgY3VycmVudGx5IGFyZSBvbmx5IGFibGUg
dG8gaGFuZGxlIGEgc2luZ2xlICJjbGllbnQiCisgICAgICAgIGF0IGEgdGltZSwgd2hpY2ggbWVh
bnMgYSBjb21wbGljYXRlZCByZS1zZW5kaW5nIG9mIG5vdGlmaWNhdGlvbnMgZnJvbSBvbmUgY2xp
ZW50IHRvCisgICAgICAgIHRoZSBuZXh0IHRvIGVuc3VyZSBldmVyeXRoaW5nIGZsb3dzIHRvIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LiBJbiBhZGRpdGlvbiB0byB0aGlzCisgICAgICAgIGNvbXBsaWNh
dGVkIGNsaWVudCBoZWlyYXJjaHksIFRyYWNrcyBhbmQgdGhlaXIgVHJhY2tMaXN0cyBiZWluZyB0
aWdodGx5IGJvdW5kIHRvIHRoZWlyCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgd2lsbCBtYWtl
IE1TRS1pbi1hLVdvcmtlciBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIGltcGxlbWVudC4KKworICAg
ICAgICBSZWZhY3RvciBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIHRvIGhh
dmUgbXVsdGlwbGUgY2xpZW50cywgdHJhY2tlZCBieQorICAgICAgICBhIFdlYWtIYXNoU2V0LiBS
ZW1vdmUgSFRNTE1lZGlhRWxlbWVudCBmcm9tIHRoYXQgY2xhc3MgaGVpcmFyY2h5LCBhbmQgcmVw
bGFjZSBpdCB3aXRoCisgICAgICAgIGEgV2Vha1B0ciB0byB0aGVpciBUcmFja0xpc3QgZm9yIG9w
YXF1ZVJvb3QgcHVycG9zZXMuCisKKyAgICAgICAgU2ltaWxhcmx5LCByZWZhY3RvciBBdWRpb1Ry
YWNrTGlzdCwgVmlkZW9UcmFja0xpc3QsIGFuZCBUZXh0VHJhY2tMaXN0IHRvIG5vdCByZXF1aXJl
CisgICAgICAgIGEgYmFja3BvaW50ZXIgdG8gSFRNTE1lZGlhRWxlbWVudCwgYW5kIHVzZSBhIFdl
YWtQdHI8dm9pZD4gaW5zdGVhZCwgYWxsb3dpbmcgZWl0aGVyCisgICAgICAgIFNvdXJjZUJ1ZmZl
ciBvciBIVE1MTWVkaWFFbGVtZW50IHRvIGJlIHRoZSBsaXN0J3Mgb3BhcXVlUm9vdC4KKworICAg
ICAgICBBIFRyYWNrQmFzZSBuZWVkZWQgYWNjZXNzIHRvIGEgSFRNTE1lZGlhRWxlbWVudCBvbmx5
IGZvciB0aGUgbmVjZXNzaXR5IG9mIG91dHB1dHRpbmcKKyAgICAgICAgYSB3YXJuaW5nIHRvIHRo
ZSBjb25zb2xlIHdoZW4gYSBsYW5ndWFnZSBlcnJvciBvY2N1cnJlZDsgaW5zdGVhZCwgbWFrZSBU
cmFja0Jhc2UgYQorICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgYW5kIHBhc3Mg
YSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIHRoZSBUcmFja0Jhc2UgKGFuZAorICAgICAgICBh
bGwgaXRzIGRlcml2ZWQgY2xhc3NlcykgaW4gdGhlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIEEg
VHJhY2tMaXN0QmFzZSBub3cgaGFzIGEgdHlwZSgpIG1ldGhvZCwgd2hpY2ggYWxsb3dzIGl0IHRv
IGJlIHNhZmVseSBjYXN0IHRvIEF1ZGlvVHJhY2ssCisgICAgICAgIFZpZGVvVHJhY2ssIGFuZCBU
ZXh0VHJhY2ssIHRocm91Z2ggdHlwZSB0cmFpdCBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICBU
ZXh0VHJhY2sgdXNlZCBIVE1MTWVkaWFFbGVtZW50IHRvIHJldHJpZXZlIGl0cyBUZXh0VHJhY2tM
aXN0IGZvciBjZXJ0YWluIG9wZXJhdGlvbnMsCisgICAgICAgIGFuZCBub3cgdGhhdCBlYWNoIFRy
YWNrQmFzZSBoYXMgYSBiYWNrcG9pbnRlciB0byBpdHMgVHJhY2tMaXN0LCB0aGlzIGlzIG5vIGxv
bmdlciBuZWNlc3NhcnkuCisKKyAgICAgICAgVGV4dFRyYWNrTGlzdCBub3cgaGFzIHNldER1cmF0
aW9uKCkvZHVyYXRpb24oKSBtZW1iZXIgZnVuY3Rpb25zLCBzbyB0aGF0IHdoZW4gVGV4dFRyYWNr
CisgICAgICAgIHJlY2VpdmVzIGEgY3VlIHdpdGggYW4gaW5kZWZpbml0ZSBkdXJhdGlvbiwgdGhh
dCBjdWUncyBlbmRUaW1lIGNhbiBiZSBjYWxjdWxhdGVkLgorCisgICAgICAgIFRoZSBBdWRpb1Ry
YWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrIElETHMgcHJldmlvdXNseSBzcGVjaWZpZWQg
R2VuZXJhdGVJc1JlYWNoYWJsZSwKKyAgICAgICAgd2l0aCBhIHBhcmFtZXRlciBvZiBJbXBsRWxl
bWVudFJvb3QsIHdoaWNoIHJlcXVpcmVkIGFuIGVsZW1lbnQoKSBtZXRob2Qgb24gZWFjaDsgbm93
CisgICAgICAgIHRoYXQgVHJhY2tCYXNlIGhhcyBhbiBvcGFxdWVSb290KCkgbWV0aG9kLCB0aGlz
IHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmF1ZGlv
VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnZpZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjp2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlcjo6YXVkaW9UcmFja0xhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdWRp
b1RyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrTGFiZWxDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYW5ndWFn
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFJlbW92
ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlQXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6ZW5zdXJlVGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnN1cmVWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L0hUTUxUcmFja0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFjazo6QXVkaW9UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1RyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjplbmFibGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrOjppZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
azo6bGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6OndpbGxSZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tJZENoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0tpbmRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tDbGllbnQ6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja0NsaWVudDo6YXVkaW9UcmFja0xhbmd1YWdl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrQ2xpZW50Ojp3aWxsUmVtb3Zl
QXVkaW9UcmFjayk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbDoKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tMaXN0OjpyZW1v
dmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlz
VHlwZSk6CisgICAgICAgICogaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5pZGw6CisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
YmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
RGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6Oklu
YmFuZEdlbmVyaWNUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnVwZGF0ZUN1ZUZyb21DdWVEYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OndpbGxSZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpJ
bmJhbmRXZWJWVFRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRy
YWNrLmg6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0
b21hdGljSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2s6On5UZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0ZXh0
VHJhY2tMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZUFsbEN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3VlRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6dHJhY2tJbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2s6OnRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRMYW5ndWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OnNldElkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFiZWxDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tBZGRDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp3aWxsUmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5pZGw6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpzZXRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpjbGVhclRy
YWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnRyYWNrTGlzdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tCYXNlOjpNZWRpYVRyYWNrQmFzZSk6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6aWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0Jhc2U6Omxhbmd1YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YWNrQmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNldElk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2V0TGFiZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6cm9vdCk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6flRyYWNrTGlzdEJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpyZW1vdmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFja0xpc3RCYXNlOjpzZXRPcGFxdWVSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OnJvb3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFjay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb1RyYWNrOjpWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
VHJhY2s6OnNldFNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjpzZWxlY3RlZENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFjazo6aWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2s6OmxhYmVsQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrOjp3aWxsUmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2s6OnNldEtpbmQpOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZpZGVvVHJh
Y2tJZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVudDo6dmlkZW9U
cmFja0tpbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tDbGllbnQ6OnZp
ZGVvVHJhY2tMYWJlbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0NsaWVu
dDo6dmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1Ry
YWNrQ2xpZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tDbGllbnQ6OndpbGxSZW1vdmVWaWRlb1RyYWNrKToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZpZGVvVHJhY2suaWRsOgorICAgICAgICAqIGh0bWwvdHJhY2svVmlkZW9UcmFja0xp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAg
ICogaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5pZGw6CiAyMDIxLTA4LTIzICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIERlLWZsYWtlIG1lZGlhIHBhaW50aW5n
IHRlc3RzIGJ5IGRlbGF5aW5nIHJlYWR5U3RhdGUgPj0gSEFWRV9DVVJSRU5UX0RBVEEgdW50aWwg
ZWxlbWVudCBpcyBhYmxlIHRvIHBhaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNjdhNjFiYzg0MWRkYmY5NDkxNzdj
YTFlZGU3MWVlYzA3ODkwN2JlNS4uZjQ1ODRmZjM1MjgyNTZjZTkwNzA1ODQ2YzgwZGE1ZWRlMDY0
NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcApAQCAtNzQsNiArNzQsNyBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZl
cihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KHNvdXJjZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICwgbV9wcml2YXRlKFdURk1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3Nv
dXJjZShzb3VyY2UpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihbdGhpc10geyByZXR1cm4g
b3BhcXVlUm9vdCgpOyB9KQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJj
ZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3Rh
cnQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNjMyLDIyICs2MzMsMjggQEAgdWludDY0
X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiAKIFZpZGVvVHJhY2tM
aXN0JiBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdmlkZW9UcmFj
a3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MgPSBWaWRlb1RyYWNrTGlzdDo6Y3JlYXRlKG1ha2VX
ZWFrUHRyKChpc1JlbW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkp
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsK
KyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2V0T3BhcXVlUm9vdE9i
c2VydmVyKG1fb3BhcXVlUm9vdFByb3ZpZGVyKTsKKyAgICB9CiAgICAgcmV0dXJuICptX3ZpZGVv
VHJhY2tzOwogfQogCiBBdWRpb1RyYWNrTGlzdCYgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrcygp
CiB7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVk
aW9UcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cigoaXNSZW1vdmVkKCkgPyBudWxscHRyIDog
bV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpKSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKSB7CisgICAgICAgIG1fYXVkaW9UcmFja3MgPSBBdWRpb1Ry
YWNrTGlzdDo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVk
aW9UcmFja3MtPnNldE9wYXF1ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7Cisg
ICAgfQogICAgIHJldHVybiAqbV9hdWRpb1RyYWNrczsKIH0KIAogVGV4dFRyYWNrTGlzdCYgU291
cmNlQnVmZmVyOjp0ZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAg
ICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRyKChpc1Jl
bW92ZWQoKSA/IG51bGxwdHIgOiBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCkpKSwgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykgeworICAgICAgICBtX3Rl
eHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVS
b290UHJvdmlkZXIpOworICAgIH0KICAgICByZXR1cm4gKm1fdGV4dFRyYWNrczsKIH0KIApAQCAt
Nzc5LDcgKzc4Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphCiAgICAgICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHN0ZXBzIDUuMi4xLTUuMi44LjEgYXMgcGVyIEVkaXRvcidzIERyYWZ0
IDA5IEphbnVhcnkgMjAxNSwgYW5kIHJlb3JkZXIgdGhpcwogICAgICAgICAgICAgLy8gNS4yLjEg
TGV0IG5ldyBhdWRpbyB0cmFjayBiZSBhIG5ldyBBdWRpb1RyYWNrIG9iamVjdC4KICAgICAgICAg
ICAgIC8vIDUuMi4yIEdlbmVyYXRlIGEgdW5pcXVlIElEIGFuZCBhc3NpZ24gaXQgdG8gdGhlIGlk
IHByb3BlcnR5IG9uIG5ldyB2aWRlbyB0cmFjay4KLSAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9U
cmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZSgqdGhpcywgKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2s6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICphdWRpb1RyYWNrSW5mby50cmFjayk7CisgICAgICAgICAg
ICBuZXdBdWRpb1RyYWNrLT5hZGRDbGllbnQoKnRoaXMpOwogICAgICAgICAgICAgbmV3QXVkaW9U
cmFjay0+c2V0U291cmNlQnVmZmVyKHRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjIuMyBJZiBh
dWRpb1RyYWNrcy5sZW5ndGggZXF1YWxzIDAsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CkBAIC04MDEsNyArODA5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAgICAgICAg
IC8vIDUuMi43IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgdHJ1c3RlZCBldmVudCBuYW1lZCBhZGR0
cmFjaywgdGhhdCBkb2VzIG5vdCBidWJibGUgYW5kIGlzCiAgICAgICAgICAgICAvLyBub3QgY2Fu
Y2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBB
dWRpb1RyYWNrTGlzdCBvYmplY3QKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1
ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3
QXVkaW9UcmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVu
dCgpLT5hZGRBdWRpb1RyYWNrKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAogICAgICAgICAg
ICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVj
KCkpOwogCkBAIC04MTQsNyArODIyLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemEKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3RlcHMgNS4zLjEtNS4zLjguMSBhcyBwZXIgRWRp
dG9yJ3MgRHJhZnQgMDkgSmFudWFyeSAyMDE1LCBhbmQgcmVvcmRlciB0aGlzCiAgICAgICAgICAg
ICAvLyA1LjMuMSBMZXQgbmV3IHZpZGVvIHRyYWNrIGJlIGEgbmV3IFZpZGVvVHJhY2sgb2JqZWN0
LgogICAgICAgICAgICAgLy8gNS4zLjIgR2VuZXJhdGUgYSB1bmlxdWUgSUQgYW5kIGFzc2lnbiBp
dCB0byB0aGUgaWQgcHJvcGVydHkgb24gbmV3IHZpZGVvIHRyYWNrLgotICAgICAgICAgICAgYXV0
byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6Y3JlYXRlKCp0aGlzLCAqdmlkZW9UcmFja0lu
Zm8udHJhY2spOworICAgICAgICAgICAgYXV0byBuZXdWaWRlb1RyYWNrID0gVmlkZW9UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnZpZGVvVHJhY2tJbmZvLnRyYWNrKTsK
KyAgICAgICAgICAgIG5ld1ZpZGVvVHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgICAgICAg
ICBuZXdWaWRlb1RyYWNrLT5zZXRTb3VyY2VCdWZmZXIodGhpcyk7CiAKICAgICAgICAgICAgIC8v
IDUuMy4zIElmIHZpZGVvVHJhY2tzLmxlbmd0aCBlcXVhbHMgMCwgdGhlbiBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKQEAgLTgzNiw3ICs4NDUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQog
ICAgICAgICAgICAgLy8gNS4zLjcgUXVldWUgYSB0YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50
IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAg
IC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFj
ZSwgYXQgdGhlIFZpZGVvVHJhY2tMaXN0IG9iamVjdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNl
ZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50Lgot
ICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygp
LmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+
bWVkaWFFbGVtZW50KCktPmFkZFZpZGVvVHJhY2sobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwog
CiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlw
dGlvbi0+Y29kZWMoKSk7CiAKQEAgLTg1MSw3ICs4NjAsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlh
bGl6YQogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdGVwcyA1LjQuMS01LjQuOC4x
IGFzIHBlciBFZGl0b3IncyBEcmFmdCAwOSBKYW51YXJ5IDIwMTUsIGFuZCByZW9yZGVyIHRoaXMK
ICAgICAgICAgICAgIC8vIDUuNC4xIExldCBuZXcgdGV4dCB0cmFjayBiZSBhIG5ldyBUZXh0VHJh
Y2sgb2JqZWN0IHdpdGggaXRzIHByb3BlcnRpZXMgcG9wdWxhdGVkIHdpdGggdGhlCiAgICAgICAg
ICAgICAvLyBhcHByb3ByaWF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBz
ZWdtZW50LgotICAgICAgICAgICAgYXV0byBuZXdUZXh0VHJhY2sgPSBJbmJhbmRUZXh0VHJhY2s6
OmNyZWF0ZShkb2N1bWVudCgpLCAqdGhpcywgdGV4dFRyYWNrUHJpdmF0ZSk7CisgICAgICAgICAg
ICBhdXRvIG5ld1RleHRUcmFjayA9IEluYmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCks
IHRleHRUcmFja1ByaXZhdGUpOworICAgICAgICAgICAgbmV3VGV4dFRyYWNrLT5hZGRDbGllbnQo
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyA1LjQuMiBJZiB0aGUgbW9kZSBwcm9wZXJ0eSBvbiBu
ZXcgdGV4dCB0cmFjayBlcXVhbHMgInNob3dpbmciIG9yICJoaWRkZW4iLCB0aGVuIHNldCBhY3Rp
dmUKICAgICAgICAgICAgIC8vIHRyYWNrIGZsYWcgdG8gdHJ1ZS4KQEAgLTg2OCw3ICs4NzgsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YQogICAgICAgICAgICAgLy8gNS40LjYgUXVldWUgYSB0
YXNrIHRvIGZpcmUgYSB0cnVzdGVkIGV2ZW50IG5hbWVkIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90
IGJ1YmJsZSBhbmQgaXMKICAgICAgICAgICAgIC8vIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1
c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBv
biB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1l
bnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+YWRkVGV4dFRyYWNrKG5ld1Rl
eHRUcmFjay5jb3B5UmVmKCkpOwogCiAgICAgICAgICAgICBtX3RleHRDb2RlY3MuYXBwZW5kKHRl
eHRUcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOwogCkBAIC0xMDIzLDkgKzEwMzMsMjQg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayYgdHJhY2spCiAKICAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250
YWlucyh0cmFjaykpCiAgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKK30KIAotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVs
ZW1lbnQoKS0+dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZCh0cmFjayk7Cit2b2lkIFNvdXJjZUJ1
ZmZlcjo6dmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQoreworICAgIGlm
IChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAg
ICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlcjo6dmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAg
ICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisg
ICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXI6OnZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2sp
Cit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJh
Y2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYg
dHJhY2spCkBAIC0xMDUwLDkgKzEwNzUsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJh
Y2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJiB0cmFjaykKIAogICAgIGlmIChtX2F1ZGlvVHJh
Y2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKICAgICAgICAgbV9hdWRpb1Ry
YWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQogCi0gICAgaWYgKCFpc1JlbW92ZWQoKSkK
LSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5hdWRpb1RyYWNrRW5hYmxlZENoYW5n
ZWQodHJhY2spOwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tLaW5kQ2hhbmdlZChBdWRp
b1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXI6OmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQo
QXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fYXVkaW9UcmFja3MgJiYgbV9hdWRpb1Ry
YWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjphdWRpb1RyYWNrTGFuZ3VhZ2VD
aGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1f
YXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2No
ZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKQEAgLTEwNzcsMzkgKzExMTcsMTggQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCiAKICAg
ICBpZiAobV90ZXh0VHJhY2tzICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQogICAg
ICAgICBtX3RleHRUcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKLQotICAgIGlmICghaXNS
ZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrTW9k
ZUNoYW5nZWQodHJhY2spOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3Vl
KFRleHRUcmFjayYgdHJhY2ssIFRleHRUcmFja0N1ZSYgY3VlKQotewotICAgIGlmICghaXNSZW1v
dmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4dFRyYWNrQWRkQ3Vl
KHRyYWNrLCBjdWUpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBjdWVMaXN0KQotewotICAg
IGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+dGV4
dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3VlTGlzdCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVyOjp0
ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRyYWNrQ3VlJiBjdWUpCi17
Ci0gICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayYgdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QmIGN1ZUxpc3QpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQo
VGV4dFRyYWNrJiB0cmFjaykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3Nv
dXJjZS0+bWVkaWFFbGVtZW50KCktPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZUxpc3Qp
OworICAgIGlmIChtX3RleHRUcmFja3MgJiYgbV90ZXh0VHJhY2tzLT5jb250YWlucyh0cmFjaykp
CisgICAgICAgIG1fdGV4dFRyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKK3Zv
aWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFj
aykKIHsKLSAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVt
ZW50KCktPnRleHRUcmFja0tpbmRDaGFuZ2VkKHRyYWNrKTsKKyAgICBpZiAobV90ZXh0VHJhY2tz
ICYmIG1fdGV4dFRyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3RleHRUcmFja3Mt
PnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikKQEAgLTExMTks
OCArMTEzOCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KQogewotICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlv
bkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc291cmNlLT5zZXREdXJhdGlvbkludGVybmFsKGR1cmF0aW9uKTsKKyAgICBp
ZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0
aW9uKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIaWdoZXN0
UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIHRpbWVzdGFtcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CmluZGV4IGVlY2QzMWJmYzVmNGJhMmYzZjY2MDgwN2RlYTYyNTE3Nzc1YmE3NmIuLjg4OGQyZDZl
OThkYWJmOTdkYWJlMWM5MWYyNDhiMTA4NWQ2OTJiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtNjksNiArNjksOSBAQCBj
bGFzcyBTb3VyY2VCdWZmZXIgZmluYWwKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNv
dXJjZUJ1ZmZlcik7CiBwdWJsaWM6CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IEV2ZW50VGFy
Z2V0OjpXZWFrVmFsdWVUeXBlOworICAgIHVzaW5nIEV2ZW50VGFyZ2V0Ojp3ZWFrUHRyRmFjdG9y
eTsKKwogICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7
CiAKQEAgLTEzNSw2ICsxMzgsOCBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hh
bm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyAgICB2b2lkKiBvcGFxdWVSb290KCkgeyBy
ZXR1cm4gdGhpczsgfQorCiBwcml2YXRlOgogICAgIFNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKIApAQCAtMTYxLDE1ICsxNjYsMjAgQEAgcHJp
dmF0ZToKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKICAgICB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7Ci0gICAgLy8gVmlkZW9UcmFja0NsaWVudAot
ICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCBhdWRpb1RyYWNrS2luZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZv
aWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCBh
dWRpb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKwogICAgIC8vIFRl
eHRUcmFja0NsaWVudAogICAgIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikg
ZmluYWw7CiAgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUo
VGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJh
Y2tMYW5ndWFnZUNoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisKKyAgICAvLyBWaWRlb1RyYWNr
Q2xpZW50CisgICAgdm9pZCB2aWRlb1RyYWNrS2luZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFs
OworICAgIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1RyYWNrJikgZmluYWw7Cisg
ICAgdm9pZCB2aWRlb1RyYWNrTGFuZ3VhZ2VDaGFuZ2VkKFZpZGVvVHJhY2smKSBmaW5hbDsKKyAg
ICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayYpIGZpbmFsOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQpAQCAtMjA5LDYgKzIxOSw4IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTb3Vy
Y2UqIG1fc291cmNlOwogICAgIEFwcGVuZE1vZGUgbV9tb2RlIHsgQXBwZW5kTW9kZTo6U2VnbWVu
dHMgfTsKIAorICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7
CisKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggOGY5OTBkYWYyYTRhNWZiZTRj
NDYxMTIwZDIwY2ZmOGJkMmVmODkyMy4uMDdkNDkyYzQwZjNjZmQ2M2MxN2NiZDZjMWRkZWMzZjAy
YTczNzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmlkbApAQCAtMzgsNiArMzgsNyBAQAogICAgIENvbmRpdGlvbmFsPU1FRElB
X1NPVVJDRSwKICAgICBFbmFibGVkQnlTZXR0aW5nPU1lZGlhU291cmNlLAogICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEdlbmVyYXRlQWRkT3BhcXVlUm9vdCwKICAgICBFeHBv
c2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgU291cmNlQnVmZmVyIDogRXZlbnRUYXJnZXQgewogICAg
IGF0dHJpYnV0ZSBBcHBlbmRNb2RlIG1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmgKaW5kZXggZWY3MmQ5YjdhYWJkYzk5ZTczMGZmZGVlODBlMTAxMzU5ZjBh
ZmQwZi4uZjA1OGM5OWQ5MzVjMWY3M2JhOWY1OTE4NWI1MTRhNzkwNGQ3NDU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaApAQCAtMzYsMTMgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUcmFja0Jhc2UmKTsKIAotaW5saW5lIHZvaWQqIHJv
b3QoVHJhY2tCYXNlKiB0cmFjaykKLXsKLSAgICBpZiAodHJhY2stPmVsZW1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHJvb3QodHJhY2stPmVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHRyYWNrOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiZTAxMmY5N2IwMDQ4OTQy
YTEwMGUzMjAzNGFhMGI3ZmQwYmM5ODllLi5hMTRmYWRmOGVhZTEzNTVmM2ViNjYwZGYwYjZhYjk3
NDVhOTUxNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTQ1MCw2ICs0NTAsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9zaG91bGRB
dWRpb1BsYXliYWNrUmVxdWlyZVVzZXJHZXN0dXJlKGRvY3VtZW50LnRvcERvY3VtZW50KCkuYXVk
aW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSAmJiAhcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkKICAgICAsIG1fc2hvdWxkVmlkZW9QbGF5YmFja1JlcXVpcmVVc2VyR2VzdHVy
ZShkb2N1bWVudC50b3BEb2N1bWVudCgpLnZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KCkgJiYgIXByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgLCBtX3ZvbHVtZUxv
Y2tlZChkZWZhdWx0Vm9sdW1lTG9ja2VkKCkpCisgICAgLCBtX29wYXF1ZVJvb3RQcm92aWRlcihb
dGhpc10geyByZXR1cm4gb3BhcXVlUm9vdCgpOyB9KQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgLCBtX3JlbW90ZShSZW1vdGVQbGF5YmFjazo6Y3JlYXRlKCp0aGlz
KSkKICNlbmRpZgpAQCAtNTQ0LDEzICs1NDUsNiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1l
ZGlhRWxlbWVudCgpCiAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlQ29u
ZmlndXJhdGlvbkNoYW5nZU9ic2VydmVyKCp0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKG1fYXVk
aW9UcmFja3MpCi0gICAgICAgIG1fYXVkaW9UcmFja3MtPmNsZWFyRWxlbWVudCgpOwotICAgIGlm
IChtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJFbGVtZW50KCk7Ci0g
ICAgaWYgKG1fdmlkZW9UcmFja3MpCi0gICAgICAgIG1fdmlkZW9UcmFja3MtPmNsZWFyRWxlbWVu
dCgpOwotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBpZiAoaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZEV2ZW50KSB8fCBtX3JlbW90ZS0+aGFzQXZhaWxhYmlsaXR5Q2FsbGJhY2tzKCkp
IHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGZh
bHNlOwpAQCAtMTg2OSw2ICsxODYzLDI5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9U
cmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9B
bmRWaWRlbygpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tLaW5kQ2hh
bmdlZChBdWRpb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1
ZGlvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNr
TGFiZWxDaGFuZ2VkKEF1ZGlvVHJhY2smIHRyYWNrKQoreworICAgIGlmIChtX2F1ZGlvVHJhY2tz
ICYmIG1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNr
cy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1
ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1f
YXVkaW9UcmFja3MgJiYgbV9hdWRpb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBt
X2F1ZGlvVHJhY2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6d2lsbFJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayYgdHJhY2spCit7CisgICAg
cmVtb3ZlQXVkaW9UcmFjayh0cmFjayk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJiB0cmFjaykKIHsKICAgICBib29sIHRyYWNrSXNM
b2FkZWQgPSB0cnVlOwpAQCAtMTg4NCw4ICsxOTAxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogICAgIH0KIAogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFkZGVkIHRyYWNrLCBjcmVhdGUgdGhlIGxpc3Qgb2YgdGV4
dCB0cmFja3MuCi0gICAgaWYgKCFtX3RleHRUcmFja3MpCi0gICAgICAgIG1fdGV4dFRyYWNrcyA9
IFRleHRUcmFja0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGVuc3VyZVRleHRUcmFja3MoKTsKIAog
ICAgIC8vIE1hcmsgdGhpcyB0cmFjayBhcyAiY29uZmlndXJlZCIgc28gY29uZmlndXJlVGV4dFRy
YWNrcyB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4uCiAgICAgdHJhY2suc2V0SGFzQmVlbkNv
bmZpZ3VyZWQodHJ1ZSk7CkBAIC0xOTA0LDYgKzE5MjAsMzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2smIHRyYWNrKQogI2VuZGlmCiB9CiAK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJiB0
cmFjaykKK3sKKyAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlv
bnMgJiYgdHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNr
Lm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCisgICAgICAgIHRyYWNrLnNldE1v
ZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworCisgICAgaWYgKG1fdGV4dFRyYWNrcyAmJiBt
X3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TGFiZWxDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRyYWNrcyAm
JiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTGFuZ3VhZ2VDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdGV4dFRy
YWNrcyAmJiBtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV90ZXh0VHJh
Y2tzLT5zY2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
d2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smIHRyYWNrKQoreworICAgIGlmICh0cmFjay50
cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OkluQmFuZCkKKyAgICAgICAgcmVtb3ZlVGV4dFRyYWNr
KHRyYWNrKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRD
aGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKQEAgLTE5MTEsMTAgKzE5NTQsMjcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sm
IHRyYWNrKQogICAgIGNoZWNrRm9yQXVkaW9BbmRWaWRlbygpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tLaW5kQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykK
IHsKLSAgICBpZiAodHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2sua2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRyYWNrLm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCi0gICAgICAgIHRyYWNrLnNldE1vZGUoVGV4
dFRyYWNrOjpNb2RlOjpIaWRkZW4pOworICAgIGlmIChtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAgICAgbV92aWRlb1RyYWNrcy0+c2NoZWR1bGVD
aGFuZ2VFdmVudCgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tMYWJl
bENoYW5nZWQoVmlkZW9UcmFjayYgdHJhY2spCit7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYg
bV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5z
Y2hlZHVsZUNoYW5nZUV2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICBpZiAobV92aWRl
b1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlk
ZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp3aWxsUmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrJiB0cmFjaykKK3sKKyAgICByZW1v
dmVWaWRlb1RyYWNrKHRyYWNrKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbkln
bm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKQpAQCAtNDA4NywxNSArNDE0NywxNCBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrUHJpdmF0ZSYgdHJhY2spCiAgICAgICAgIHNldEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0
YXRlKEF1dG9wbGF5RXZlbnRQbGF5YmFja1N0YXRlOjpQcmV2ZW50ZWRBdXRvcGxheSk7CiAgICAg
fQogCi0gICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoKnRoaXMsIHRyYWNrKSk7
CisgICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0cmFjaykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkVGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrKQogewogICAgIC8v
IDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKICAgICAvLyAxLiBBc3Nv
Y2lhdGUgdGhlIHJlbGV2YW50IGRhdGEgd2l0aCBhIG5ldyB0ZXh0IHRyYWNrIGFuZCBpdHMgY29y
cmVzcG9uZGluZyBuZXcgVGV4dFRyYWNrIG9iamVjdC4KLSAgICBhdXRvIHRleHRUcmFjayA9IElu
YmFuZFRleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50KCksICp0aGlzLCB0cmFjayk7Ci0gICAgdGV4
dFRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgIGF1dG8gdGV4
dFRyYWNrID0gSW5iYW5kVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQoKSwgdHJhY2spOwogCiAg
ICAgLy8gMi4gU2V0IHRoZSBuZXcgdGV4dCB0cmFjaydzIGtpbmQsIGxhYmVsLCBhbmQgbGFuZ3Vh
Z2UgYmFzZWQgb24gdGhlIHNlbWFudGljcyBvZiB0aGUgcmVsZXZhbnQgZGF0YSwKICAgICAvLyBh
cyBkZWZpbmVkIGJ5IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9uLiBJZiB0aGVyZSBpcyBubyBs
YWJlbCBpbiB0aGF0IGRhdGEsIHRoZW4gdGhlIGxhYmVsIG11c3QKQEAgLTQxMjUsNyArNDE4NCw4
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaykKIHsKLSAg
ICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSgqdGhpcywgdHJhY2spKTsKKyAgICBh
dXRvIHZpZGVvVHJhY2sgPSBWaWRlb1RyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0cmFjayk7CisgICAgYWRkVmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZFJlbW92ZUF1ZGlvVHJhY2so
QXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrKQpAQCAtNDE0OCw2ICs0MjA4LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFJlZjxBdWRpb1RyYWNrPiYmIHRyYWNrKQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xpZW50KCp0aGlzKTsKICAg
ICBlbnN1cmVBdWRpb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQx
NjUsNiArNDIyNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFJlZjxU
ZXh0VHJhY2s+JiYgdHJhY2spCiAgICAgICAgICAgICBtX2NhcHRpb25EaXNwbGF5TW9kZSA9IHBh
Z2UtPmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuY2FwdGlvbkRpc3BsYXlNb2Rl
KCk7CiAgICAgfQogCisgICAgdHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAgZW5zdXJlVGV4
dFRyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKQEAgLTQxNzMsMjggKzQyMzUs
MzYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFJlZjxWaWRlb1RyYWNr
PiYmIHRyYWNrKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHRyYWNrLT5zZXRMb2dn
ZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKKyAgICB0cmFjay0+YWRkQ2xp
ZW50KCp0aGlzKTsKICAgICBlbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChXVEZNb3ZlKHRyYWNr
KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhSZWY8QXVk
aW9UcmFjaz4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKKyAgICBpZiAo
IW1fYXVkaW9UcmFja3MgfHwgIW1fYXVkaW9UcmFja3MtPmNvbnRhaW5zKHRyYWNrKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIHRyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7CiAgICAgbV9hdWRpb1Ry
YWNrcy0+cmVtb3ZlKHRyYWNrLmdldCgpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpy
ZW1vdmVUZXh0VHJhY2soUmVmPFRleHRUcmFjaz4mJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2ZW50
KQogeworICAgIGlmICghbV90ZXh0VHJhY2tzIHx8ICFtX3RleHRUcmFja3MtPmNvbnRhaW5zKHRy
YWNrKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2Nv
cGUgeyAqdGhpcyB9OwogICAgIGlmIChhdXRvIGN1ZXMgPSBtYWtlUmVmUHRyKHRyYWNrLT5jdWVz
KCkpKQogICAgICAgICB0ZXh0VHJhY2tSZW1vdmVDdWVzKHRyYWNrLCAqY3Vlcyk7Ci0gICAgdHJh
Y2stPmNsZWFyQ2xpZW50KCk7CisgICAgdHJhY2stPmNsZWFyQ2xpZW50KCp0aGlzKTsKICAgICBp
ZiAobV90ZXh0VHJhY2tzKQogICAgICAgICBtX3RleHRUcmFja3MtPnJlbW92ZSh0cmFjaywgc2No
ZWR1bGVFdmVudCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVmlkZW9UcmFj
ayhSZWY8VmlkZW9UcmFjaz4mJiB0cmFjaykKIHsKLSAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsK
KyAgICBpZiAoIW1fdmlkZW9UcmFja3MgfHwgIW1fdmlkZW9UcmFja3MtPmNvbnRhaW5zKHRyYWNr
KSkKKyAgICAgICAgcmV0dXJuOworICAgIHRyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7CiAgICAg
bV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKIH0KIApAQCAtNDIzMSw3ICs0MzAxLDcgQEAg
RXhjZXB0aW9uT3I8VGV4dFRyYWNrJj4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QKIAogICAgIC8vIDUuIENyZWF0ZSBhIG5ldyB0ZXh0IHRy
YWNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5ldyBvYmplY3QsIGFuZCBzZXQgaXRzIHRleHQgdHJh
Y2sga2luZCB0byBraW5kLCBpdHMgdGV4dAogICAgIC8vIHRyYWNrIGxhYmVsIHRvIGxhYmVsLCBp
dHMgdGV4dCB0cmFjayBsYW5ndWFnZSB0byBsYW5ndWFnZS4uLgotICAgIGF1dG8gdHJhY2sgPSBU
ZXh0VHJhY2s6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgdGhpcywga2luZCwgZW1wdHlTdHJpbmcoKSwg
bGFiZWwsIGxhbmd1YWdlKTsKKyAgICBhdXRvIHRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUoJmRv
Y3VtZW50KCksIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBsYW5ndWFnZSk7CiAgICAgYXV0
byYgdHJhY2tSZWZlcmVuY2UgPSB0cmFjay5nZXQoKTsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICB0cmFja1JlZmVyZW5jZS5zZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIo
KSk7CkBAIC00MjU0LDI0ICs0MzI0LDMxIEBAIEV4Y2VwdGlvbk9yPFRleHRUcmFjayY+IEhUTUxN
ZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0CiAKIEF1
ZGlvVHJhY2tMaXN0JiBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVBdWRpb1RyYWNrcygpCiB7Ci0g
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQotICAgICAgICBtX2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFj
a0xpc3Q6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghbV9hdWRpb1RyYWNrcykgeworICAgICAgICBt
X2F1ZGlvVHJhY2tzID0gQXVkaW9UcmFja0xpc3Q6OmNyZWF0ZShBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNldE9wYXF1
ZVJvb3RPYnNlcnZlcihtX29wYXF1ZVJvb3RQcm92aWRlcik7CisgICAgfQogCiAgICAgcmV0dXJu
ICptX2F1ZGlvVHJhY2tzOwogfQogCiBUZXh0VHJhY2tMaXN0JiBIVE1MTWVkaWFFbGVtZW50Ojpl
bnN1cmVUZXh0VHJhY2tzKCkKIHsKLSAgICBpZiAoIW1fdGV4dFRyYWNrcykKLSAgICAgICAgbV90
ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFtX3RleHRU
cmFja3MpIHsKKyAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV90ZXh0
VHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9vcGFxdWVSb290UHJvdmlkZXIpOworICAg
ICAgICBtX3RleHRUcmFja3MtPnNldER1cmF0aW9uKGR1cmF0aW9uTWVkaWFUaW1lKCkpOworICAg
IH0KIAogICAgIHJldHVybiAqbV90ZXh0VHJhY2tzOwogfQogCiBWaWRlb1RyYWNrTGlzdCYgSFRN
TE1lZGlhRWxlbWVudDo6ZW5zdXJlVmlkZW9UcmFja3MoKQogewotICAgIGlmICghbV92aWRlb1Ry
YWNrcykKLSAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZpZGVvVHJhY2tMaXN0OjpjcmVhdGUobWFr
ZVdlYWtQdHIodGhpcyksIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICBpZiAoIW1fdmlkZW9UcmFja3MpIHsKKyAgICAgICAgbV92aWRlb1RyYWNrcyA9IFZp
ZGVvVHJhY2tMaXN0OjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zZXRPcGFxdWVSb290T2JzZXJ2ZXIobV9v
cGFxdWVSb290UHJvdmlkZXIpOworICAgIH0KIAogICAgIHJldHVybiAqbV92aWRlb1RyYWNrczsK
IH0KQEAgLTUwNDcsNiArNTEyNCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJEdXJhdGlvbkNoYW5nZWQoKQogICAgIGlmIChub3cgPiBkdXIpCiAgICAgICAgIHNlZWtJbnRl
cm5hbChkdXIpOwogCisgICAgaWYgKG1fdGV4dFRyYWNrcykKKyAgICAgICAgbV90ZXh0VHJhY2tz
LT5zZXREdXJhdGlvbihkdXIpOworCiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJh
Y2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2ZTFj
OWY5ZDU2YjExZDE2MTZiZDY3MTFmOTc3ZWI1ZGZlMzEyYmY4Li4zMmVkY2NkODA5NDc1OGM4YzRi
NDI2NjJjY2Y3MWY0ZjRiMjY4ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGllbnQu
aCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVy
Lmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCkBAIC0zODMsMTcgKzM4
NCwyOCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CiAgICAgdm9pZCBhdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgYXVkaW9U
cmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIGF1ZGlvVHJhY2tM
YWJlbENoYW5nZWQoQXVkaW9UcmFjayYpIGZpbmFsOworICAgIHZvaWQgYXVkaW9UcmFja0xhbmd1
YWdlQ2hhbmdlZChBdWRpb1RyYWNrJikgZmluYWw7CisgICAgdm9pZCB3aWxsUmVtb3ZlQXVkaW9U
cmFjayhBdWRpb1RyYWNrJikgZmluYWw7CiAKICAgICAvLyBUZXh0VHJhY2tDbGllbnQKLSAgICB2
b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayYpIG92ZXJyaWRlOwotICAgIHZvaWQg
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXh0
VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRy
YWNrQ3VlTGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFj
ayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3Vl
KFRleHRUcmFjayYsIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dFRyYWNr
S2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hh
bmdlZChUZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0xhYmVsQ2hhbmdlZChU
ZXh0VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZChUZXh0
VHJhY2smKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrJiwgY29u
c3QgVGV4dFRyYWNrQ3VlTGlzdCYpIGZpbmFsOworICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3Vl
cyhUZXh0VHJhY2smLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JikgZmluYWw7CisgICAgdm9pZCB0
ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7CisgICAgdm9p
ZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgZmluYWw7Cisg
ICAgdm9pZCB3aWxsUmVtb3ZlVGV4dFRyYWNrKFRleHRUcmFjayYpIGZpbmFsOwogCiAgICAgLy8g
VmlkZW9UcmFja0NsaWVudAorICAgIHZvaWQgdmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJh
Y2smKSBmaW5hbDsKKyAgICB2b2lkIHZpZGVvVHJhY2tMYWJlbENoYW5nZWQoVmlkZW9UcmFjayYp
IGZpbmFsOworICAgIHZvaWQgdmlkZW9UcmFja0xhbmd1YWdlQ2hhbmdlZChWaWRlb1RyYWNrJikg
ZmluYWw7CiAgICAgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2smKSBm
aW5hbDsKKyAgICB2b2lkIHdpbGxSZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2smKSBmaW5hbDsK
IAogICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0OwogICAg
IHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24q
KTsKQEAgLTExNTcsNiArMTE2OSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEJsb2I+IG1fYmxv
YjsKICAgICBVUkwgbV9ibG9iVVJMRm9yUmVhZGluZzsKICAgICBNZWRpYVByb3ZpZGVyIG1fbWVk
aWFQcm92aWRlcjsKKyAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFByb3Zp
ZGVyOwogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgYm9vbCBtX2hh
c05lZWRrZXlMaXN0ZW5lciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcAppbmRleCBiODY1YzcyYTJkM2RjNDliZmU3YTZlNDE0MTc1NWQ4OWJmY2U5YTdk
Li4xYmYxOWFlY2Q3MWM1YzVlYWM2OGZmYWM2ZDMyYjk4N2ExMTUwZTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgSFRNTFRyYWNr
RWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQogewogICAgIGlmIChtX3RyYWNrKSB7CiAgICAg
ICAgIG1fdHJhY2stPmNsZWFyRWxlbWVudCgpOwotICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVu
dCgpOworICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgqdGhpcyk7CiAgICAgfQogfQogCkBA
IC0xNTIsNiArMTUyLDcgQEAgTG9hZGFibGVUZXh0VHJhY2smIEhUTUxUcmFja0VsZW1lbnQ6OnRy
YWNrKCkKICAgICAgICAgaWYgKCFUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChraW5kKSkK
ICAgICAgICAgICAgIGtpbmQgPSBUZXh0VHJhY2s6OnN1YnRpdGxlc0tleXdvcmQoKTsKICAgICAg
ICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUoKnRoaXMsIGtpbmQsIGxhYmVs
KCksIHNyY2xhbmcoKSk7CisgICAgICAgIG1fdHJhY2stPmFkZENsaWVudCgqdGhpcyk7CiAgICAg
fQogICAgIEFTU0VSVChtX3RyYWNrLT50cmFja0VsZW1lbnQoKSA9PSB0aGlzKTsKIApAQCAtMjk5
LDQ0ICszMDAsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTFRyYWNrRWxlbWVudDo6bWVkaWFF
bGVtZW50Q3Jvc3NPcmlnaW5BdHRyaWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBudWxsQXRvbSgp
OwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRU
cmFjayYgdHJhY2spCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCi0g
ICAgICAgIHBhcmVudC0+dGV4dFRyYWNrS2luZENoYW5nZWQodHJhY2spOwotfQotCi12b2lkIEhU
TUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYgdHJhY2spCit2
b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYpCiB7
CiAgICAgLy8gU2luY2Ugd2UndmUgbW92ZWQgdG8gYSBuZXcgcGFyZW50LCB3ZSBtYXkgbm93IGJl
IGFibGUgdG8gbG9hZC4KICAgICBpZiAocmVhZHlTdGF0ZSgpID09IEhUTUxUcmFja0VsZW1lbnQ6
Ok5PTkUpCiAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwotCi0gICAgaWYgKGF1dG8gcGFyZW50ID0g
bWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodHJh
Y2spOwotfQotCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRy
YWNrJiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgY3VlcykKLXsKLSAgICBpZiAoYXV0
byBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcGFyZW50LT50ZXh0VHJhY2tBZGRD
dWVzKHRyYWNrLCBjdWVzKTsKLX0KLSAgICAKLXZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRy
YWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2smIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0JiBj
dWVzKQotewotICAgIGlmIChhdXRvIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQotICAgICAgICBw
YXJlbnQtPnRleHRUcmFja1JlbW92ZUN1ZXModHJhY2ssIGN1ZXMpOwotfQotICAgIAotdm9pZCBI
VE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiB0cmFjaywgVGV4dFRy
YWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCi0g
ICAgICAgIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3VlKHRyYWNrLCBjdWUpOwotfQotICAgIAotdm9p
ZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrJiB0cmFjaywg
VGV4dFRyYWNrQ3VlJiBjdWUpCi17Ci0gICAgaWYgKGF1dG8gcGFyZW50ID0gbWVkaWFFbGVtZW50
KCkpCi0gICAgICAgIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRyYWNrLCBjdWUpOwogfQog
CiBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVudDo6bWVkaWFFbGVtZW50
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKaW5kZXggZjc4OTg5
OGQxZjdkZDcwZTM2NTcxOThhMjkxYzhkYjQyNzJhOGFjYy4uYjg2MmQ0OWE0YTkyYzMzNjczNTU4
OTFjYjY0Njg1ZTY4MDE1ZTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmgKQEAgLTg0LDExICs4NCw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBUZXh0VHJhY2tDbGllbnQK
ICAgICB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYpIGZpbmFsOwotICAgIHZv
aWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikgZmluYWw7Ci0gICAgdm9pZCB0ZXh0
VHJhY2tBZGRDdWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSBmaW5hbDsK
LSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayYsIFRl
eHRUcmFja0N1ZSYpIGZpbmFsOwotICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFj
ayYsIFRleHRUcmFja0N1ZSYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5Mb2FkVVJMKGNvbnN0IFVS
TCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcAppbmRleCBjYWI3
NzgyMWE5NDdjZDhlYzdhMjIwOTVmNzlhMjI2OTlmZDBjMzMzLi4zY2I3MThkM2RjMjdlNTgzYjVh
NWRmMTA5M2EwMzY1MjdjMDJlY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9U
cmFjay5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQXVkaW9UcmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAKICNpZiBF
TkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc1LDkgKzc1
LDggQEAgY29uc3QgQXRvbVN0cmluZyYgQXVkaW9UcmFjazo6Y29tbWVudGFyeUtleXdvcmQoKQog
ICAgIHJldHVybiBjb21tZW50YXJ5OwogfQogCi1BdWRpb1RyYWNrOjpBdWRpb1RyYWNrKEF1ZGlv
VHJhY2tDbGllbnQmIGNsaWVudCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKLSAg
ICA6IE1lZGlhVHJhY2tCYXNlKE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNrLCB0cmFja1ByaXZh
dGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpKQot
ICAgICwgbV9jbGllbnQoJmNsaWVudCkKK0F1ZGlvVHJhY2s6OkF1ZGlvVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
KyAgICA6IE1lZGlhVHJhY2tCYXNlKGNvbnRleHQsIE1lZGlhVHJhY2tCYXNlOjpBdWRpb1RyYWNr
LCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5s
YW5ndWFnZSgpKQogICAgICwgbV9wcml2YXRlKHRyYWNrUHJpdmF0ZSkKICAgICAsIG1fZW5hYmxl
ZCh0cmFja1ByaXZhdGUuZW5hYmxlZCgpKQogewpAQCAtMTA3LDYgKzEwNiwxNSBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnNldFByaXZhdGUoQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAg
ICBzZXRJZChtX3ByaXZhdGUtPmlkKCkpOwogfQogCit2b2lkIEF1ZGlvVHJhY2s6OnNldExhbmd1
YWdlKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQoreworICAgIFRyYWNrQmFzZTo6c2V0TGFu
Z3VhZ2UobGFuZ3VhZ2UpOworCisgICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGll
bnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoKnRoaXMpOwor
ICAgIH0pOworfQorCiBib29sIEF1ZGlvVHJhY2s6OmlzVmFsaWRLaW5kKGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZSA9PSBhbHRlcm5hdGl2ZUtleXdv
cmQoKQpAQCAtMTIzLDYgKzEzMSwyMSBAQCB2b2lkIEF1ZGlvVHJhY2s6OnNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ByaXZhdGUtPnNldEVuYWJsZWQo
ZW5hYmxlZCk7CisgICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsK
KyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZCgqdGhpcyk7CisgICAgfSk7
Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6YWRkQ2xpZW50KEF1ZGlvVHJhY2tDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2Ns
aWVudHMuYWRkKGNsaWVudCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6Y2xlYXJDbGllbnQoQXVk
aW9UcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMo
Y2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOwogfQogCiBzaXplX3QgQXVk
aW9UcmFjazo6aW5iYW5kVHJhY2tJbmRleCgpIGNvbnN0CkBAIC0xMzcsMTggKzE2MCwyNSBAQCB2
b2lkIEF1ZGlvVHJhY2s6OmVuYWJsZWRDaGFuZ2VkKGJvb2wgZW5hYmxlZCkKIAogICAgIG1fZW5h
YmxlZCA9IGVuYWJsZWQ7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5h
dWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoKnRoaXMpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0
aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC5hdWRpb1RyYWNrRW5hYmxlZENo
YW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6OmlkQ2hhbmdlZChj
b25zdCBBdG9tU3RyaW5nJiBpZCkKIHsKICAgICBzZXRJZChpZCk7CisgICAgbV9jbGllbnRzLmZv
ckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LmF1ZGlvVHJhY2tJ
ZENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6OmxhYmVsQ2hh
bmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKIHsKICAgICBzZXRMYWJlbChsYWJlbCk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xp
ZW50LmF1ZGlvVHJhY2tMYWJlbENoYW5nZWQoKnRoaXMpOworICAgIH0pOwogfQogCiB2b2lkIEF1
ZGlvVHJhY2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKQEAg
LTE1OCwxMSArMTg4LDkgQEAgdm9pZCBBdWRpb1RyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgQXVkaW9UcmFjazo6d2lsbFJlbW92ZSgpCiB7
Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihtZWRpYUVsZW1lbnQoKS5nZXQoKSk7Ci0g
ICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBlbGVtZW50LT5yZW1vdmVB
dWRpb1RyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNs
aWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92ZUF1ZGlvVHJhY2soKnRoaXMpOworICAg
IH0pOwogfQogCiB2b2lkIEF1ZGlvVHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCkBAIC0x
OTUsMTEgKzIyMyw2IEBAIHZvaWQgQXVkaW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkK
ICAgICB9CiB9CiAKLXZvaWQgQXVkaW9UcmFjazo6c2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8SFRN
TE1lZGlhRWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBUcmFja0Jhc2U6OnNldE1lZGlhRWxlbWVu
dChlbGVtZW50KTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBBdWRpb1Ry
YWNrOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5oCmluZGV4IDk5YTQ1
MzI4YzI5ZWEwYjJjNWVjZjQyN2YxN2E0NWMwNDQxN2ZkZjcuLjM3NTEwYThjZDJmOGY0MDE1MzU4
OTI1ZGY5OWRhZWM5OGYxOTYwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svQXVkaW9UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5oCkBAIC0zMCwyMiArMzAsMjkgQEAKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgi
CiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9UcmFjazsKK2NsYXNzIEF1ZGlvVHJh
Y2tMaXN0OwogCi1jbGFzcyBBdWRpb1RyYWNrQ2xpZW50IHsKK2NsYXNzIEF1ZGlvVHJhY2tDbGll
bnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXVkaW9UcmFja0NsaWVudD4gewogcHVibGljOgog
ICAgIHZpcnR1YWwgfkF1ZGlvVHJhY2tDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2
b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBhdWRpb1RyYWNrSWRDaGFuZ2VkKEF1ZGlvVHJhY2smKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgYXVkaW9UcmFja0tpbmRDaGFuZ2VkKEF1ZGlvVHJhY2smKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgYXVkaW9UcmFja0xhYmVsQ2hhbmdlZChBdWRpb1RyYWNrJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGF1ZGlvVHJhY2tMYW5ndWFnZUNoYW5nZWQoQXVkaW9UcmFjayYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrJikgeyB9CiB9Owog
CiBjbGFzcyBBdWRpb1RyYWNrIGZpbmFsIDogcHVibGljIE1lZGlhVHJhY2tCYXNlLCBwcml2YXRl
IEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlv
VHJhY2s+IGNyZWF0ZShBdWRpb1RyYWNrQ2xpZW50JiBjbGllbnQsIEF1ZGlvVHJhY2tQcml2YXRl
JiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxBdWRpb1RyYWNrPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJhY2soY2xpZW50
LCB0cmFja1ByaXZhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFj
ayhjb250ZXh0LCB0cmFja1ByaXZhdGUpKTsKICAgICB9CiAgICAgdmlydHVhbCB+QXVkaW9UcmFj
aygpOwogCkBAIC01OSwyMSArNjYsMjIgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChjb25z
dCBib29sKTsKIAotICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVs
bHB0cjsgfQotICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xpZW50OyB9CisgICAgdm9pZCBhZGRDbGllbnQoQXVkaW9UcmFja0NsaWVudCYpOworICAgIHZv
aWQgY2xlYXJDbGllbnQoQXVkaW9UcmFja0NsaWVudCYpOwogCiAgICAgc2l6ZV90IGluYmFuZFRy
YWNrSW5kZXgoKSBjb25zdDsKIAogICAgIGNvbnN0IEF1ZGlvVHJhY2tQcml2YXRlJiBwcml2YXRl
VHJhY2soKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KICAgICB2b2lkIHNldFByaXZhdGUo
QXVkaW9UcmFja1ByaXZhdGUmKTsKIAotICAgIHZvaWQgc2V0TWVkaWFFbGVtZW50KFdlYWtQdHI8
SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3Qg
QXRvbVN0cmluZyYpIGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdm9p
ZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopIGZpbmFsOwogI2VuZGlmCiAK
IHByaXZhdGU6Ci0gICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50JiwgQXVkaW9UcmFja1By
aXZhdGUmKTsKKyAgICBBdWRpb1RyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBBdWRpb1Ry
YWNrUHJpdmF0ZSYpOwogCiAgICAgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9tU3RyaW5nJikg
Y29uc3QgZmluYWw7CiAKQEAgLTkyLDcgKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkF1ZGlvVHJhY2siOyB9CiAj
ZW5kaWYKIAotICAgIEF1ZGlvVHJhY2tDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OworICAg
IFdlYWtQdHI8QXVkaW9UcmFja0xpc3Q+IG1fYXVkaW9UcmFja0xpc3Q7CisgICAgV2Vha0hhc2hT
ZXQ8QXVkaW9UcmFja0NsaWVudD4gbV9jbGllbnRzOwogICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0
ZT4gbV9wcml2YXRlOwogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmlkbAppbmRleCAzOTM0NjY2ZjVmYzA2MjE3ZDNl
M2VlOWM1ZTAxZDRjYTczMWMwZWZhLi5iOTQzY2Y1NWVkOWYxNTkzZTczMzI3NWQ3OWNjNjAyOGIw
MDI2MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5pZGwKQEAgLTI2
LDggKzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAgICBFeHBvcnRNYWNybz1X
RUJDT1JFX0VYUE9SVCwKLSAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxFbGVtZW50Um9vdCwK
LSAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZSwKICAg
ICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgQXVkaW9UcmFjayB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svQXVkaW9UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrTGlzdC5jcHAKaW5kZXggNjQwNTgxNzFkNDVhODgxZWYxZTBkYzZkOGVlM2QzNDMzZDU2
MWRjYS4uMzNhMDdkNGVjNzFkMTg4YmI5NTg3ZDBkOWJhODgyN2EzOTYxNDg0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5jcHAKQEAgLTMwLDEyICszMCwx
MSBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAKICNpbmNsdWRlICJBdWRpb1RyYWNr
LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUF1ZGlvVHJhY2tMaXN0OjpBdWRpb1RyYWNrTGlzdChXZWFrUHRyPEhUTUxNZWRpYUVsZW1l
bnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBUcmFj
a0xpc3RCYXNlKGVsZW1lbnQsIGNvbnRleHQpCitBdWRpb1RyYWNrTGlzdDo6QXVkaW9UcmFja0xp
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2Uo
Y29udGV4dCwgVHJhY2tMaXN0QmFzZTo6VmlkZW9UcmFja0xpc3QpCiB7CiB9CiAKQEAgLTUzLDEz
ICs1MiwyMSBAQCB2b2lkIEF1ZGlvVHJhY2tMaXN0OjphcHBlbmQoUmVmPEF1ZGlvVHJhY2s+JiYg
dHJhY2spCiAgICAgfQogICAgIG1faW5iYW5kVHJhY2tzLmluc2VydChpbnNlcnRpb25JbmRleCwg
dHJhY2sucHRyKCkpOwogCi0KLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0
cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwotICAgIHRyYWNrLT5zZXRN
ZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJhY2stPnRyYWNrTGlzdCgp
KQorICAgICAgICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAogICAgIHNjaGVkdWxlQWRk
VHJhY2tFdmVudChXVEZNb3ZlKHRyYWNrKSk7CiB9CiAKK3ZvaWQgQXVkaW9UcmFja0xpc3Q6OnJl
bW92ZShUcmFja0Jhc2UmIHRyYWNrLCBib29sIHNjaGVkdWxlRXZlbnQpCit7CisgICAgYXV0byYg
YXVkaW9UcmFjayA9IGRvd25jYXN0PEF1ZGlvVHJhY2s+KHRyYWNrKTsKKyAgICBpZiAoYXVkaW9U
cmFjay50cmFja0xpc3QoKSA9PSB0aGlzKQorICAgICAgICBhdWRpb1RyYWNrLmNsZWFyVHJhY2tM
aXN0KCk7CisKKyAgICBUcmFja0xpc3RCYXNlOjpyZW1vdmUodHJhY2ssIHNjaGVkdWxlRXZlbnQp
OworfQorCiBBdWRpb1RyYWNrKiBBdWRpb1RyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKIHsKICAgICBpZiAoaW5kZXggPCBtX2luYmFuZFRyYWNrcy5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmgKaW5kZXggOGFlMDM0MjAxNDJmZTFj
ZjYzODBlZmQzZGJlODEyMmM0YjQ0OGQ3ZS4uOTVmZDkwYjRjYWJiYmQ4MzgwYzVhYzBiNTM5OThm
MTRhY2FmNDVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1Ry
YWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
aApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBBdWRpb1RyYWNrOwogCiBjbGFzcyBBdWRpb1RyYWNr
TGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEF1ZGlvVHJhY2tMaXN0PiBjcmVhdGUoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBvd25l
ciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPEF1ZGlv
VHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7
Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja0xpc3Qob3duZXIs
IGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0ID0gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNr
TGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxpc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAg
ICByZXR1cm4gbGlzdDsKICAgICB9CkBAIC00OCwxMiArNDgsMTMgQEAgcHVibGljOgogICAgIEF1
ZGlvVHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAgIEF1ZGlvVHJhY2sqIGxh
c3RJdGVtKCkgY29uc3QgeyByZXR1cm4gaXRlbShsZW5ndGgoKSAtIDEpOyB9CiAgICAgdm9pZCBh
cHBlbmQoUmVmPEF1ZGlvVHJhY2s+JiYpOworICAgIHZvaWQgcmVtb3ZlKFRyYWNrQmFzZSYsIGJv
b2wgc2NoZWR1bGVFdmVudCA9IHRydWUpIGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIEF1ZGlvVHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlhRWxl
bWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBBdWRpb1RyYWNrTGlzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7CiB9OwpAQCAtNjEsNCArNjIsOCBAQCBzdGF0aWNfYXNzZXJ0KHNp
emVvZihBdWRpb1RyYWNrTGlzdCkgPT0gc2l6ZW9mKFRyYWNrTGlzdEJhc2UpLCAiIik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpBdWRpb1RyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVybiB0cmFja0xpc3QudHlwZSgpID09
IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OkF1ZGlvVHJhY2tMaXN0OyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaWRsCmluZGV4IGM0NTU0Y2YyZDIwN2Y2M2Zh
N2UzOTlkYWU0NzQ5ZTZjOTEyNzQ3ZGEuLjI5MTNjOGU0MmY2NjUwMjU1NmVmZjI5YmM4ODA0ZjM1
ZjNhOWRlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
a0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3Qu
aWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRp
dGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAor
ICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgR2VuZXJhdGVBZGRPcGFxdWVSb290LAogICAg
IEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBBdWRpb1RyYWNrTGlzdCA6IEV2ZW50VGFyZ2V0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2su
Y3BwCmluZGV4IDgzODAyMzJiNzkyOGEyN2I5MzIzNjgwNmMwMjg1MjlmMDdiYmVhODAuLmZhNzhm
M2JiZTI5MThkY2FhODM4NDk3N2M5Mzc5YWE0ODVkNDRkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcApAQCAtMzAsMjIgKzMwLDIy
IEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVkZSAiRGF0YUN1ZS5oIgotI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgi
CisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKEluYmFuZERhdGFUZXh0VHJhY2spOwogCi1pbmxpbmUgSW5iYW5kRGF0YVRleHRUcmFjazo6
SW5iYW5kRGF0YVRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVudCYg
Y2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCi0gICAgOiBJbmJh
bmRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKQoraW5saW5lIEluYmFu
ZERhdGFUZXh0VHJhY2s6OkluYmFuZERhdGFUZXh0VHJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgOiBJbmJhbmRUZXh0VHJh
Y2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkKIHsKIH0KIAotUmVmPEluYmFuZERhdGFUZXh0VHJh
Y2s+IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRU
cmFja0NsaWVudCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUp
CitSZWY8SW5iYW5kRGF0YVRleHRUcmFjaz4gSW5iYW5kRGF0YVRleHRUcmFjazo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQog
ewotICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmREYXRhVGV4dFRyYWNr
KGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSkpOworICAgIGF1dG8gdGV4dFRyYWNrID0g
YWRvcHRSZWYoKm5ldyBJbmJhbmREYXRhVGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUp
KTsKICAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0VHJh
Y2s7CiB9CkBAIC03MCw4ICs3MCw5IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIG1l
ZGlhRWxlbWVudCgpKSB7Ci0gICAgICAgIGN1ZS0+c2V0RW5kVGltZShtZWRpYUVsZW1lbnQoKS0+
ZHVyYXRpb25NZWRpYVRpbWUoKSk7CisgICAgYXV0byogdGV4dFRyYWNrTGlzdCA9IGRvd25jYXN0
PFRleHRUcmFja0xpc3Q+KHRyYWNrTGlzdCgpKTsKKyAgICBpZiAoZW5kLmlzUG9zaXRpdmVJbmZp
bml0ZSgpICYmIHRleHRUcmFja0xpc3QgJiYgdGV4dFRyYWNrTGlzdC0+ZHVyYXRpb24oKS5pc1Zh
bGlkKCkpIHsKKyAgICAgICAgY3VlLT5zZXRFbmRUaW1lKHRleHRUcmFja0xpc3QtPmR1cmF0aW9u
KCkpOwogICAgICAgICBtX2luY29tcGxldGVDdWVNYXAuYXBwZW5kKCZjdWUuZ2V0KCkpOwogICAg
IH0KIApAQCAtMTAxLDggKzEwMiw5IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6dXBkYXRl
RGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmCiAgICAgY3Vl
LT53aWxsQ2hhbmdlKCk7CiAKICAgICBNZWRpYVRpbWUgZW5kID0gaW5FbmQ7Ci0gICAgaWYgKGVu
ZC5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgZW5kID0g
bWVkaWFFbGVtZW50KCktPmR1cmF0aW9uTWVkaWFUaW1lKCk7CisgICAgYXV0byogdGV4dFRyYWNr
TGlzdCA9IGRvd25jYXN0PFRleHRUcmFja0xpc3Q+KHRyYWNrTGlzdCgpKTsKKyAgICBpZiAoZW5k
LmlzUG9zaXRpdmVJbmZpbml0ZSgpICYmIHRleHRUcmFja0xpc3QgJiYgdGV4dFRyYWNrTGlzdC0+
ZHVyYXRpb24oKS5pc1ZhbGlkKCkpCisgICAgICAgIGVuZCA9IHRleHRUcmFja0xpc3QtPmR1cmF0
aW9uKCk7CiAgICAgZWxzZQogICAgICAgICBtX2luY29tcGxldGVDdWVNYXAucmVtb3ZlRmlyc3Qo
Y3VlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRh
VGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJh
Y2suaAppbmRleCBmNmI1MGY0N2E5YTQ1MjQ2NjNlNTZiZTFiNjFiNjAzNzgyMzZmMzE0Li4yNTAx
ODRhYTc1MGFjNjgzNDFkYzYxYTI4OTdkZmMxMmIwODVhMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaApAQCAtMzcsMTEgKzM3LDExIEBA
IGNsYXNzIERhdGFDdWU7CiBjbGFzcyBJbmJhbmREYXRhVGV4dFRyYWNrIGZpbmFsIDogcHVibGlj
IEluYmFuZFRleHRUcmFjayB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmJhbmREYXRh
VGV4dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZERhdGFUZXh0VHJhY2s+
IGNyZWF0ZShEb2N1bWVudCYsIFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZh
dGUmKTsKKyAgICBzdGF0aWMgUmVmPEluYmFuZERhdGFUZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVu
dCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKICAgICB2aXJ0dWFsIH5JbmJhbmREYXRhVGV4
dFRyYWNrKCk7CiAKIHByaXZhdGU6Ci0gICAgSW5iYW5kRGF0YVRleHRUcmFjayhEb2N1bWVudCYs
IFRleHRUcmFja0NsaWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKKyAgICBJbmJhbmRE
YXRhVGV4dFRyYWNrKERvY3VtZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAg
dm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYg
ZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCA1NTZlNDQ5
ZTg3NjJhZjE1MDVjOTEwOTAzNjdlZTE1OGRkM2EwMjlmLi4yMzkxZDVlZGU1NzI2MDFhYjc5NGQz
MjU1YTZmZTllMTVkNGI4M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5j
bHVkZSAiVlRUUmVnaW9uTGlzdC5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNjMsMTQgKzY0LDE0IEBAIHZvaWQgR2VuZXJpY1RleHRU
cmFja0N1ZU1hcDo6cmVtb3ZlKFRleHRUcmFja0N1ZSYgcHVibGljQ3VlKQogICAgICAgICBtX2Rh
dGFUb0N1ZU1hcC5yZW1vdmUoY3VlSWRlbnRpZmllcik7CiB9CiAKLWlubGluZSBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1bWVudCwg
VGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKLSAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwgY2xpZW50LCB0cmFja1ByaXZh
dGUpCitpbmxpbmUgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6SW5iYW5kR2VuZXJpY1RleHRUcmFj
ayhEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0
ZSkKKyAgICA6IEluYmFuZFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQcml2YXRlKQogewogfQog
Ci1SZWY8SW5iYW5kR2VuZXJpY1RleHRUcmFjaz4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRl
eHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK1JlZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNr
PiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgYXV0byB0ZXh0VHJhY2sg
PSBhZG9wdFJlZigqbmV3IEluYmFuZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwg
dHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJhY2sgPSBhZG9wdFJlZigqbmV3IEluYmFu
ZEdlbmVyaWNUZXh0VHJhY2soZG9jdW1lbnQsIHRyYWNrUHJpdmF0ZSkpOwogICAgIHRleHRUcmFj
ay0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRleHRUcmFjazsKIH0KQEAgLTgzLDgg
Kzg0LDggQEAgdm9pZCBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjp1cGRhdGVDdWVGcm9tQ3VlRGF0
YShUZXh0VHJhY2tDdWVHZW5lcmljJiBjdWUsIEluYmEKIAogICAgIGN1ZS5zZXRTdGFydFRpbWUo
aW5iYW5kQ3VlLnN0YXJ0VGltZSgpKTsKICAgICBNZWRpYVRpbWUgZW5kVGltZSA9IGluYmFuZEN1
ZS5lbmRUaW1lKCk7Ci0gICAgaWYgKGVuZFRpbWUuaXNQb3NpdGl2ZUluZmluaXRlKCkgJiYgbWVk
aWFFbGVtZW50KCkpCi0gICAgICAgIGVuZFRpbWUgPSBtZWRpYUVsZW1lbnQoKS0+ZHVyYXRpb25N
ZWRpYVRpbWUoKTsKKyAgICBpZiAoZW5kVGltZS5pc1Bvc2l0aXZlSW5maW5pdGUoKSAmJiB0ZXh0
VHJhY2tMaXN0KCkgJiYgdGV4dFRyYWNrTGlzdCgpLT5kdXJhdGlvbigpLmlzVmFsaWQoKSkKKyAg
ICAgICAgZW5kVGltZSA9IHRleHRUcmFja0xpc3QoKS0+ZHVyYXRpb24oKTsKICAgICBjdWUuc2V0
RW5kVGltZShlbmRUaW1lKTsKICAgICBjdWUuc2V0VGV4dChpbmJhbmRDdWUuY29udGVudCgpKTsK
ICAgICBjdWUuc2V0SWQoaW5iYW5kQ3VlLmlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaAppbmRleCBmZTk1MzQ4ZDNmYmIxYjgz
NjQwODU3NGIyNzAxMGE3NmQzYTMxYjBkLi40NTk3YjJhMWM2ZjczYjU2OTFiNDc1ODcxMzU0MjMy
NzI5MmU1OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaApAQCAtNTMsMTEgKzUzLDExIEBAIHByaXZhdGU6CiBjbGFzcyBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrIGZpbmFsIDogcHVibGljIEluYmFuZFRleHRUcmFjaywgcHJpdmF0
ZSBXZWJWVFRQYXJzZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5iYW5k
R2VuZXJpY1RleHRUcmFjayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmJhbmRHZW5lcmlj
VGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlJik7CisgICAgc3RhdGljIFJlZjxJbmJhbmRHZW5lcmljVGV4dFRyYWNrPiBj
cmVhdGUoRG9jdW1lbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAgICAgdmlydHVhbCB+
SW5iYW5kR2VuZXJpY1RleHRUcmFjaygpOwogCiBwcml2YXRlOgotICAgIEluYmFuZEdlbmVyaWNU
ZXh0VHJhY2soRG9jdW1lbnQmLCBUZXh0VHJhY2tDbGllbnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlJik7CisgICAgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhEb2N1bWVudCYsIEluYmFuZFRleHRU
cmFja1ByaXZhdGUmKTsKIAogICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3Vl
JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcApp
bmRleCA5Y2ZhMTRkZjJhZTk1ODY2YzUzYjhiMTAzYjZkODU5ZDRiZmQ1ZDljLi5jNmZlYTM1ZWQz
OGIwNDg2MDNkMmNlODFkZmFiYjAyNjE4ODQyMGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFC
TEUoVklERU8pCiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5i
YW5kRGF0YVRleHRUcmFjay5oIgogI2luY2x1ZGUgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2suaCIK
ICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCkBAIC0zOSwyNCArMzgsMjQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW5iYW5k
VGV4dFRyYWNrKTsKIAotUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5kVGV4dFRyYWNrOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQmIGNsaWVudCwgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorUmVmPEluYmFuZFRleHRUcmFjaz4gSW5iYW5k
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlJiB0cmFja1ByaXZhdGUpCiB7CiAgICAgc3dpdGNoICh0cmFja1ByaXZhdGUuY3VlRm9ybWF0
KCkpIHsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6RGF0YToK
LSAgICAgICAgcmV0dXJuIEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgY2xp
ZW50LCB0cmFja1ByaXZhdGUpOworICAgICAgICByZXR1cm4gSW5iYW5kRGF0YVRleHRUcmFjazo6
Y3JlYXRlKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpOwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZTo6Q3VlRm9ybWF0OjpHZW5lcmljOgotICAgICAgICByZXR1cm4gSW5iYW5kR2VuZXJp
Y1RleHRUcmFjazo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAg
ICAgIHJldHVybiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpjcmVhdGUoZG9jdW1lbnQsIHRyYWNr
UHJpdmF0ZSk7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6Oldl
YlZUVDoKLSAgICAgICAgcmV0dXJuIEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKGRvY3Vt
ZW50LCBjbGllbnQsIHRyYWNrUHJpdmF0ZSk7CisgICAgICAgIHJldHVybiBJbmJhbmRXZWJWVFRU
ZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2YXRlKTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgYXV0byB0ZXh0VHJhY2sgPSBJbmJhbmREYXRhVGV4dFRy
YWNrOjpjcmVhdGUoZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKTsKKyAgICBhdXRvIHRl
eHRUcmFjayA9IEluYmFuZERhdGFUZXh0VHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgdHJhY2tQcml2
YXRlKTsKICAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB0ZXh0
VHJhY2s7CiB9CiAKLUluYmFuZFRleHRUcmFjazo6SW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiBk
b2N1bWVudCwgVGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUm
IHRyYWNrUHJpdmF0ZSkKLSAgICA6IFRleHRUcmFjaygmZG9jdW1lbnQsICZjbGllbnQsIGVtcHR5
QXRvbSgpLCB0cmFja1ByaXZhdGUuaWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJp
dmF0ZS5sYW5ndWFnZSgpLCBJbkJhbmQpCitJbmJhbmRUZXh0VHJhY2s6OkluYmFuZFRleHRUcmFj
ayhEb2N1bWVudCYgZG9jdW1lbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0
ZSkKKyAgICA6IFRleHRUcmFjaygmZG9jdW1lbnQsIGVtcHR5QXRvbSgpLCB0cmFja1ByaXZhdGUu
aWQoKSwgdHJhY2tQcml2YXRlLmxhYmVsKCksIHRyYWNrUHJpdmF0ZS5sYW5ndWFnZSgpLCBJbkJh
bmQpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQogewogICAgIG1fcHJpdmF0ZS0+c2V0
Q2xpZW50KHRoaXMpOwpAQCAtMTU5LDEwICsxNTgsOSBAQCB2b2lkIEluYmFuZFRleHRUcmFjazo6
bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQogCiB2b2lkIEluYmFu
ZFRleHRUcmFjazo6d2lsbFJlbW92ZSgpCiB7Ci0gICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0
cihtZWRpYUVsZW1lbnQoKS5nZXQoKSk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1
cm47Ci0gICAgZWxlbWVudC0+cmVtb3ZlVGV4dFRyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMu
Zm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92ZVRl
eHRUcmFjaygqdGhpcyk7CisgICAgfSk7CiB9CiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjp1cGRh
dGVLaW5kRnJvbVByaXZhdGUoKQpAQCAtMTk3LDE0ICsxOTUsNiBAQCBNZWRpYVRpbWUgSW5iYW5k
VGV4dFRyYWNrOjpzdGFydFRpbWVWYXJpYW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+c3RhcnRUaW1lVmFyaWFuY2UoKTsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldE1l
ZGlhRWxlbWVudChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQpCi17Ci0gICAgVHJh
Y2tCYXNlOjpzZXRNZWRpYUVsZW1lbnQoZWxlbWVudCk7Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgbV9wcml2YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7
Ci0jZW5kaWYKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogdm9pZCBJbmJhbmRUZXh0
VHJhY2s6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRl
bnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
VGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5o
CmluZGV4IGJiMTJjMTU5ZGU3NGY5Mjk0NTM2OTU0MWQ3ODcyZTZjNWMxYWNiNDcuLmYyOGExZDQ4
NWE1OTliNjg5YzBmNjEwNGQ2ZjNmODQxMGM1ZTA4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRUZXh0VHJhY2suaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNrLCBwcml2YXRl
IEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSW5iYW5kVGV4dFRyYWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRU
cmFjaz4gY3JlYXRlKERvY3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1l
bnQmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRy
YWNrKCk7CiAKICAgICBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKQEAg
LTQ5LDEzICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgQXRvbVN0cmluZyBpbkJhbmRNZXRhZGF0YVRy
YWNrRGlzcGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFByaXZhdGUo
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwotICAgIHZvaWQgc2V0TWVkaWFFbGVtZW50KFdlYWtQ
dHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKSBmaW5hbDsK
ICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5iYW5kVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4
dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIEluYmFuZFRleHRU
cmFjayhEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAogICAgIHZvaWQgc2V0
TW9kZUludGVybmFsKE1vZGUpOwogICAgIHZvaWQgdXBkYXRlS2luZEZyb21Qcml2YXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5j
cHAKaW5kZXggMmFhOWYzYjAzYWIzYTE0NGU5MjcxM2E2NWZhZjNmZmNkZjVhYTdhYy4uMjIyM2E1
NzJhYTBmNmNhOTRjMmQyNzRmMWVjMzc1NGJjNTI1Zjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtMzksMTQgKzM5
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEluYmFuZFdlYlZUVFRleHRUcmFjayk7CiAKLWlubGluZSBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6
OkluYmFuZFdlYlZUVFRleHRUcmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIFRleHRUcmFja0NsaWVu
dCYgY2xpZW50LCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCi0gICAgOiBJ
bmJhbmRUZXh0VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKQoraW5saW5lIElu
YmFuZFdlYlZUVFRleHRUcmFjazo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiBkb2N1
bWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIDogSW5iYW5k
VGV4dFRyYWNrKGRvY3VtZW50LCB0cmFja1ByaXZhdGUpCiB7CiB9CiAKLVJlZjxJbmJhbmRUZXh0
VHJhY2s+IEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
VGV4dFRyYWNrQ2xpZW50JiBjbGllbnQsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKK1JlZjxJbmJhbmRUZXh0VHJhY2s+IEluYmFuZFdlYlZUVFRleHRUcmFjazo6Y3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRl
KQogewotICAgIGF1dG8gdGV4dFRyYWNrID0gYWRvcHRSZWYoKm5ldyBJbmJhbmRXZWJWVFRUZXh0
VHJhY2soZG9jdW1lbnQsIGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgYXV0byB0ZXh0VHJh
Y2sgPSBhZG9wdFJlZigqbmV3IEluYmFuZFdlYlZUVFRleHRUcmFjayhkb2N1bWVudCwgdHJhY2tQ
cml2YXRlKSk7CiAgICAgdGV4dFRyYWNrLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4g
dGV4dFRyYWNrOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRXZWJWVFRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrLmgKaW5kZXggMzE1MjM1NzI5YjVmYmQ5OWY2MzRmYTdkNmM3NzZjMjdiYzZj
MWM1Mi4uOTFmYTAzOThhNGY5YzBlN2E1NDk3NjYyNDhmYTMwNTZmODE3NTcyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCkBAIC0z
NiwxMSArMzYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5iYW5kV2ViVlRUVGV4
dFRyYWNrIGZpbmFsIDogcHVibGljIEluYmFuZFRleHRUcmFjaywgcHJpdmF0ZSBXZWJWVFRQYXJz
ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5iYW5kV2ViVlRUVGV4dFRy
YWNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluYmFuZFRleHRUcmFjaz4gY3JlYXRlKERv
Y3VtZW50JiwgVGV4dFRyYWNrQ2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAg
IHN0YXRpYyBSZWY8SW5iYW5kVGV4dFRyYWNrPiBjcmVhdGUoRG9jdW1lbnQmLCBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlJik7CiAgICAgdmlydHVhbCB+SW5iYW5kV2ViVlRUVGV4dFRyYWNrKCk7CiAK
IHByaXZhdGU6Ci0gICAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrKERvY3VtZW50JiwgVGV4dFRyYWNr
Q2xpZW50JiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIEluYmFuZFdlYlZUVFRleHRU
cmFjayhEb2N1bWVudCYsIEluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAogICAgIFdlYlZUVFBh
cnNlciYgcGFyc2VyKCk7CiAgICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKaW5kZXggMzFjYmYwYTY1OGQ4NTNkYzk5MTA1
OGUxZjJhOWZjYjk5ZmU3NzlkNC4uMzgzNTc2NDExNmQwOTI1OTg4NzhiNjVhOGZkOGE4MjU5MDNl
ZDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRU
cmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKExvYWRhYmxlVGV4dFRyYWNrKTsKIAogTG9hZGFibGVUZXh0VHJhY2s6
OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQmIHRyYWNrLCBjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCi0gICAg
OiBUZXh0VHJhY2soJnRyYWNrLmRvY3VtZW50KCksICZ0cmFjaywga2luZCwgZW1wdHlTdHJpbmco
KSwgbGFiZWwsIGxhbmd1YWdlLCBUcmFja0VsZW1lbnQpCisgICAgOiBUZXh0VHJhY2soJnRyYWNr
LmRvY3VtZW50KCksIGtpbmQsIGVtcHR5U3RyaW5nKCksIGxhYmVsLCBsYW5ndWFnZSwgVHJhY2tF
bGVtZW50KQogICAgICwgbV90cmFja0VsZW1lbnQoJnRyYWNrKQogewogfQpAQCAtOTYsMTEgKzk2
LDYgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVMb2FkKGNvbnN0IFVSTCYgdXJs
KQogICAgIH0pOwogfQogCi1FbGVtZW50KiBMb2FkYWJsZVRleHRUcmFjazo6ZWxlbWVudCgpCi17
Ci0gICAgcmV0dXJuIG1fdHJhY2tFbGVtZW50OwotfQotCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNr
OjpuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFja0xvYWRlciYgbG9hZGVyKQogewogICAgIEFTU0VS
VF9VTlVTRUQobG9hZGVyLCBtX2xvYWRlci5nZXQoKSA9PSAmbG9hZGVyKTsKQEAgLTExNCw4ICsx
MDksNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFj
a0xvYWRlciYgbG9hZGVyKQogICAgICAgICBtX2N1ZXMtPmFkZChXVEZNb3ZlKG5ld0N1ZSkpOwog
ICAgIH0KIAotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50KCktPnRleHRUcmFja0Fk
ZEN1ZXMoKnRoaXMsICptX2N1ZXMpOworICAgIFRleHRUcmFjazo6bmV3Q3Vlc0F2YWlsYWJsZSgq
bV9jdWVzKTsKIH0KIAogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZXRl
ZChUZXh0VHJhY2tMb2FkZXImIGxvYWRlciwgYm9vbCBsb2FkaW5nRmFpbGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCmluZGV4IDA4ZGZhYWQyOGRj
ZGQxZDhhYjVjYjBmYjZhZTJmODYxYmU3OTA4YjMuLmI3ZmI0M2Y5N2UwOGU3N2I2OTZkYzNhZGFj
ODRkZDZmNDlmMTc0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9h
ZGFibGVUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxl
VGV4dFRyYWNrLmgKQEAgLTU2LDcgKzU2LDYgQEAgcHJpdmF0ZToKIAogICAgIEF0b21TdHJpbmcg
aWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0IGZpbmFsOwotICAg
IEVsZW1lbnQqIGVsZW1lbnQoKSBmaW5hbDsKIAogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IGU1ZTUwYjQxOTU2
ZWIxNDE2MWIzYWY1MjgzODFhNTc1ZGQwZjE4YzUuLjVjZTI2ZTZhZGE0MDVmMDlmMzFmZmM3Mzg4
Y2E4ODk4MzBjYzhhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAK
QEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJEYXRhQ3VlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJTb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0Lmgi
CiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgpAQCAtODgsMjAgKzg3LDE5IEBAIHN0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiBmb3JjZWRLZXl3b3JkKCkKIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6
OmNhcHRpb25NZW51T2ZmSXRlbSgpCiB7Ci0gICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4
dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFRl
eHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0i
LCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAg
cmV0dXJuIG9mZjsKIH0KIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21h
dGljSXRlbSgpCiB7Ci0gICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGljID0gVGV4dFRyYWNr
OjpjcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFRl
eHRUcmFjayYgYXV0b21hdGljID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRp
YyBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFr
UmVmKCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIAotVGV4dFRyYWNrOjpUZXh0VHJhY2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQs
IGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9t
U3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUg
dHlwZSkKLSAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaywgaWQsIGxhYmVsLCBs
YW5ndWFnZSkKK1RleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEF0b21TdHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25z
dCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UsIFRleHRUcmFj
a1R5cGUgdHlwZSkKKyAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFja0Jhc2U6OlRleHRUcmFj
aywgaWQsIGxhYmVsLCBsYW5ndWFnZSkKICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQot
ICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90cmFja1R5cGUodHlwZSkKIHsKICAgICBp
ZiAoa2luZCA9PSBjYXB0aW9uc0tleXdvcmQoKSkKQEAgLTExNiw5ICsxMTQsOSBAQCBUZXh0VHJh
Y2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tD
bGllbnQqIGNsaWVudCwgYwogICAgICAgICBtX2tpbmQgPSBLaW5kOjpNZXRhZGF0YTsKIH0KIAot
UmVmPFRleHRUcmFjaz4gVGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBUZXh0
VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0
cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5n
dWFnZSkKK1JlZjxUZXh0VHJhY2s+IFRleHRUcmFjazo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgQXRvbVN0cmluZyYga2luZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0
b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICBhdXRv
IHRleHRUcmFjayA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrKGRvY3VtZW50LCBjbGllbnQsIGtp
bmQsIGlkLCBsYWJlbCwgbGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CisgICAgYXV0byB0ZXh0VHJhY2sg
PSBhZG9wdFJlZigqbmV3IFRleHRUcmFjayhkb2N1bWVudCwga2luZCwgaWQsIGxhYmVsLCBsYW5n
dWFnZSwgQWRkVHJhY2spKTsKICAgICB0ZXh0VHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOwogICAg
IHJldHVybiB0ZXh0VHJhY2s7CiB9CkBAIC0xMjYsOCArMTI0LDkgQEAgUmVmPFRleHRUcmFjaz4g
VGV4dFRyYWNrOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBUZXh0VHJhY2tDbGllbnQqIGNs
aWVudCwgY28KIFRleHRUcmFjazo6flRleHRUcmFjaygpCiB7CiAgICAgaWYgKG1fY3Vlcykgewot
ICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVt
b3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7CisgICAgICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlz
XSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgICAgICBjbGllbnQudGV4dFRyYWNrUmVtb3ZlQ3Vl
cygqdGhpcywgKm1fY3Vlcyk7CisgICAgICAgIH0pOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fY3Vlcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIG1fY3Vlcy0+aXRlbShp
KS0+c2V0VHJhY2sobnVsbHB0cik7CiAgICAgfQpAQCAtMTM3LDYgKzEzNiwyMyBAQCBUZXh0VHJh
Y2s6On5UZXh0VHJhY2soKQogICAgIH0KIH0KIAorVGV4dFRyYWNrTGlzdCogVGV4dFRyYWNrOjp0
ZXh0VHJhY2tMaXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8VGV4dFRyYWNrTGlz
dD4odHJhY2tMaXN0KCkpOworfQorCit2b2lkIFRleHRUcmFjazo6YWRkQ2xpZW50KFRleHRUcmFj
a0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVu
dCkpOworICAgIG1fY2xpZW50cy5hZGQoY2xpZW50KTsKK30KKwordm9pZCBUZXh0VHJhY2s6OmNs
ZWFyQ2xpZW50KFRleHRUcmFja0NsaWVudCYgY2xpZW50KQoreworICAgIEFTU0VSVChtX2NsaWVu
dHMuY29udGFpbnMoY2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQpOworfQor
CiBEb2N1bWVudCYgVGV4dFRyYWNrOjpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC0yMDAsMTkgKzIxNiwxNSBAQCB2b2lkIFRleHRU
cmFjazo6c2V0S2luZChLaW5kIG5ld0tpbmQpCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAg
ICAvLyAzLiBJZiB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGlzIHRyYWNrIGlzIG5v
dCBudWxsLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlCiAgICAgLy8gZXZlbnQg
bmFtZWQgY2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLgotICAgIGlmIChtX3NvdXJj
ZUJ1ZmZlcikKLSAgICAgICAgbV9zb3VyY2VCdWZmZXItPnRleHRUcmFja3MoKS5zY2hlZHVsZUNo
YW5nZUV2ZW50KCk7Ci0KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBl
dmVudCBuYW1lZCBjaGFuZ2UgYXQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0IHJlZmVyZW5jZWQg
YnkKICAgICAvLyB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1l
bnQuCi0gICAgaWYgKG1lZGlhRWxlbWVudCgpKQotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5z
dXJlVGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKICNlbmRpZgogCiAgICAgaWYg
KG9sZEtpbmQgIT0gbV9raW5kKSB7CiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
bV9raW5kKTsKLSAgICAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPnRl
eHRUcmFja0tpbmRDaGFuZ2VkKCp0aGlzKTsKKyAgICAgICAgbV9jbGllbnRzLmZvckVhY2goW3Ro
aXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgICAgIGNsaWVudC50ZXh0VHJhY2tLaW5kQ2hh
bmdlZCgqdGhpcyk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApAQCAtMjUyLDggKzI2NCwxMSBA
QCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZShNb2RlIG1vZGUpCiAKICAgICAvLyBJZiBtb2RlIGNo
YW5nZXMgdG8gZGlzYWJsZWQsIHJlbW92ZSB0aGlzIHRyYWNrJ3MgY3VlcyBmcm9tIHRoZSBjbGll
bnQKICAgICAvLyBiZWNhdXNlIHRoZXkgd2lsbCBubyBsb25nZXIgYmUgYWNjZXNzaWJsZSBmcm9t
IHRoZSBjdWVzKCkgZnVuY3Rpb24uCi0gICAgaWYgKG1vZGUgPT0gTW9kZTo6RGlzYWJsZWQgJiYg
bV9jbGllbnQgJiYgbV9jdWVzKQotICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3Vl
cygqdGhpcywgKm1fY3Vlcyk7CisgICAgaWYgKG1vZGUgPT0gTW9kZTo6RGlzYWJsZWQgJiYgbV9j
dWVzKSB7CisgICAgICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7
CisgICAgICAgICAgICBjbGllbnQudGV4dFRyYWNrUmVtb3ZlQ3VlcygqdGhpcywgKm1fY3Vlcyk7
CisgICAgICAgIH0pOworICAgIH0KIAogICAgIGlmIChtb2RlICE9IE1vZGU6OlNob3dpbmcgJiYg
bV9jdWVzKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgo
KTsgKytpKQpAQCAtMjYyLDggKzI3Nyw5IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKE1vZGUg
bW9kZSkKIAogICAgIG1fbW9kZSA9IG1vZGU7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAg
IG1fY2xpZW50LT50ZXh0VHJhY2tNb2RlQ2hhbmdlZCgqdGhpcyk7CisgICAgbV9jbGllbnRzLmZv
ckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFja01v
ZGVDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogVGV4dFRyYWNrQ3VlTGlzdCogVGV4dFRy
YWNrOjpjdWVzKCkKQEAgLTI4NSw5ICszMDEsMTAgQEAgdm9pZCBUZXh0VHJhY2s6OnJlbW92ZUFs
bEN1ZXMoKQogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1ZXMoKnRoaXMsICptX2N1
ZXMpOwotICAgIAorICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7
CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWVzKCp0aGlzLCAqbV9jdWVzKTsKKyAg
ICB9KTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgoKTsgKytp
KQogICAgICAgICBtX2N1ZXMtPml0ZW0oaSktPnNldFRyYWNrKG51bGxwdHIpOwogICAgIApAQCAt
MzQxLDggKzM1OCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFRleHRUcmFjazo6YWRkQ3VlKFJlZjxU
ZXh0VHJhY2tDdWU+JiYgY3VlKQogICAgIGN1ZS0+c2V0VHJhY2sodGhpcyk7CiAgICAgZW5zdXJl
VGV4dFRyYWNrQ3VlTGlzdCgpLmFkZChjdWUuY29weVJlZigpKTsKIAotICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja0FkZEN1ZSgqdGhpcywgY3VlKTsKKyAgICBt
X2NsaWVudHMuZm9yRWFjaChbdGhpcywgY3VlXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNs
aWVudC50ZXh0VHJhY2tBZGRDdWUoKnRoaXMsIGN1ZSk7CisgICAgfSk7CiAKICAgICByZXR1cm4g
eyB9OwogfQpAQCAtMzY2LDggKzM4NCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFRleHRUcmFjazo6
cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3VlKQogICAgIG1fY3Vlcy0+cmVtb3ZlKGN1ZSk7CiAg
ICAgY3VlLnNldElzQWN0aXZlKGZhbHNlKTsKICAgICBjdWUuc2V0VHJhY2sobnVsbHB0cik7Ci0g
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKCp0
aGlzLCBjdWUpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7Cisg
ICAgICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgfSk7CiAK
ICAgICByZXR1cm4geyB9OwogfQpAQCAtNDYwLDMyICs0NzksMzAgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gVGV4dFRyYWNrOjpyZW1vdmVSZWdpb24oVlRUUmVnaW9uJiByZWdpb24pCiAKIHZvaWQgVGV4
dFRyYWNrOjpjdWVXaWxsQ2hhbmdlKFRleHRUcmFja0N1ZSYgY3VlKQogewotICAgIGlmICghbV9j
bGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRoZSBjdWUgbWF5IG5lZWQgdG8gYmUg
cmVwb3NpdGlvbmVkIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgaW50ZXJ2YWwgdHJlZSwgbWF5IG5l
ZWQgdG8KLSAgICAvLyBiZSByZS1yZW5kZXJlZCwgZXRjLCBzbyByZW1vdmUgaXQgYmVmb3JlIHRo
ZSBtb2RpZmljYXRpb24uLi4KLSAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKCp0aGlz
LCBjdWUpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAg
ICAgIC8vIFRoZSBjdWUgbWF5IG5lZWQgdG8gYmUgcmVwb3NpdGlvbmVkIGluIHRoZSBtZWRpYSBl
bGVtZW50J3MgaW50ZXJ2YWwgdHJlZSwgbWF5IG5lZWQgdG8KKyAgICAgICAgLy8gYmUgcmUtcmVu
ZGVyZWQsIGV0Yywgc28gcmVtb3ZlIGl0IGJlZm9yZSB0aGUgbW9kaWZpY2F0aW9uLi4uCisgICAg
ICAgIGNsaWVudC50ZXh0VHJhY2tSZW1vdmVDdWUoKnRoaXMsIGN1ZSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVGV4dFRyYWNrOjpjdWVEaWRDaGFuZ2UoVGV4dFRyYWNrQ3VlJiBjdWUpCiB7Ci0gICAg
aWYgKCFtX2NsaWVudCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBU
ZXh0VHJhY2tDdWVMaXN0IG9yZGVyIGlzIHVwLXRvLWRhdGUuCiAgICAgZW5zdXJlVGV4dFRyYWNr
Q3VlTGlzdCgpLnVwZGF0ZUN1ZUluZGV4KGN1ZSk7CiAKICAgICAvLyAuLi4gYW5kIGFkZCBpdCBi
YWNrIGFnYWluLgotICAgIG1fY2xpZW50LT50ZXh0VHJhY2tBZGRDdWUoKnRoaXMsIGN1ZSk7Cisg
ICAgbV9jbGllbnRzLmZvckVhY2goWyZdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50
LnRleHRUcmFja0FkZEN1ZSgqdGhpcywgY3VlKTsKKyAgICB9KTsKIH0KIAogaW50IFRleHRUcmFj
azo6dHJhY2tJbmRleCgpCiB7CiAgICAgaWYgKCFtX3RyYWNrSW5kZXgpIHsKLSAgICAgICAgaWYg
KCFtX21lZGlhRWxlbWVudCkKKyAgICAgICAgaWYgKCFtX3RleHRUcmFja0xpc3QpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgbV90cmFja0luZGV4ID0gbV9tZWRpYUVsZW1lbnQtPmVu
c3VyZVRleHRUcmFja3MoKS5nZXRUcmFja0luZGV4KCp0aGlzKTsKKyAgICAgICAgbV90cmFja0lu
ZGV4ID0gbV90ZXh0VHJhY2tMaXN0LT5nZXRUcmFja0luZGV4KCp0aGlzKTsKICAgICB9CiAgICAg
cmV0dXJuIG1fdHJhY2tJbmRleC52YWx1ZSgpOwogfQpAQCAtNTEyLDkgKzUyOSw5IEBAIFRleHRU
cmFja0N1ZUxpc3QmIFRleHRUcmFjazo6ZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpCiBpbnQgVGV4
dFRyYWNrOjp0cmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tzKCkKIHsKICAgICBpZiAo
IW1fcmVuZGVyZWRUcmFja0luZGV4KSB7Ci0gICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnQpCisg
ICAgICAgIGlmICghbV90ZXh0VHJhY2tMaXN0KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIG1fcmVuZGVyZWRUcmFja0luZGV4ID0gbV9tZWRpYUVsZW1lbnQtPmVuc3VyZVRleHRUcmFj
a3MoKS5nZXRUcmFja0luZGV4UmVsYXRpdmVUb1JlbmRlcmVkVHJhY2tzKCp0aGlzKTsKKyAgICAg
ICAgbV9yZW5kZXJlZFRyYWNrSW5kZXggPSBtX3RleHRUcmFja0xpc3QtPmdldFRyYWNrSW5kZXhS
ZWxhdGl2ZVRvUmVuZGVyZWRUcmFja3MoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4gbV9yZW5k
ZXJlZFRyYWNrSW5kZXgudmFsdWUoKTsKIH0KQEAgLTU5Nyw3ICs2MTQsNiBAQCBjb25zdCBjaGFy
KiBUZXh0VHJhY2s6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiVGV4
dFRyYWNrIjsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiB2b2lkIFRleHRUcmFjazo6
c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiB7CiAgICAgLy8gMTEuMSBs
YW5ndWFnZSwgb24gc2V0dGluZzoKQEAgLTYxMSwxNSArNjI3LDM1IEBAIHZvaWQgVGV4dFRyYWNr
OjpzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIAogICAgIC8vIDMuIElm
IHRoZSBzb3VyY2VCdWZmZXIgYXR0cmlidXRlIG9uIHRoaXMgdHJhY2sgaXMgbm90IG51bGwsIHRo
ZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUKICAgICAvLyBldmVudCBuYW1lZCBjaGFu
Z2UgYXQgc291cmNlQnVmZmVyLnRleHRUcmFja3MuCi0gICAgaWYgKG1fc291cmNlQnVmZmVyKQot
ICAgICAgICBtX3NvdXJjZUJ1ZmZlci0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKLQogICAgIC8vIDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVk
IGNoYW5nZSBhdCB0aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QgcmVmZXJlbmNlZCBieQogICAgIC8v
IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KLSAgICBp
ZiAobWVkaWFFbGVtZW50KCkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJh
Y2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFsmXSAo
YXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC50ZXh0VHJhY2tMYW5ndWFnZUNoYW5nZWQo
KnRoaXMpOworICAgIH0pOworfQorCit2b2lkIFRleHRUcmFjazo6c2V0SWQoY29uc3QgQXRvbVN0
cmluZyYgaWQpCit7CisgICAgVHJhY2tCYXNlOjpzZXRJZChpZCk7CisgICAgbV9jbGllbnRzLmZv
ckVhY2goW3RoaXNdIChhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnRleHRUcmFja0lk
Q2hhbmdlZCgqdGhpcyk7CisgICAgfSk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrOjpzZXRMYWJlbChj
b25zdCBBdG9tU3RyaW5nJiBsYWJlbCkKK3sKKyAgICBUcmFja0Jhc2U6OnNldExhYmVsKGxhYmVs
KTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAg
ICBjbGllbnQudGV4dFRyYWNrTGFiZWxDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKK30KKwordm9p
ZCBUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYgbGlz
dCkKK3sKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbJl0gKGF1dG8mIGNsaWVudCkgeworICAgICAg
ICBjbGllbnQudGV4dFRyYWNrQWRkQ3VlcygqdGhpcywgbGlzdCk7CisgICAgfSk7CiB9Ci0jZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suaAppbmRleCA3NDYzMmVhNGMwZDlhMDM3YTdiNjYwMTE3N2QzNGM5YTljMTUzZTYyLi44
YjMxNmU3YWRhNDljMzAyODk1MjQ1YjBhNzE4ZWNkNGQ4OTI5ZTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTMyLDMwICszMiwzNiBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgogI2luY2x1ZGUgIlRy
YWNrQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBUZXh0VHJhY2s7
CitjbGFzcyBUZXh0VHJhY2tMaXN0OwogY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKIGNsYXNzIFZU
VFJlZ2lvbjsKIGNsYXNzIFZUVFJlZ2lvbkxpc3Q7CiAKLWNsYXNzIFRleHRUcmFja0NsaWVudCB7
CitjbGFzcyBUZXh0VHJhY2tDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGV4dFRyYWNr
Q2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ2xpZW50KCkgPSBkZWZh
dWx0OwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2smKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBU
ZXh0VHJhY2tDdWVMaXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVD
dWVzKFRleHRUcmFjayYsIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tD
dWUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0lkQ2hhbmdlZChUZXh0VHJhY2sm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrS2luZENoYW5nZWQoVGV4dFRyYWNrJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tMYWJlbENoYW5nZWQoVGV4dFRyYWNrJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0xhbmd1YWdlQ2hhbmdlZChUZXh0VHJhY2smKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2smLCBjb25zdCBU
ZXh0VHJhY2tDdWVMaXN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1
ZXMoVGV4dFRyYWNrJiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrJiwgVGV4dFRyYWNrQ3VlJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2smLCBUZXh0VHJhY2tDdWUm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2smKSB7
IH0KIH07CiAKIGNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2UsIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFRleHRUcmFjayk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxU
ZXh0VHJhY2s+IGNyZWF0ZShEb2N1bWVudCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IEF0b21T
dHJpbmcmIGtpbmQsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJl
bCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOworICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNr
PiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3Ry
aW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1
YWdlKTsKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKIAogICAgIHN0YXRpYyBUZXh0VHJhY2sm
IGNhcHRpb25NZW51T2ZmSXRlbSgpOwpAQCAtNjQsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIHN1YnRpdGxlc0tleXdvcmQoKTsKICAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbVN0cmluZyYpOwogCisgICAgVGV4dFRyYWNr
TGlzdCogdGV4dFRyYWNrTGlzdCgpIGNvbnN0OworCiAgICAgZW51bSBjbGFzcyBLaW5kIHsgU3Vi
dGl0bGVzLCBDYXB0aW9ucywgRGVzY3JpcHRpb25zLCBDaGFwdGVycywgTWV0YWRhdGEsIEZvcmNl
ZCB9OwogICAgIEtpbmQga2luZCgpIGNvbnN0OwogCkBAIC04OCw3ICs5Niw4IEBAIHB1YmxpYzoK
IAogICAgIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXNJbnRlcm5hbCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3Vlcy5nZXQoKTsgfQogCi0gICAgdm9pZCBjbGVhckNsaWVudCgpIG92ZXJyaWRlIHsgbV9jbGll
bnQgPSBudWxscHRyOyB9CisgICAgdm9pZCBhZGRDbGllbnQoVGV4dFRyYWNrQ2xpZW50Jik7Cisg
ICAgdm9pZCBjbGVhckNsaWVudChUZXh0VHJhY2tDbGllbnQmKTsKIAogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGFkZEN1ZShSZWY8VGV4dFRyYWNrQ3VlPiYmKTsKICAgICB2aXJ0dWFsIEV4Y2VwdGlv
bk9yPHZvaWQ+IHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmKTsKQEAgLTEyMiw5ICsxMzEsMTAgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZW1vdmVBbGxDdWVzKCk7CiAKLSNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQotICAgIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRl
OwotI2VuZGlmCisgICAgdm9pZCBzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7
CisKKyAgICB2b2lkIHNldElkKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldExhYmVsKGNvbnN0IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0luYmFuZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTEzOSwyMCArMTQ5LDIy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ3Vlc05vdEluVGltZVJhbmdlcyhQ
bGF0Zm9ybVRpbWVSYW5nZXMmKTsKIAogcHJvdGVjdGVkOgotICAgIFRleHRUcmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgQXRvbVN0cmluZyYga2lu
ZCwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBB
dG9tU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSk7CisgICAgVGV4dFRyYWNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBBdG9tU3RyaW5nJiBraW5kLCBjb25zdCBBdG9tU3Ry
aW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1
YWdlLCBUZXh0VHJhY2tUeXBlKTsKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0Owot
ICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAogICAg
IGJvb2wgaGFzQ3VlKFRleHRUcmFja0N1ZSYsIFRleHRUcmFja0N1ZTo6Q3VlTWF0Y2hSdWxlcyA9
IFRleHRUcmFja0N1ZTo6TWF0Y2hBbGxGaWVsZHMpOwogICAgIHZvaWQgc2V0S2luZChLaW5kKTsK
IAorICAgIHZvaWQgbmV3Q3Vlc0F2YWlsYWJsZShjb25zdCBUZXh0VHJhY2tDdWVMaXN0Jik7CisK
ICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFN0cmluZz4+IG1fc3R5bGVTaGVldHM7CisgICAgV2Vha0hhc2hTZXQ8VGV4dFRyYWNr
Q2xpZW50PiBtX2NsaWVudHM7CiAKIHByaXZhdGU6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUZXh0VHJhY2tFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgYm9v
bCBlbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTE2Niw2ICsxNzgsOCBAQCBwcml2YXRl
OgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJUZXh0VHJhY2siOyB9CiAjZW5kaWYKIAorICAgIFdlYWtQdHI8VGV4dFRyYWNrTGlzdD4gbV90
ZXh0VHJhY2tMaXN0OworCiAgICAgVlRUUmVnaW9uTGlzdCYgZW5zdXJlVlRUUmVnaW9uTGlzdCgp
OwogICAgIFJlZlB0cjxWVFRSZWdpb25MaXN0PiBtX3JlZ2lvbnM7CiAKQEAgLTE3Myw3ICsxODcs
NiBAQCBwcml2YXRlOgogCiAgICAgTW9kZSBtX21vZGUgeyBNb2RlOjpEaXNhYmxlZCB9OwogICAg
IEtpbmQgbV9raW5kIHsgS2luZDo6U3VidGl0bGVzIH07Ci0gICAgVGV4dFRyYWNrQ2xpZW50KiBt
X2NsaWVudDsKICAgICBUZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwogICAgIFJlYWRpbmVzc1N0
YXRlIG1fcmVhZGluZXNzU3RhdGUgeyBOb3RMb2FkZWQgfTsKICAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gbV90cmFja0luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCmlu
ZGV4IGFhMWIwNGEyNzJjOTkyZjEyZWNiNzEwODNlNjcwOTU4OGVjMmI4ODguLjJlNWY1NzJmNDEw
MjVlZjY4MWVkNzEzZjAxZmY2YmI1OGY2NjQwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5pZGwKQEAgLTMwLDcgKzMwLDcgQEAgZW51bSBUZXh0VHJhY2tLaW5kIHsgInN1
YnRpdGxlcyIsICJjYXB0aW9ucyIsICJkZXNjcmlwdGlvbnMiLCAiY2hhcHRlcnMiLCAibWV0YWQK
ICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgRXhwb3J0
VG9XcmFwcGVkRnVuY3Rpb24sCi0gICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRWxlbWVudFJv
b3QsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZSwKICAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qs
CiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgRXhwb3NlZD1XaW5kb3cKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCmluZGV4IGZmOWExNDk5Y2Q1MTY4
OGNhOGRiYzMwZjAxZGI0YjZjNjJiOTZkY2MuLjIyOTI2NTczN2FjY2MwYTMwYzJkMTc5OGVhMDgx
Y2ViYTRkYzdkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0
LmNwcApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogCi0j
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFjay5o
IgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJMb2FkYWJs
ZVRleHRUcmFjay5oIgpAQCAtMzksMjcgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRUcmFja0xpc3QpOwogCi1UZXh0VHJhY2tM
aXN0OjpUZXh0VHJhY2tMaXN0KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICA6IFRyYWNrTGlzdEJhc2UoZWxlbWVu
dCwgY29udGV4dCkKK1RleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICA6IFRyYWNrTGlzdEJhc2UoY29udGV4dCwgVHJhY2tMaXN0
QmFzZTo6VGV4dFRyYWNrTGlzdCkKIHsKIH0KIAogVGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xp
c3QoKQogewotICAgIGNsZWFyRWxlbWVudCgpOwotfQotCi12b2lkIFRleHRUcmFja0xpc3Q6OmNs
ZWFyRWxlbWVudCgpCi17Ci0gICAgVHJhY2tMaXN0QmFzZTo6Y2xlYXJFbGVtZW50KCk7Ci0gICAg
Zm9yIChhdXRvJiB0cmFjayA6IG1fZWxlbWVudFRyYWNrcykgewotICAgICAgICB0cmFjay0+c2V0
TWVkaWFFbGVtZW50KG51bGxwdHIpOwotICAgICAgICB0cmFjay0+Y2xlYXJDbGllbnQoKTsKLSAg
ICB9Ci0gICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYWRkVHJhY2tUcmFja3MpIHsKLSAgICAgICAg
dHJhY2stPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgdHJhY2stPmNsZWFyQ2xp
ZW50KCk7Ci0gICAgfQogfQogCiB1bnNpZ25lZCBUZXh0VHJhY2tMaXN0OjpsZW5ndGgoKSBjb25z
dApAQCAtMjAzLDggKzE4OCw4IEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFJlZjxUZXh0
VHJhY2s+JiYgdHJhY2spCiAKICAgICBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayh0
cmFjayk7CiAKLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVk
aWFFbGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1l
bnQobWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJhY2stPnRyYWNrTGlzdCgpKQorICAgICAg
ICB0cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAogICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVu
dChXVEZNb3ZlKHRyYWNrKSk7CiB9CkBAIC0yMzMsOCArMjE4LDggQEAgdm9pZCBUZXh0VHJhY2tM
aXN0OjpyZW1vdmUoVHJhY2tCYXNlJiB0cmFjaywgYm9vbCBzY2hlZHVsZUV2ZW50KQogCiAgICAg
aW52YWxpZGF0ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodGV4dFRyYWNrKTsKIAotICAgIEFTU0VS
VCghdHJhY2subWVkaWFFbGVtZW50KCkgfHwgIWVsZW1lbnQoKSB8fCB0cmFjay5tZWRpYUVsZW1l
bnQoKSA9PSBlbGVtZW50KCkpOwotICAgIHRyYWNrLnNldE1lZGlhRWxlbWVudChudWxscHRyKTsK
KyAgICBpZiAodHJhY2sudHJhY2tMaXN0KCkgPT0gdGhpcykKKyAgICAgICAgdHJhY2suY2xlYXJU
cmFja0xpc3QoKTsKIAogICAgIFJlZjxUcmFja0Jhc2U+IHRyYWNrUmVmID0gKigqdHJhY2tzKVtp
bmRleF07CiAgICAgdHJhY2tzLT5yZW1vdmUoaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0xpc3QuaAppbmRleCBjZDJmZjdiZDBlNmY1ZDMyZWQ5YTBjY2EyNTVhZDQ4
YWQ2YmM1ODk5Li43MDIxZWQzNjhhNTU4YTgwZGY0MDAwZTNjYWViYmJmYmQzNWEzYmViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaApAQCAtMjgsNiArMjgsNyBA
QAogI2lmIEVOQUJMRShWSURFTykKIAogI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2UuaCIKKyNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsMTYg
KzM3LDE0IEBAIGNsYXNzIFRleHRUcmFjazsKIGNsYXNzIFRleHRUcmFja0xpc3QgZmluYWwgOiBw
dWJsaWMgVHJhY2tMaXN0QmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChUZXh0VHJh
Y2tMaXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHRUcmFja0xpc3Q+IGNyZWF0ZShX
ZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxUZXh0VHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0
UmVmKCpuZXcgVGV4dFRyYWNrTGlzdChlbGVtZW50LCBjb250ZXh0KSk7CisgICAgICAgIGF1dG8g
bGlzdCA9IGFkb3B0UmVmKCpuZXcgVGV4dFRyYWNrTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxp
c3QtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAgICAg
dmlydHVhbCB+VGV4dFRyYWNrTGlzdCgpOwogCi0gICAgdm9pZCBjbGVhckVsZW1lbnQoKSBvdmVy
cmlkZTsKLQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGludCBn
ZXRUcmFja0luZGV4KFRleHRUcmFjayYpOwogICAgIGludCBnZXRUcmFja0luZGV4UmVsYXRpdmVU
b1JlbmRlcmVkVHJhY2tzKFRleHRUcmFjayYpOwpAQCAtNTgsMTkgKzU3LDI3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFwcGVuZChSZWY8VGV4dFRyYWNrPiYmKTsKICAgICB2b2lkIHJlbW92ZShUcmFj
a0Jhc2UmLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKSBvdmVycmlkZTsKIAorICAgIHZvaWQg
c2V0RHVyYXRpb24oTWVkaWFUaW1lIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsg
fQorICAgIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0
aW9uOyB9CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgVGV4
dFRyYWNrTGlzdChXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CisgICAgVGV4dFRyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBpbnZhbGlkYXRlVHJhY2tJbmRleGVzQWZ0ZXJUcmFjayhUZXh0VHJhY2smKTsKIAogICAgIFZl
Y3RvcjxSZWZQdHI8VHJhY2tCYXNlPj4gbV9hZGRUcmFja1RyYWNrczsKICAgICBWZWN0b3I8UmVm
UHRyPFRyYWNrQmFzZT4+IG1fZWxlbWVudFRyYWNrczsKKyAgICBNZWRpYVRpbWUgbV9kdXJhdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpUZXh0VHJhY2tMaXN0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShj
b25zdCBXZWJDb3JlOjpUcmFja0xpc3RCYXNlJiB0cmFja0xpc3QpIHsgcmV0dXJuIHRyYWNrTGlz
dC50eXBlKCkgPT0gV2ViQ29yZTo6VHJhY2tMaXN0QmFzZTo6VGV4dFRyYWNrTGlzdDsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwKaW5kZXggZGY5Y2JlMTMw
YmNhNzNiYTY0MGY5NzhjOTFlZjE0NDRjMjExMWU3YS4uODJiYzkyNzI4ZTRmNTA5ZjRjNTI0Yjkz
ZGIxNjA2NzEwNDg4ZTVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0xpc3QuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAg
IENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRS
b290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgR2VuZXJhdGVBZGRPcGFxdWVSb290
LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBUZXh0VHJhY2tMaXN0IDogRXZlbnRU
YXJnZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCmluZGV4IGU4Zjk1
ZjkzMzEwM2FkODQyYWQ4MjcxMzM2MmYzNTFmNmRkODc3M2QuLmJkYzg4YWI1MDQ2ZTkxY2ZkYzEz
MTQ0MTk3MzkwNDVkMDY4MGQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFz
ZS5jcHAKQEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgogCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJUcmFja0xpc3RCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKFZJREVPKQogCi0j
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBpbnQgc191bmlxdWVJZCA9IDA7CkBAIC00OCw4ICs0OCw5IEBAIHN0YXRpYyBSZWZQdHI8
TG9nZ2VyPiYgbnVsbExvZ2dlcigpCiB9CiAjZW5kaWYKIAotVHJhY2tCYXNlOjpUcmFja0Jhc2Uo
VHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWws
IGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1YWdlKQotICAgIDogbV91bmlxdWVJZCgrK3NfdW5pcXVl
SWQpCitUcmFja0Jhc2U6OlRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJl
bCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlcihjb250ZXh0KQorICAgICwgbV91bmlxdWVJZCgrK3NfdW5pcXVlSWQpCiAgICAgLCBt
X2lkKGlkKQogICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2Up
CkBAIC03MCwyMSArNzEsMjYgQEAgVHJhY2tCYXNlOjpUcmFja0Jhc2UoVHlwZSB0eXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGMKICNlbmRpZgogfQog
Ci1FbGVtZW50KiBUcmFja0Jhc2U6OmVsZW1lbnQoKQordm9pZCBUcmFja0Jhc2U6OnNldFRyYWNr
TGlzdChUcmFja0xpc3RCYXNlJiB0cmFja0xpc3QpCiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFFbGVt
ZW50LmdldCgpOworICAgIG1fdHJhY2tMaXN0ID0gbWFrZVdlYWtQdHIodHJhY2tMaXN0KTsKIH0K
IAotdm9pZCogVHJhY2tCYXNlOjpvcGFxdWVSb290KCkKK3ZvaWQgVHJhY2tCYXNlOjpjbGVhclRy
YWNrTGlzdCgpCiB7Ci0gICAgaWYgKGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudCgp
KQotICAgICAgICByZXR1cm4gYXNzb2NpYXRlZEVsZW1lbnQtPm9wYXF1ZVJvb3QoKTsKLSAgICBy
ZXR1cm4gdGhpczsKKyAgICBtX3RyYWNrTGlzdCA9IG51bGxwdHI7Cit9CisKK1RyYWNrTGlzdEJh
c2UqIFRyYWNrQmFzZTo6dHJhY2tMaXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90cmFja0xp
c3QuZ2V0KCk7CiB9CiAKLXZvaWQgVHJhY2tCYXNlOjpzZXRNZWRpYUVsZW1lbnQoV2Vha1B0cjxI
VE1MTWVkaWFFbGVtZW50PiBlbGVtZW50KQordm9pZCogVHJhY2tCYXNlOjpvcGFxdWVSb290KCkK
IHsKLSAgICBtX21lZGlhRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgaWYgKGF1dG8gdHJhY2tMaXN0
ID0gdGhpcy0+dHJhY2tMaXN0KCkpCisgICAgICAgIHJldHVybiB0cmFja0xpc3QtPm9wYXF1ZVJv
b3QoKTsKKyAgICByZXR1cm4gdGhpczsKIH0KIAogLy8gU2VlOiBodHRwczovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvYmNwNDcjc2VjdGlvbi0yLjEKQEAgLTE0OCw4ICsxNTQsOCBAQCB2b2lkIFRyYWNr
QmFzZTo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAKICAgICBtX3Zh
bGlkQkNQNDdMYW5ndWFnZSA9IGVtcHR5QXRvbSgpOwogCi0gICAgYXV0byBlbGVtZW50ID0gdGhp
cy0+ZWxlbWVudCgpOwotICAgIGlmICghZWxlbWVudCkKKyAgICBhdXRvIGNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47
CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKQEAgLTE1OCw3ICsxNjQsNyBAQCB2b2lkIFRyYWNrQmFz
ZTo6c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAgICAgZWxzZQogICAg
ICAgICBtZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIGxhbmd1YWdlICciLCBsYW5ndWFnZSwgIicg
aXMgbm90IGEgdmFsaWQgQkNQIDQ3IGxhbmd1YWdlIHRhZy4iKTsKIAotICAgIGVsZW1lbnQtPmRv
Y3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOworICAgIGNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNz
YWdlKTsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMTc0LDggKzE4MCw4IEBA
IFdURkxvZ0NoYW5uZWwmIFRyYWNrQmFzZTo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB9CiAjZW5kaWYK
IAotTWVkaWFUcmFja0Jhc2U6Ok1lZGlhVHJhY2tCYXNlKFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3RyaW5nJiBsYW5n
dWFnZSkKLSAgICA6IFRyYWNrQmFzZSh0eXBlLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQorTWVkaWFU
cmFja0Jhc2U6Ok1lZGlhVHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVs
LCBjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKKyAgICA6IFRyYWNrQmFzZShjb250ZXh0LCB0
eXBlLCBpZCwgbGFiZWwsIGxhbmd1YWdlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0Jhc2UuaAppbmRleCBhZjQ1NDQxZDkzNzk0MDk1NGM1NmI2OWM1YTFhY2ZiNDFiNWEyZTIy
Li5lM2RiNDQzZGM5YTNiODg2N2JiMGEwY2Q3NTExNGUyNmRmZWMzZGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKQEAgLTI3LDE4ICsyNywxOSBAQAogCiAjaWYgRU5BQkxF
KFZJREVPKQogCisjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNs
dWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRWxlbWVudDsKLWNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBTb3VyY2VCdWZmZXI7
CitjbGFzcyBUcmFja0xpc3RCYXNlOwogCiBjbGFzcyBUcmFja0Jhc2UKICAgICA6IHB1YmxpYyBS
ZWZDb3VudGVkPFRyYWNrQmFzZT4KKyAgICAsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxw
ZXIKICNlbmRpZgpAQCAtNDksMjIgKzUwLDEwIEBAIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgeyBC
YXNlVHJhY2ssIFRleHRUcmFjaywgQXVkaW9UcmFjaywgVmlkZW9UcmFjayB9OwogICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgdmlydHVhbCBFbGVtZW50KiBl
bGVtZW50KCk7Ci0gICAgdm9pZCogb3BhcXVlUm9vdCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRN
ZWRpYUVsZW1lbnQoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50Pik7Ci0gICAgV2Vha1B0cjxIVE1M
TWVkaWFFbGVtZW50PiBtZWRpYUVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQot
CiAgICAgdmlydHVhbCBBdG9tU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAg
IHZpcnR1YWwgdm9pZCBzZXRJZChjb25zdCBBdG9tU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0K
LQogICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9Ci0gICAg
dm9pZCBzZXRMYWJlbChjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCkgeyBtX2xhYmVsID0gbGFiZWw7
IH0KLQogICAgIEF0b21TdHJpbmcgdmFsaWRCQ1A0N0xhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4g
bV92YWxpZEJDUDQ3TGFuZ3VhZ2U7IH0KICAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9sYW5ndWFnZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRMYW5ndWFnZShjb25z
dCBBdG9tU3RyaW5nJik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIGludCB1bmlxdWVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5pcXVlSWQ7IH0K
IApAQCAtNzMsNiArNjIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U291cmNlQnVmZmVyKFNv
dXJjZUJ1ZmZlciogYnVmZmVyKSB7IG1fc291cmNlQnVmZmVyID0gYnVmZmVyOyB9CiAjZW5kaWYK
IAorICAgIHZvaWQgc2V0VHJhY2tMaXN0KFRyYWNrTGlzdEJhc2UmKTsKKyAgICB2b2lkIGNsZWFy
VHJhY2tMaXN0KCk7CisgICAgVHJhY2tMaXN0QmFzZSogdHJhY2tMaXN0KCkgY29uc3Q7CisgICAg
dm9pZCogb3BhcXVlUm9vdCgpOworCiAgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9
IDA7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTgzLDkgKzc3LDExIEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJhY2tCYXNlKFR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGlkLCBjb25zdCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFu
Z3VhZ2UpOworICAgIFRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaWQsIGNvbnN0IEF0b21TdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9tU3Ry
aW5nJiBsYW5ndWFnZSk7CiAKLSAgICBXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFF
bGVtZW50IHsgbnVsbHB0ciB9OworICAgIHZpcnR1YWwgdm9pZCBzZXRJZChjb25zdCBBdG9tU3Ry
aW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGFiZWwoY29uc3Qg
QXRvbVN0cmluZyYgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9CisgICAgdmlydHVhbCB2b2lk
IHNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAgICAgU291cmNlQnVmZmVyKiBtX3NvdXJjZUJ1ZmZlciB7IG51bGxwdHIgfTsKQEAgLTEw
Miw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7
CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogI2VuZGlmCisg
ICAgV2Vha1B0cjxUcmFja0xpc3RCYXNlPiBtX3RyYWNrTGlzdDsKIH07CiAKIGNsYXNzIE1lZGlh
VHJhY2tCYXNlIDogcHVibGljIFRyYWNrQmFzZSB7CkBAIC0xMTAsNyArMTA3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogcHJvdGVj
dGVkOgotICAgIE1lZGlhVHJhY2tCYXNlKFR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlkLCBjb25z
dCBBdG9tU3RyaW5nJiBsYWJlbCwgY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpOworICAgIE1l
ZGlhVHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpZCwgY29uc3QgQXRvbVN0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21TdHJpbmcmIGxhbmd1
YWdlKTsKIAogICAgIHZvaWQgc2V0S2luZEludGVybmFsKGNvbnN0IEF0b21TdHJpbmcmKTsKIApA
QCAtMTIwLDYgKzExNywxMSBAQCBwcml2YXRlOgogICAgIEF0b21TdHJpbmcgbV9raW5kOwogfTsK
IAoraW5saW5lIHZvaWQqIHJvb3QoVHJhY2tCYXNlKiB0cmFjaykKK3sKKyAgICByZXR1cm4gdHJh
Y2stPm9wYXF1ZVJvb3QoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCmluZGV4IDAxM2Ey
M2M5ODFiYWU5YTA5NGUwMzdmY2EwMjY0OTE0NDgxNTM0OWIuLjBmMDUzNTMzN2ZmZmUxYmU2MDM1
YTE3YmIzNjIxYzg0YzE2OTQ1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tMaXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0xpc3RCYXNlLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlRyYWNrTGlzdEJhc2Uu
aCIKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlRyYWNr
RXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzksMzcgKzM4
LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KFRyYWNrTGlzdEJhc2UpOwogCi1UcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKFdlYWtQdHI8
SFRNTE1lZGlhRWxlbWVudD4gZWxlbWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKK1RyYWNrTGlzdEJhc2U6OlRyYWNrTGlzdEJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgVHlwZSB0eXBlKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCi0gICAg
LCBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICAsIG1fdHlwZSh0eXBlKQogewotICAgIEFTU0VSVCgh
Y29udGV4dCB8fCBpczxEb2N1bWVudD4oY29udGV4dCkpOwogfQogCiBUcmFja0xpc3RCYXNlOjp+
VHJhY2tMaXN0QmFzZSgpCiB7Ci0gICAgY2xlYXJFbGVtZW50KCk7CiB9CiAKLXZvaWQgVHJhY2tM
aXN0QmFzZTo6Y2xlYXJFbGVtZW50KCkKK3ZvaWQqIFRyYWNrTGlzdEJhc2U6Om9wYXF1ZVJvb3Qo
KQogewotICAgIG1fZWxlbWVudCA9IG51bGxwdHI7Ci0gICAgZm9yIChhdXRvJiB0cmFjayA6IG1f
aW5iYW5kVHJhY2tzKSB7Ci0gICAgICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7
Ci0gICAgICAgIHRyYWNrLT5jbGVhckNsaWVudCgpOwotICAgIH0KLX0KLQotRWxlbWVudCogVHJh
Y2tMaXN0QmFzZTo6ZWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZWxlbWVudC5nZXQo
KTsKLX0KLQotdm9pZCogVHJhY2tMaXN0QmFzZTo6b3BhcXVlUm9vdCgpIGNvbnN0Ci17Ci0gICAg
aWYgKGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudCgpKQotICAgICAgICByZXR1cm4g
YXNzb2NpYXRlZEVsZW1lbnQtPm9wYXF1ZVJvb3QoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBpZiAoYXV0byogcm9vdE9ic2VydmVyID0gbV9vcGFxdWVSb290T2JzZXJ2ZXIuZ2V0KCkpCisg
ICAgICAgIHJldHVybiAoKnJvb3RPYnNlcnZlcikoKTsKKyAgICByZXR1cm4gdGhpczsKIH0KIAog
dW5zaWduZWQgVHJhY2tMaXN0QmFzZTo6bGVuZ3RoKCkgY29uc3QKQEAgLTgzLDEwICs2Niw4IEBA
IHZvaWQgVHJhY2tMaXN0QmFzZTo6cmVtb3ZlKFRyYWNrQmFzZSYgdHJhY2ssIGJvb2wgc2NoZWR1
bGVFdmVudCkKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICh0cmFjay5tZWRpYUVsZW1lbnQoKSkgewotICAgICAgICBBU1NFUlQodHJhY2subWVk
aWFFbGVtZW50KCkgPT0gbV9lbGVtZW50KTsKLSAgICAgICAgdHJhY2suc2V0TWVkaWFFbGVtZW50
KG51bGxwdHIpOwotICAgIH0KKyAgICBpZiAodHJhY2sudHJhY2tMaXN0KCkgPT0gdGhpcykKKyAg
ICAgICAgdHJhY2suY2xlYXJUcmFja0xpc3QoKTsKIAogICAgIFJlZjxUcmFja0Jhc2U+IHRyYWNr
UmVmID0gKm1faW5iYW5kVHJhY2tzW2luZGV4XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RyYWNrTGlzdEJhc2UuaAppbmRleCBmYTAwZjg2MGZiZjkwOGQzZDIwNzdlMWQyZGI4NjI5YjIw
YTQyZDk5Li45ZDNlNjgxZTdkZTRhNjE5NGI2ODY3MGY1NGRmNTVlNjIyYmI5ZTJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaApAQCAtMjksMTQgKzI5LDEzIEBA
CiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKLWNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBUcmFja0Jhc2U7CiAKIGNsYXNzIFRyYWNrTGlzdEJhc2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxUcmFja0xpc3RCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewpAQCAtNDQsNiArNDMsOSBAQCBjbGFzcyBUcmFja0xp
c3RCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tMaXN0QmFzZT4sIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbgogcHVibGljOgogICAgIHZpcnR1YWwgflRyYWNrTGlzdEJhc2UoKTsKIAorICAg
IGVudW0gVHlwZSB7IEJhc2VUcmFja0xpc3QsIFRleHRUcmFja0xpc3QsIEF1ZGlvVHJhY2tMaXN0
LCBWaWRlb1RyYWNrTGlzdCB9OworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQorCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgY29udGFpbnMoVHJhY2tCYXNlJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZShUcmFja0Jhc2UmLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKTsKQEAgLTU0LDEwICs1Niwx
MCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNlPjo6ZGVyZWY7
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjbGVhckVsZW1lbnQoKTsKLSAg
ICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9pZCogb3BhcXVlUm9vdCgpIGNvbnN0
OwotICAgIFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gbWVkaWFFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGVtZW50OyB9CisgICAgdm9pZCogb3BhcXVlUm9vdCgpOworCisgICAgdXNpbmcg
T3BhcXVlUm9vdE9ic2VydmVyID0gV1RGOjpPYnNlcnZlcjx2b2lkKigpPjsKKyAgICB2b2lkIHNl
dE9wYXF1ZVJvb3RPYnNlcnZlcihjb25zdCBPcGFxdWVSb290T2JzZXJ2ZXImIG9ic2VydmVyKSB7
IG1fb3BhcXVlUm9vdE9ic2VydmVyID0gbWFrZVdlYWtQdHIob2JzZXJ2ZXIpOyB9OwogCiAgICAg
Ly8gTmVlZHMgdG8gYmUgcHVibGljIHNvIHRyYWNrcyBjYW4gY2FsbCBpdAogICAgIHZvaWQgc2No
ZWR1bGVDaGFuZ2VFdmVudCgpOwpAQCAtNjYsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJhY2tMaXN0QmFz
ZShXZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgVHJhY2tMaXN0QmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVHlwZSk7CiAKICAgICB2
b2lkIHNjaGVkdWxlQWRkVHJhY2tFdmVudChSZWY8VHJhY2tCYXNlPiYmKTsKICAgICB2b2lkIHNj
aGVkdWxlUmVtb3ZlVHJhY2tFdmVudChSZWY8VHJhY2tCYXNlPiYmKTsKQEAgLTgwLDEwICs4Miwx
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9
CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICBX
ZWFrUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBUeXBlIG1fdHlwZTsKKyAg
ICBXZWFrUHRyPE9wYXF1ZVJvb3RPYnNlcnZlcj4gbV9vcGFxdWVSb290T2JzZXJ2ZXI7CiAgICAg
Ym9vbCBtX2lzQ2hhbmdlRXZlbnRTY2hlZHVsZWQgeyBmYWxzZSB9OwogfTsKIAoraW5saW5lIHZv
aWQqIHJvb3QoVHJhY2tMaXN0QmFzZSogdHJhY2tMaXN0KQoreworICAgIHJldHVybiB0cmFja0xp
c3QtPm9wYXF1ZVJvb3QoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
aWRlb1RyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFjay5jcHAK
aW5kZXggZWQ3NTVhMjgwZWYzZjgzYWE5MTZlMjE5YzEyMWIwZDdhYjQ5YjNjNi4uOTdmMDFhY2M2
NTlhMGRjMGU1MWQwZWUxOGQwMzY0MDM2MTlhY2Y0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZpZGVvVHJhY2suY3BwCkBAIC0zNCw3ICszNCw2IEBACiAKICNpZiBFTkFCTEUoVklERU8p
CiAKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja0xp
c3QuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtODAsOSArNzksOCBA
QCBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb1RyYWNrOjpjb21tZW50YXJ5S2V5d29yZCgpCiAgICAg
cmV0dXJuIGNvbW1lbnRhcnk7CiB9CiAKLVZpZGVvVHJhY2s6OlZpZGVvVHJhY2soVmlkZW9UcmFj
a0NsaWVudCYgY2xpZW50LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQotICAgIDog
TWVkaWFUcmFja0Jhc2UoTWVkaWFUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRyYWNrUHJpdmF0ZS5p
ZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1YWdlKCkpCi0gICAg
LCBtX2NsaWVudCgmY2xpZW50KQorVmlkZW9UcmFjazo6VmlkZW9UcmFjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAg
IDogTWVkaWFUcmFja0Jhc2UoY29udGV4dCwgTWVkaWFUcmFja0Jhc2U6OlZpZGVvVHJhY2ssIHRy
YWNrUHJpdmF0ZS5pZCgpLCB0cmFja1ByaXZhdGUubGFiZWwoKSwgdHJhY2tQcml2YXRlLmxhbmd1
YWdlKCkpCiAgICAgLCBtX3ByaXZhdGUodHJhY2tQcml2YXRlKQogICAgICwgbV9zZWxlY3RlZCh0
cmFja1ByaXZhdGUuc2VsZWN0ZWQoKSkKIHsKQEAgLTEzMCw4ICsxMjgsMjEgQEAgdm9pZCBWaWRl
b1RyYWNrOjpzZXRTZWxlY3RlZChjb25zdCBib29sIHNlbGVjdGVkKQogICAgIG1fc2VsZWN0ZWQg
PSBzZWxlY3RlZDsKICAgICBtX3ByaXZhdGUtPnNldFNlbGVjdGVkKHNlbGVjdGVkKTsKIAotICAg
IGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnZpZGVvVHJhY2tTZWxlY3RlZENoYW5n
ZWQoKnRoaXMpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7
CisgICAgICAgIGNsaWVudC52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKCp0aGlzKTsKKyAgICB9
KTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjphZGRDbGllbnQoVmlkZW9UcmFja0NsaWVudCYgY2xp
ZW50KQoreworICAgIEFTU0VSVCghbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1f
Y2xpZW50cy5hZGQoY2xpZW50KTsKK30KKwordm9pZCBWaWRlb1RyYWNrOjpjbGVhckNsaWVudChW
aWRlb1RyYWNrQ2xpZW50JiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlu
cyhjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKGNsaWVudCk7CiB9CiAKIHNpemVfdCBW
aWRlb1RyYWNrOjppbmJhbmRUcmFja0luZGV4KCkKQEAgLTE0MiwxNiArMTUzLDI1IEBAIHNpemVf
dCBWaWRlb1RyYWNrOjppbmJhbmRUcmFja0luZGV4KCkKIHZvaWQgVmlkZW9UcmFjazo6c2VsZWN0
ZWRDaGFuZ2VkKGJvb2wgc2VsZWN0ZWQpCiB7CiAgICAgc2V0U2VsZWN0ZWQoc2VsZWN0ZWQpOwor
ICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNs
aWVudC52aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBWaWRlb1RyYWNrOjppZENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgaWQpCiB7CiAgICAgc2V0
SWQoaWQpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0byYgY2xpZW50KSB7Cisg
ICAgICAgIGNsaWVudC52aWRlb1RyYWNrSWRDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAog
dm9pZCBWaWRlb1RyYWNrOjpsYWJlbENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYgbGFiZWwpCiB7
CiAgICAgc2V0TGFiZWwobGFiZWwpOworICAgIG1fY2xpZW50cy5mb3JFYWNoKFt0aGlzXSAoYXV0
byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC52aWRlb1RyYWNrTGFiZWxDaGFuZ2VkKCp0aGlz
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBWaWRlb1RyYWNrOjpsYW5ndWFnZUNoYW5nZWQoY29uc3Qg
QXRvbVN0cmluZyYgbGFuZ3VhZ2UpCkBAIC0xNjEsMTQgKzE4MSwxMSBAQCB2b2lkIFZpZGVvVHJh
Y2s6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBW
aWRlb1RyYWNrOjp3aWxsUmVtb3ZlKCkKIHsKLSAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRy
KG1lZGlhRWxlbWVudCgpLmdldCgpKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVy
bjsKLSAgICBlbGVtZW50LT5yZW1vdmVWaWRlb1RyYWNrKCp0aGlzKTsKKyAgICBtX2NsaWVudHMu
Zm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgeworICAgICAgICBjbGllbnQud2lsbFJlbW92
ZVZpZGVvVHJhY2soKnRoaXMpOworICAgIH0pOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKLQogdm9pZCBWaWRlb1RyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21TdHJpbmcmIGtpbmQpCiB7
CiAgICAgLy8gMTAuMSBraW5kLCBvbiBzZXR0aW5nOgpAQCAtMTgyLDEyICsxOTksMTEgQEAgdm9p
ZCBWaWRlb1RyYWNrOjpzZXRLaW5kKGNvbnN0IEF0b21TdHJpbmcmIGtpbmQpCiAKICAgICAvLyAz
LiBJZiB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGlzIHRyYWNrIGlzIG5vdCBudWxs
LCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlCiAgICAgLy8gZXZlbnQgbmFtZWQg
Y2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci52aWRlb1RyYWNrcy4KLSAgICBpZiAobV9zb3VyY2VCdWZm
ZXIpCi0gICAgICAgIG1fc291cmNlQnVmZmVyLT52aWRlb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKLQogICAgIC8vIDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50
IG5hbWVkIGNoYW5nZSBhdCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJlZmVyZW5jZWQgYnkK
ICAgICAvLyB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50
LgotICAgIG1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygpLnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKKyAgICBtX2NsaWVudHMuZm9yRWFjaChbdGhpc10gKGF1dG8mIGNsaWVudCkgewor
ICAgICAgICBjbGllbnQudmlkZW9UcmFja0tpbmRDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBWaWRlb1RyYWNrOjpzZXRMYW5ndWFnZShjb25zdCBBdG9tU3RyaW5nJiBsYW5ndWFn
ZSkKQEAgLTE5OSw1NCArMjE1LDQ1IEBAIHZvaWQgVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoY29u
c3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2UpCiAgICAgLy8gc2hhcmVkIGJldHdlZW4gYWxsIHRyYWNr
cyB0aGF0IHN1cHBvcnQgc2V0dGluZyBsYW5ndWFnZS4KIAogICAgIC8vIDIuIFVwZGF0ZSB0aGlz
IGF0dHJpYnV0ZSB0byB0aGUgbmV3IHZhbHVlLgotICAgIE1lZGlhVHJhY2tCYXNlOjpzZXRMYW5n
dWFnZShsYW5ndWFnZSk7CisgICAgVHJhY2tCYXNlOjpzZXRMYW5ndWFnZShsYW5ndWFnZSk7CiAK
ICAgICAvLyAzLiBJZiB0aGUgc291cmNlQnVmZmVyIGF0dHJpYnV0ZSBvbiB0aGlzIHRyYWNrIGlz
IG5vdCBudWxsLCB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlCiAgICAgLy8gZXZl
bnQgbmFtZWQgY2hhbmdlIGF0IHNvdXJjZUJ1ZmZlci52aWRlb1RyYWNrcy4KLSAgICBpZiAobV9z
b3VyY2VCdWZmZXIpCi0gICAgICAgIG1fc291cmNlQnVmZmVyLT52aWRlb1RyYWNrcygpLnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKLQogICAgIC8vIDQuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2lt
cGxlIGV2ZW50IG5hbWVkIGNoYW5nZSBhdCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0IHJlZmVy
ZW5jZWQgYnkKICAgICAvLyB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVk
aWFFbGVtZW50LgotICAgIGlmIChtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgbWVkaWFFbGVtZW50
KCktPmVuc3VyZVZpZGVvVHJhY2tzKCkuc2NoZWR1bGVDaGFuZ2VFdmVudCgpOworICAgIG1fY2xp
ZW50cy5mb3JFYWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgIGNsaWVudC52aWRlb1Ry
YWNrTGFuZ3VhZ2VDaGFuZ2VkKCp0aGlzKTsKKyAgICB9KTsKIH0KIAotI2VuZGlmCi0KIHZvaWQg
VmlkZW9UcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKIHsKICAgICBzd2l0Y2ggKG1fcHJp
dmF0ZS0+a2luZCgpKSB7CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU6
Ci0gICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjphbHRlcm5hdGl2ZUtleXdvcmQo
KSk7CisgICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6YWx0ZXJuYXRpdmVLZXl3b3JkKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM6Ci0g
ICAgICAgIHNldEtpbmRJbnRlcm5hbChWaWRlb1RyYWNrOjpjYXB0aW9uc0tleXdvcmQoKSk7Cisg
ICAgICAgIHNldEtpbmQoVmlkZW9UcmFjazo6Y2FwdGlvbnNLZXl3b3JkKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjoKLSAgICAgICAgc2V0S2lu
ZEludGVybmFsKFZpZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKFZp
ZGVvVHJhY2s6Om1haW5LZXl3b3JkKCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRl
b1RyYWNrUHJpdmF0ZTo6U2lnbjoKLSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6
OnNpZ25LZXl3b3JkKCkpOworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OnNpZ25LZXl3b3Jk
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6U3VidGl0
bGVzOgotICAgICAgICBzZXRLaW5kSW50ZXJuYWwoVmlkZW9UcmFjazo6c3VidGl0bGVzS2V5d29y
ZCgpKTsKKyAgICAgICAgc2V0S2luZChWaWRlb1RyYWNrOjpzdWJ0aXRsZXNLZXl3b3JkKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Q29tbWVudGFyeToK
LSAgICAgICAgc2V0S2luZEludGVybmFsKFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkp
OworICAgICAgICBzZXRLaW5kKFZpZGVvVHJhY2s6OmNvbW1lbnRhcnlLZXl3b3JkKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZToKLSAgICAgICAg
c2V0S2luZEludGVybmFsKGVtcHR5U3RyaW5nKCkpOworICAgICAgICBzZXRLaW5kKGVtcHR5U3Ry
aW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIFZpZGVvVHJhY2s6OnNldE1lZGlhRWxlbWVudChXZWFrUHRyPEhUTUxNZWRp
YUVsZW1lbnQ+IGVsZW1lbnQpCi17Ci0gICAgVHJhY2tCYXNlOjpzZXRNZWRpYUVsZW1lbnQoZWxl
bWVudCk7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIHZvaWQgVmlkZW9UcmFjazo6
c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAppbmRleCAxNzllNzEzYmMz
NjY5ZTVkNDQ4NDE3ZTQyYmUyOWJiMTBjMzkxODg4Li5lZjg0ODhlN2I1OTgxZjEzMTcyMmJmYmQ2
NzZkNmY0YjE2ZGY1MWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Zp
ZGVvVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApA
QCAtMzAsMjMgKzMwLDMwIEBACiAKICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKICNpbmNsdWRlICJW
aWRlb1RyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhRGVzY3JpcHRpb247CiBjbGFzcyBWaWRlb1Ry
YWNrOworY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAKLWNsYXNzIFZpZGVvVHJhY2tDbGllbnQgewor
Y2xhc3MgVmlkZW9UcmFja0NsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxWaWRlb1RyYWNr
Q2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VmlkZW9UcmFja0NsaWVudCgpID0gZGVm
YXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1Ry
YWNrJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrSWRDaGFuZ2VkKFZpZGVvVHJh
Y2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0tpbmRDaGFuZ2VkKFZpZGVvVHJh
Y2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlkZW9UcmFja0xhYmVsQ2hhbmdlZChWaWRlb1Ry
YWNrJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tMYW5ndWFnZUNoYW5nZWQoVmlk
ZW9UcmFjayYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2Vk
KFZpZGVvVHJhY2smKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZVZpZGVvVHJhY2so
VmlkZW9UcmFjayYpIHsgfQogfTsKIAogY2xhc3MgVmlkZW9UcmFjayBmaW5hbCA6IHB1YmxpYyBN
ZWRpYVRyYWNrQmFzZSwgcHJpdmF0ZSBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxWaWRlb1RyYWNrPiBjcmVhdGUoVmlkZW9UcmFja0NsaWVudCYgY2xp
ZW50LCBWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQorICAgIHN0YXRpYyBSZWY8Vmlk
ZW9UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFZpZGVvVHJh
Y2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBWaWRlb1RyYWNrKGNsaWVudCwgdHJhY2tQcml2YXRlKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFZpZGVvVHJhY2soY29udGV4dCwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQog
ICAgIHZpcnR1YWwgflZpZGVvVHJhY2soKTsKIApAQCAtNjAsMjYgKzY3LDIzIEBAIHB1YmxpYzoK
ICAgICBib29sIHNlbGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3RlZDsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRTZWxlY3RlZChjb25zdCBib29sKTsKIAotICAgIHZvaWQgY2xlYXJDbGll
bnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIFZpZGVvVHJhY2tDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBhZGRDbGllbnQo
VmlkZW9UcmFja0NsaWVudCYpOworICAgIHZvaWQgY2xlYXJDbGllbnQoVmlkZW9UcmFja0NsaWVu
dCYpOwogCiAgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKIAotI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCiAgICAgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAg
ICB2b2lkIHNldExhbmd1YWdlKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKLSNlbmRpZgogCiAg
ICAgY29uc3QgTWVkaWFEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHZv
aWQgc2V0UHJpdmF0ZShWaWRlb1RyYWNrUHJpdmF0ZSYpOwotICAgIHZvaWQgc2V0TWVkaWFFbGVt
ZW50KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4pIG92ZXJyaWRlOwogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIHZvaWQgc2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQq
KSBmaW5hbDsKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFZpZGVvVHJhY2soVmlkZW9UcmFja0Ns
aWVudCYsIFZpZGVvVHJhY2tQcml2YXRlJik7CisgICAgVmlkZW9UcmFjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgVmlkZW9UcmFja1ByaXZhdGUmKTsKIAogICAgIGJvb2wgaXNWYWxpZEtpbmQo
Y29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwogCkBAIC0xMDAsNyArMTA0LDggQEAgcHJp
dmF0ZToKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiVmlkZW9UcmFjayI7IH0KICNlbmRpZgogCi0gICAgVmlkZW9UcmFja0NsaWVudCogbV9jbGll
bnQgeyBudWxscHRyIH07CisgICAgV2Vha1B0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNr
TGlzdDsKKyAgICBXZWFrSGFzaFNldDxWaWRlb1RyYWNrQ2xpZW50PiBtX2NsaWVudHM7CiAgICAg
UmVmPFZpZGVvVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgYm9vbCBtX3NlbGVjdGVkIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmlkbAppbmRl
eCA3NDcyM2RiYWRkNWU5ZTM3MWMzZjJkMTY3YmJkNzUxNzIxNTU4YzBkLi4yYzYwYjJiMmU3MDY1
MzM4OGQ5YTRlY2MwMDM5YTMyZjM2NjBiMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZpZGVvVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VmlkZW9UcmFjay5pZGwKQEAgLTI1LDggKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPVZJ
REVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEVsZW1lbnRSb290LAotICAgIEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCwKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlLAogICAgIEV4cG9zZWQ9
V2luZG93CiBdIGludGVyZmFjZSBWaWRlb1RyYWNrIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRl
b1RyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0
LmNwcAppbmRleCA4NDg2NTY2ZDE4Yzg0ZTZmNGE2OGFhZmJlOGEzYzA1ODI0NzRkM2IwLi43YTkx
YTU5MWVhYWE4ZjIxNDZjNGViMzk5NzJiNWE3YjM5NjlkMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmNwcApAQCAtMjksMTMgKzI5LDEyIEBACiAKICNp
bmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgogCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5o
IgogI2luY2x1ZGUgIlZpZGVvVHJhY2suaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WaWRl
b1RyYWNrTGlzdDo6VmlkZW9UcmFja0xpc3QoV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBlbGVt
ZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogVHJhY2tMaXN0QmFz
ZShlbGVtZW50LCBjb250ZXh0KQorVmlkZW9UcmFja0xpc3Q6OlZpZGVvVHJhY2tMaXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBUcmFja0xpc3RCYXNlKGNvbnRleHQs
IFRyYWNrTGlzdEJhc2U6OlZpZGVvVHJhY2tMaXN0KQogewogfQogCkBAIC01Myw4ICs1Miw4IEBA
IHZvaWQgVmlkZW9UcmFja0xpc3Q6OmFwcGVuZChSZWY8VmlkZW9UcmFjaz4mJiB0cmFjaykKICAg
ICB9CiAgICAgbV9pbmJhbmRUcmFja3MuaW5zZXJ0KGluc2VydGlvbkluZGV4LCB0cmFjay5wdHIo
KSk7CiAKLSAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFF
bGVtZW50KCkgPT0gbWVkaWFFbGVtZW50KCkpOwotICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQo
bWVkaWFFbGVtZW50KCkpOworICAgIGlmICghdHJhY2stPnRyYWNrTGlzdCgpKQorICAgICAgICB0
cmFjay0+c2V0VHJhY2tMaXN0KCp0aGlzKTsKIAogICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudChX
VEZNb3ZlKHRyYWNrKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZpZGVvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tM
aXN0LmgKaW5kZXggOTY2MGRmNmZlMjk3NzRkZGRmM2JjOTM2ZjM0NDEyOTRkOGMwZGFiMy4uMjVj
ZWNiZmViYmU0YzJhYWJmYzI3N2YyZDYwODQxNjgyY2VmNjA2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaApAQCAtMzUsOSArMzUsOSBAQCBjbGFzcyBWaWRl
b1RyYWNrOwogCiBjbGFzcyBWaWRlb1RyYWNrTGlzdCBmaW5hbCA6IHB1YmxpYyBUcmFja0xpc3RC
YXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoV2Vh
a1B0cjxIVE1MTWVkaWFFbGVtZW50PiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvVHJhY2tMaXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGlzdCA9IGFkb3B0UmVm
KCpuZXcgVmlkZW9UcmFja0xpc3Qob3duZXIsIGNvbnRleHQpKTsKKyAgICAgICAgYXV0byBsaXN0
ID0gYWRvcHRSZWYoKm5ldyBWaWRlb1RyYWNrTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGxpc3Qt
PnN1c3BlbmRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFZpZGVvVHJhY2tMaXN0
KFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAg
ICBWaWRlb1RyYWNrTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBjb25zdCBj
aGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiB9OwpAQCAtNjIsNCArNjIs
OCBAQCBzdGF0aWNfYXNzZXJ0KHNpemVvZihWaWRlb1RyYWNrTGlzdCkgPT0gc2l6ZW9mKFRyYWNr
TGlzdEJhc2UpLCAiIik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpWaWRlb1RyYWNrTGlzdCkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VHJhY2tMaXN0QmFzZSYgdHJhY2tMaXN0KSB7IHJldHVy
biB0cmFja0xpc3QudHlwZSgpID09IFdlYkNvcmU6OlRyYWNrTGlzdEJhc2U6OlZpZGVvVHJhY2tM
aXN0OyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUo
VklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tM
aXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCmlu
ZGV4IGFiMmI3ZTZjMjNlYmUwZTNiODBiNjczYWI5NTk4YTQxNzg4ZGU3ZGIuLmE2Y2NjM2M2ZGM5
ODZkNzNlMDIxMzFkNWJhNjZhZTQzNzg2YjJlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVmlkZW9UcmFja0xpc3QuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgQWN0aXZl
RE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVZJREVPLAotICAgIEdlbmVyYXRlSXNSZWFjaGFi
bGU9SW1wbEVsZW1lbnRSb290LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGUsCiAgICAgR2VuZXJh
dGVBZGRPcGFxdWVSb290LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBWaWRlb1Ry
YWNrTGlzdCA6IEV2ZW50VGFyZ2V0IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>