<?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>201936</bug_id>
          
          <creation_ts>2019-09-18 12:23:37 -0700</creation_ts>
          <short_desc>BlobRegistry no longer needs SessionIDs</short_desc>
          <delta_ts>2019-09-18 15:31:20 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tkent</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572020</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-18 12:23:37 -0700</bug_when>
    <thetext>BlobRegistry no longer need SessionIDs, now that we have a single session per WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572041</commentid>
    <comment_count>1</comment_count>
      <attachid>379063</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-18 13:05:34 -0700</bug_when>
    <thetext>Created attachment 379063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572042</commentid>
    <comment_count>2</comment_count>
      <attachid>379064</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-18 13:07:53 -0700</bug_when>
    <thetext>Created attachment 379064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572052</commentid>
    <comment_count>3</comment_count>
      <attachid>379067</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-18 13:32:34 -0700</bug_when>
    <thetext>Created attachment 379067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572103</commentid>
    <comment_count>4</comment_count>
      <attachid>379067</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-09-18 14:52:48 -0700</bug_when>
    <thetext>Comment on attachment 379067
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572126</commentid>
    <comment_count>5</comment_count>
      <attachid>379067</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-18 15:30:47 -0700</bug_when>
    <thetext>Comment on attachment 379067
Patch

Clearing flags on attachment: 379067

Committed r250061: &lt;https://trac.webkit.org/changeset/250061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572127</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-18 15:30:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572128</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-18 15:31:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/55495218&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379063</attachid>
            <date>2019-09-18 13:05:34 -0700</date>
            <delta_ts>2019-09-18 13:07:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201936-20190918130534.patch</filename>
            <type>text/plain</type>
            <size>118768</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ2MjEyMjRiY2YxMzQ2
MGQxNzljMGMwNmQ1M2IzZmRkN2E5YTYwMS4uYTAwNjA2ODQxYzQxNzkxZTJjYzA3YWVmNDY1YTAx
NjliZmIxMzUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOS0wOS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEJsb2JSZWdpc3RyeSBubyBs
b25nZXIgbmVlZCBTZXNzaW9uSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDE5MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBCbG9iUmVnaXN0cnkgbm8gbG9uZ2VyIG5lZWQgU2Vzc2lvbklEcywgbm93
IHRoYXQgd2UgaGF2ZSBhIHNpbmdsZSBzZXNzaW9uIHBlciBXZWJQcm9jZXNzLgorCisgICAgICAg
ICogTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRmlsZVN5c3RlbTo6Z2V0RmlsZSk6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBp
L0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bUZpbGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtRmlsZUVudHJ5Ojpm
aWxlKToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5o
OgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNv
bHZlV2l0aFR5cGVBbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNC
bG9iKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlPd25lcjo6YmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6fkZldGNoTG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydExvYWRpbmdCbG9iVVJMKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXI6OmNy
ZWF0ZVJlY29yZGluZ0RhdGFCbG9iKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VSZWdp
c3RyeTo6dW5yZWdpc3RlclVSTCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2
ZVJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6OnNlbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tG
b3JJbmRleGVkREIpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3
cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFu
c2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OkRhdGFUcmFuc2Zlcik6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJ
dGVtTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
cklucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JE
cmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFy
Z2V0KToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogZWRpdGluZy9S
ZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFj
ZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyIGNv
bnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERh
dGFUcmFuc2ZlciBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZp
bGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6
cmVhZEJ1ZmZlcik6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50
Rm9yRmlsZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVudEZvckRhdGEpOgorICAg
ICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc3RvcmVBdHRh
Y2htZW50RWxlbWVudHNJbkZyYWdtZW50KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYjo6QmxvYik6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjp+QmxvYik6CisgICAg
ICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QmxvYjo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
QmxvYjo6c2xpY2UgY29uc3QpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5pZGw6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZVdpdGhS
ZWxhdGl2ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGU6OkZpbGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZS5pZGw6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6On5GaWxlUmVhZGVyTG9h
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OnN0YXJ0KToKKyAgICAg
ICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMRm9yU2xpY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6CisgICAgICAgICogaHRtbC9GaWxlTGlz
dENyZWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRGlyZWN0b3J5RmlsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUxpc3RDcmVhdG9yOjpjcmVhdGVGaWxlTGlzdCk6CisgICAgICAg
ICogaHRtbC9GaWxlTGlzdENyZWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVMaXN0Q3Jl
YXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2lu
Z0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvQmxvYik6CisgICAgICAgICog
aHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1h
bmFnZXI6OnJldm9rZSk6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpzdG9w
KToKKyAgICAgICAgKiBodG1sL1VSTFJlZ2lzdHJ5Lmg6CisgICAgICAgICogbG9hZGVyL1BvbGlj
eUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6ZXh0ZW5kQmxv
YlVSTExpZmV0aW1lSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmNyZWF0ZUZp
bGUpOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGVPcGFxdWVXaXRoQmxv
YkJvZHlSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6
ZGlzcGF0Y2hGZXRjaEV2ZW50KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisK
IDIwMTktMDktMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIgSVBDIG5v
IGxvbmdlciBuZWVkIGEgc2Vzc2lvbklECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmMDFiNzYwMTdjNTViZWI1YTJk
ZWMwYjYyYjAyZmQyYTgzNzk2MzYuLjgzNzA2ZDdiYjM0MzkwNDNkYThjM2QxYWJhMTZlYzVjMjA3
NDQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTktMDktMTggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iUmVnaXN0cnkgbm8gbG9uZ2VyIG5l
ZWQgU2Vzc2lvbklEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxOTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBuZWVkIFNlc3Npb25JRHMsIG5vdyB0aGF0IHdl
IGhhdmUgYSBzaW5nbGUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JSZWdp
c3RyeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJM
KToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTE9w
dGlvbmFsbHlGaWxlQmFja2VkKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6
OnVucmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5
UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoKKwogMjAxOS0wOS0xOCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjppbnN0YWxsU2VydmljZVdvcmtlciBJUEMgbm8gbG9uZ2VyIG5lZWQgYSBzZXNzaW9uSUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAxNWQ1OGJjMGMxN2I3ZWFlMTU2ODQ1ZGJj
MGRlYjRhMzIwOWJhNTJmLi41M2ZjNGM2MjI4ZDA1ZWQ5MzY0NmRkODU3M2I3YmI3Y2IzNWExNDFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDkt
MTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBCbG9iUmVnaXN0
cnkgbm8gbG9uZ2VyIG5lZWQgU2Vzc2lvbklEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxOTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBuZWVkIFNlc3Npb25J
RHMsIG5vdyB0aGF0IHdlIGhhdmUgYSBzaW5nbGUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAx
OS0wOS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENhY2hl
U3RvcmFnZVByb3ZpZGVyOjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZG9lcyBub3Qg
bmVlZCB0byB0YWtlIGluIGEgU2Vzc2lvbklECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggNjg0NWQ4ZWQ5ZmU4NjJhOGU0MDc4ZTU5NDA1NGU5ZWQ1OWQwMzQ0ZS4uNDY5YWFjMDFjZDM3
MGU2Yzg2ZWE5NWYwYjA2NGE3ZDFhMjgyNzdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA5LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBuZWVkIFNlc3Npb25JRHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTkzNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJsb2JSZWdp
c3RyeSBubyBsb25nZXIgbmVlZCBTZXNzaW9uSURzLCBub3cgdGhhdCB3ZSBoYXZlIGEgc2luZ2xl
IHNlc3Npb24gcGVyIFdlYlByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorCiAyMDE5LTA5LTE2ICBGdWppaSBIaXJvbm9yaSAgPEhp
cm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb11bY3VybF0gRG9uJ3Qg
Y29tcGlsZSB1bnVzZWQgQ2VydGlmaWNhdGVDRldpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA5ZjRhMTBiNzEx
YmYzNjNmMGE4YTIzNGM5ZTMyNzFmNTJlZTc2ZmIzLi4xNjFhZTAzNDE0OWI1ZjRiMGEzMjQ3Njlm
MzE3NWEwMDc0MTM2OWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC0zMzMsMTcgKzMzMywxNyBAQCB2b2lkIERPTUZp
bGVTeXN0ZW06OmdldEVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZpbGVT
eXN0ZW1EaXJlY3RvcgogICAgIH0pOwogfQogCi12b2lkIERPTUZpbGVTeXN0ZW06OmdldEZpbGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmlsZVN5c3RlbUZpbGVFbnRyeSYgZmls
ZUVudHJ5LCBHZXRGaWxlQ2FsbGJhY2smJiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIERPTUZp
bGVTeXN0ZW06OmdldEZpbGUoRmlsZVN5c3RlbUZpbGVFbnRyeSYgZmlsZUVudHJ5LCBHZXRGaWxl
Q2FsbGJhY2smJiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CiAgICAgYXV0byB2aXJ0dWFsUGF0aCA9
IGZpbGVFbnRyeS52aXJ0dWFsUGF0aCgpOwogICAgIGF1dG8gZnVsbFBhdGggPSBldmFsdWF0ZVBh
dGgodmlydHVhbFBhdGgpOwotICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbY29udGV4dCA9IG1h
a2VSZWYoY29udGV4dCksIGZ1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwgdmly
dHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgbV93b3Jr
UXVldWUtPmRpc3BhdGNoKFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZp
cnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBh
dXRvIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gdmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUoZnVs
bFBhdGgsIFdURk1vdmUodmlydHVhbFBhdGgpLCBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwot
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KSwgZnVs
bFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxpZGF0ZWRWaXJ0dWFsUGF0aCA9
IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxsYmFj
ayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2YWxp
ZGF0ZWRWaXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2YWxpZGF0ZWRWaXJ0dWFsUGF0aCks
IGNvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICh2YWxpZGF0ZWRWaXJ0dWFsUGF0aC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sodmFsaWRhdGVkVmlydHVhbFBh
dGgucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uQ2FsbGJhY2soRmlsZTo6Y3JlYXRlKGNvbnRleHQtPnNlc3Npb25JRCgpLCBm
dWxsUGF0aCkpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVh
dGUoZnVsbFBhdGgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaAppbmRleCAzODM2Yjg3N2E2
N2Q2YmQ0YzM5ODI4OTU3ZDVmNTQ2YTQ4ZmI2MzY2Li43NGEzY2U2YzNlYzVkZGYwNWYwMzQyNjYx
Zjc2MDczYzVlNTU5YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9ET01GaWxlU3lzdGVtLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRy
eSYsIGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1EaXJlY3RvcnlF
bnRyeTo6RmxhZ3MmLCBHZXRFbnRyeUNhbGxiYWNrJiYpOwogCiAgICAgdXNpbmcgR2V0RmlsZUNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZjxGaWxlPj4mJik+Owot
ICAgIHZvaWQgZ2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbUZpbGVF
bnRyeSYsIEdldEZpbGVDYWxsYmFjayYmKTsKKyAgICB2b2lkIGdldEZpbGUoRmlsZVN5c3RlbUZp
bGVFbnRyeSYsIEdldEZpbGVDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBE
T01GaWxlU3lzdGVtKFJlZjxGaWxlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAppbmRleCA4ODI5MDQz
Yzg0Y2U5MTQ1ODY5OGE2YWYyNjBiZjIwYmQyM2ZlZjVmLi5lOGM5ZWYzOGU5MzJlNGU3YTU2Y2Q5
ZGY0NDhhNjJjNzVjOTcxYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCkBAIC0zOCw5ICszOCw5IEBA
IEZpbGVTeXN0ZW1GaWxlRW50cnk6OkZpbGVTeXN0ZW1GaWxlRW50cnkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgRE9NRmlsCiB7CiB9CiAKLXZvaWQgRmlsZVN5c3RlbUZpbGVFbnRy
eTo6ZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RmlsZUNhbGxiYWNr
PiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFj
aykKK3ZvaWQgRmlsZVN5c3RlbUZpbGVFbnRyeTo6ZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmIHN1
Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKIHsK
LSAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZShjb250ZXh0LCAqdGhpcywgW3N1Y2Nlc3NDYWxsYmFj
ayA9IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjayA9IFdURk1vdmUoZXJy
b3JDYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIHsKKyAgICBmaWxlc3lzdGVtKCkuZ2V0RmlsZSgq
dGhpcywgW3N1Y2Nlc3NDYWxsYmFjayA9IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JD
YWxsYmFjayA9IFdURk1vdmUoZXJyb3JDYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIHsKICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgaWYgKGVycm9yQ2Fs
bGJhY2spCiAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRE9NRXhj
ZXB0aW9uOjpjcmVhdGUocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgK
aW5kZXggYWI5NmUwMjE0MGJjM2NmODk1NmM2ZGViYWE3NDRjMThkYzJjMjMxNS4uZWE3OWUzYjM5
NGMyYTEzZDNmYmRkN2I2YWE0YmExYTAzYTA5YjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZVN5c3Rl
bUZpbGVFbnRyeShjb250ZXh0LCBmaWxlc3lzdGVtLCB2aXJ0dWFsUGF0aCkpOwogICAgIH0KIAot
ICAgIHZvaWQgZmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEZpbGVDYWxsYmFjaz4m
JiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgPSBudWxscHRyKTsKKyAgICB2b2lkIGZpbGUoUmVm
PEZpbGVDYWxsYmFjaz4mJiwgUmVmUHRyPEVycm9yQ2FsbGJhY2s+JiYgPSBudWxscHRyKTsKIAog
cHJpdmF0ZToKICAgICBib29sIGlzRmlsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRmlsZUVudHJ5LmlkbAppbmRleCBkYWQ5N2I5YzQwNzBhY2NhZjdlYjNmMzFkNzdlNWM5Mzk1
NTQwYmFjLi4yZDczNTJiNTEyZDBiYjdlYWNlYzZhMDU5MmU4ZmVlYTkxODM5YzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRy
eS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1G
aWxlRW50cnkuaWRsCkBAIC0yNiw1ICsyNiw1IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1E
aXJlY3RvcnlVcGxvYWQsCiBdIGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZUVudHJ5IDogRmlsZVN5
c3RlbUVudHJ5IHsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCBm
aWxlKEZpbGVDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2s/
IGVycm9yQ2FsbGJhY2spOworICAgIHZvaWQgZmlsZShGaWxlQ2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBvcHRpb25hbCBFcnJvckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggYWQyNmIzNGNmNjE1YTEx
NTQxYWY4MTA1YzJiODlkYTM1Y2IzYTcwNC4uMjkxODU0YWUxN2M3ZmQzYTRmNWNhMjdkMDgxNWQy
MzgxNjYzMDViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cApAQCAtNzUsNyArNzUsNyBAQCBFeGNlcHRpb25PcjxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0
cmFjdChJbml0JiYgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgfSk7CiB9CiAKLU9w
dGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBGb3JtRGF0YSYgZm9ybURhdGEpCitPcHRpb25hbDxGZXRjaEJvZHk+IEZldGNo
Qm9keTo6ZnJvbUZvcm1EYXRhKEZvcm1EYXRhJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIWZv
cm1EYXRhLmlzRW1wdHkoKSk7CiAKQEAgLTg4LDcgKzg4LDcgQEAgT3B0aW9uYWw8RmV0Y2hCb2R5
PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZvcm1E
YXRhJgogICAgIGF1dG8gdXJsID0gZm9ybURhdGEuYXNCbG9iVVJMKCk7CiAgICAgaWYgKCF1cmwu
aXNOdWxsKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFByb3Blcmx5IHNldCBtaW1lIHR5cGUgYW5k
IHNpemUgb2YgdGhlIGJsb2IuCi0gICAgICAgIFJlZjxjb25zdCBCbG9iPiBibG9iID0gQmxvYjo6
ZGVzZXJpYWxpemUoc2Vzc2lvbklELCB1cmwsIHsgfSwgeyB9LCB7IH0pOworICAgICAgICBSZWY8
Y29uc3QgQmxvYj4gYmxvYiA9IEJsb2I6OmRlc2VyaWFsaXplKHVybCwgeyB9LCB7IH0sIHsgfSk7
CiAgICAgICAgIHJldHVybiBGZXRjaEJvZHkgeyBXVEZNb3ZlKGJsb2IpIH07CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiMjdlMGE1MTg3YWU4
YmY4NGJkNzkxN2M3ZTcxMDU4ZTExYjk4NTQ3Li5jM2Y5NmZmNGFmZmYyMGQxMTM2NDQzM2ExZjJh
Y2Y2YWQxZDlmYjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxGZXRjaEJv
ZHk+IGV4dHJhY3QoSW5pdCYmLCBTdHJpbmcmKTsKICAgICBGZXRjaEJvZHkoKSA9IGRlZmF1bHQ7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8RmV0Y2hCb2R5PiBmcm9tRm9y
bURhdGEoUEFMOjpTZXNzaW9uSUQsIEZvcm1EYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIE9wdGlvbmFsPEZldGNoQm9keT4gZnJvbUZvcm1EYXRhKEZvcm1EYXRhJik7CiAKICAgICB2
b2lkIGxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJik7CiAgICAgdm9pZCBsb2FkaW5nU3Vj
Y2VlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCmluZGV4IGRiMjZlZWUzNWRmOGMzY2Q3ODJlMzdjN2ZhZDhjNDIwNjVhMzFk
YzguLjIyZDQzNzJiMzFlZmU3MjRiZTJlMDJjODdhZGQ2NzczNTkzYmMwNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0z
NSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIFJl
ZjxCbG9iPiBibG9iRnJvbURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCB1bnNp
Z25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShsZW5ndGgpOwogICAgIG1lbWNweSh2YWx1ZS5k
YXRhKCksIGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzZXNzaW9uSUQs
IFdURk1vdmUodmFsdWUpLCBjb250ZW50VHlwZSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShX
VEZNb3ZlKHZhbHVlKSwgY29udGVudFR5cGUpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hv
dWxkUHJlcGVuZEJPTShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
CkBAIC02NCw4ICs2NCw4IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAgICAgICAgIGZ1bGZp
bGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIGRhdGEsIGxlbmd0aCk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpCbG9i
OgotICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8
SURMSW50ZXJmYWNlPEJsb2I+PihbJmRhdGEsICZsZW5ndGgsICZjb250ZW50VHlwZV0oYXV0byYg
Y29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LnNlc3Np
b25JRCgpLCBkYXRhLCBsZW5ndGgsIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oWyZk
YXRhLCAmbGVuZ3RoLCAmY29udGVudFR5cGVdKGF1dG8mKSB7CisgICAgICAgICAgICByZXR1cm4g
YmxvYkZyb21EYXRhKGRhdGEsIGxlbmd0aCwgY29udGVudFR5cGUpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkpTT046CkBA
IC0xMzIsOCArMTMyLDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlYWRhYmxlU3RyZWFtKgogICAgICAgICBmdWxmaWxs
UHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpLCB0YWtlQXNBcnJheUJ1ZmZl
cigpLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgVHlwZTo6QmxvYjoKLSAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElETEludGVy
ZmFjZTxCbG9iPj4oW3RoaXNdKGF1dG8mIGNvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiB0
YWtlQXNCbG9iKGNvbnRleHQuc2Vzc2lvbklEKCkpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZl
Q2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10o
YXV0byYpIHsKKyAgICAgICAgICAgIHJldHVybiB0YWtlQXNCbG9iKCk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBUeXBlOjpKU09OOgpAQCAtMTgxLDEzICsxODEsMTMg
QEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJh
eUJ1ZmZlcigpCiAgICAgcmV0dXJuIGFycmF5QnVmZmVyOwogfQogCi1SZWY8QmxvYj4gRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorUmVmPEJs
b2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKCkKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQotICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNlc3Npb25JRCwgVmVjdG9yPHVpbnQ4X3Q+
KCksIG1fY29udGVudFR5cGUpOworICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1
aW50OF90PigpLCBtX2NvbnRlbnRUeXBlKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5
IHRvIG1vdmUgbV9idWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5nIGV4dHJhIGNvcHkuCi0gICAg
cmV0dXJuIGJsb2JGcm9tRGF0YShzZXNzaW9uSUQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRl
bnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2Nv
bnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApp
bmRleCA0MDdhY2I1MDE0ODQ4MDI3ZDM4YzJiNjMxMWMyNjQ4ZjFhY2U3Y2YzLi5mMjNjMWE5Zjk1
OTdlNWVmOGI5MDEyY2RiMjc2NmZlNjZkY2M0MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC03NSw3ICs3NSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEFzTG9hZGluZygpIHsgbV9pc0xvYWRpbmcgPSB0cnVlOyB9CiAKIHBy
aXZhdGU6Ci0gICAgUmVmPEJsb2I+IHRha2VBc0Jsb2IoUEFMOjpTZXNzaW9uSUQpOworICAgIFJl
ZjxCbG9iPiB0YWtlQXNCbG9iKCk7CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9j
b250ZW50VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKaW5kZXggNTM5ZDE4YWYwMGFhOTc1OGRmY2VlZDg5MjllZWQ0NjU2NThiOTdkMS4u
M2I5ZTFiYWEwMDY0ZWFhODE3YjNhMTNkYjMwMzI3ZWQ0ZDMxNmU5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTEyNCw4ICsxMjQs
OCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKICAgICB9CiAKICAgICBpZiAoaXNCb2R5TnVsbE9yT3BhcXVlKCkpIHsKLSAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFj
ZTxCbG9iPj4oW3RoaXNdKGF1dG8mIGNvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoY29udGV4dC5zZXNzaW9uSUQoKSwgVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6
bm9ybWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250
ZW50VHlwZSkpKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNrVmFsdWVXaXRoTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oW3RoaXNdKGF1dG8mKSB7CisgICAgICAgICAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiB7IH0sIEJsb2I6Om5vcm1hbGl6
ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fY29udGVudFR5cGUp
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCBkOGRiOTBjY2IxNDQ5NDYwZTI4
NzM4MWZkZjc0YjNhMmIyMDI5ZGM5Li5jMGRiZjVmZTU3OGYxZjU5YjZmNGMxYjA3YWJjMDFlN2Qy
NTFkNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBGZXRjaExvYWRlcjo6fkZl
dGNoTG9hZGVyKCkKIHsKICAgICBpZiAoIW1fdXJsRm9yUmVhZGluZy5pc0VtcHR5KCkpCi0gICAg
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKCptX3Nlc3Npb25J
RCwgbV91cmxGb3JSZWFkaW5nKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5y
ZWdpc3RlckJsb2JVUkwobV91cmxGb3JSZWFkaW5nKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgQmxvYiYgYmxvYikK
QEAgLTY0LDggKzY0LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RhcnRMb2FkaW5nQmxvYlVSTChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fc2Vzc2lvbklEID0gY29udGV4dC5zZXNzaW9uSUQoKTsKLSAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoKm1fc2Vzc2lvbklELCBjb250
ZXh0LnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVhZGluZywgYmxvYlVSTCk7CisgICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQuc2VjdXJpdHlPcmln
aW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iVVJMKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KG1fdXJsRm9yUmVhZGluZyk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3JJZGVudGlm
aWVyKGNvbnRleHQucmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCBiNmM2NTA4Y2EzNzYzZTMxMzNkNGEz
ZGJkNDExOThhY2E1ODRlOTYyLi40MDExYjM3MzhjOTc5YmI5NzhhZGZkY2ZjYmE4NTRjYWU4YzVk
ZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC02
Nyw3ICs2Nyw2IEBAIHByaXZhdGU6CiAgICAgRmV0Y2hCb2R5Q29uc3VtZXIqIG1fY29uc3VtZXI7
CiAgICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07CiAgICAgVVJMIG1fdXJsRm9yUmVhZGlu
ZzsKLSAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNjM0OTNiMzc1NmM1NDhkNmRlM2I4OWZmZjA2
ZDViNzcxNDNiYTkyMC4uNGI4ZmU3M2QxMzFkZTUyMzI1MWFhNDVkNDY0ODQwZGI0YTFiMzQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcApAQCAtMTI4Miw3ICsxMjgyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JB
ZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAg
ICAvLyB3b3JrZXJzIGN1cnJlbnRseSB3cml0ZSBibG9icyB0byBkaXNrIHN5bmNocm9ub3VzbHku
CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTc5NTggLSBNYWtlIHRoaXMgYXN5bmNocm9ub3VzIGFmdGVyIHJlZmFjdG9yaW5nIGFsbG93cyBp
dC4KICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIGF1dG8gaWRiVmFsdWUgPSB2
YWx1ZS0+d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSk7CisgICAgICAgIGF1dG8gaWRiVmFsdWUgPSB2
YWx1ZS0+d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsKICAgICAg
ICAgaWYgKGlkYlZhbHVlLmRhdGEoKS5kYXRhKCkpCiAgICAgICAgICAgICBtX2RhdGFiYXNlLT5j
b25uZWN0aW9uUHJveHkoKS5wdXRPckFkZChvcGVyYXRpb24sIGtleS5nZXQoKSwgaWRiVmFsdWUs
IG92ZXJ3cml0ZU1vZGUpOwogICAgICAgICBlbHNlIHsKQEAgLTEzMDEsNyArMTMwMSw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgLy8gc3RvcCBmdXR1cmUgcmVxdWVzdHMgZnJvbSBn
b2luZyB0byB0aGUgc2VydmVyIGFoZWFkIG9mIGl0LgogICAgIG9wZXJhdGlvbi5zZXROZXh0UmVx
dWVzdENhbkdvVG9TZXJ2ZXIoZmFsc2UpOwogCi0gICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tG
b3JJbmRleGVkREIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJvdGVjdGVkT3BlcmF0aW9uID0gUmVm
PElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+KG9wZXJhdGlvbiksIGtleURhdGEgPSBJ
REJLZXlEYXRhKGtleS5nZXQoKSkuaXNvbGF0ZWRDb3B5KCksIG92ZXJ3cml0ZU1vZGVdKElEQlZh
bHVlJiYgaWRiVmFsdWUpIG11dGFibGUgeworICAgIHZhbHVlLT53cml0ZUJsb2JzVG9EaXNrRm9y
SW5kZXhlZERCKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHByb3RlY3Rl
ZE9wZXJhdGlvbiA9IFJlZjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPihvcGVyYXRp
b24pLCBrZXlEYXRhID0gSURCS2V5RGF0YShrZXkuZ2V0KCkpLmlzb2xhdGVkQ29weSgpLCBvdmVy
d3JpdGVNb2RlXShJREJWYWx1ZSYmIGlkYlZhbHVlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJU
KCZvcmlnaW5UaHJlYWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoaWRiVmFsdWUuZGF0YSgpLmRhdGEoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXIuY3BwCmluZGV4IDI0NDc4MjVkNDhiY2JjNDJlYmUyMjUzODMwZTdjMDhiODBjYmRjNjQu
LmQ1YWZkNDQ1OTcxYTg0NTBhYjM4NWE1MDAyMGViNmUyMTk2MTI5MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAK
QEAgLTE1Nyw4ICsxNTcsOCBAQCBSZWY8QmxvYj4gTWVkaWFSZWNvcmRlcjo6Y3JlYXRlUmVjb3Jk
aW5nRGF0YUJsb2IoKQogewogICAgIGF1dG8gZGF0YSA9IG1fcHJpdmF0ZS0+ZmV0Y2hEYXRhKCk7
CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCkpOwotICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgKmRhdGEsIG1fcHJpdmF0ZS0+bWlt
ZVR5cGUoKSk7CisgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gQmxv
Yjo6Y3JlYXRlKCpkYXRhLCBtX3ByaXZhdGUtPm1pbWVUeXBlKCkpOwogfQogCiB2b2lkIE1lZGlh
UmVjb3JkZXI6OmRpZEFkZE9yUmVtb3ZlVHJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKaW5kZXgg
ZWJkODE1MjE1MWVjMWU3ZDNlM2U2NmM2Y2NhNDMzMzU2YTcwZGYyZS4uMjgyOGQzNmEyOGIyNjNh
YTA2YmQ5OTliZjExY2Q5MGRlMjNiNThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYgdXJsLCBVCiAgICAgbV9tZWRpYVNvdXJjZXMuc2V0
KHVybC5zdHJpbmcoKSwgJnNvdXJjZSk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6
dW5yZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVVJMJiB1cmwpCit2
b2lkIE1lZGlhU291cmNlUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoYXV0byBzb3VyY2UgPSBtX21l
ZGlhU291cmNlcy50YWtlKHVybC5zdHJpbmcoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCmluZGV4IDAyZDZl
ZmJjYmJkY2Q4MzFiMjhhYjdlOGJkNmJiNTRkNDc1NzNjNmIuLmI3ZGZlNDRiMjVmYzQ3NzIxNzRh
YTY0NmU0YjU4YzBhMzJlZTIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUg
c3BlY2lmaWVkIG1lZGlhIHNvdXJjZS4KICAgICB2b2lkIHJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSYpZmluYWw7Ci0gICAgdm9p
ZCB1bnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmKSBmaW5h
bDsKKyAgICB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgZmluYWw7CiAgICAgVVJMUmVn
aXN0cmFibGUqIGxvb2t1cChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbC5jcHAKaW5kZXggYTU1MWE4MzFjOTljZjU5ZTliZGRhOWFiNGFjODE5YjVlZTg5ZWFjMC4u
NmM3MDEyNzNmNTNlMjc5OTBjMGEzMDg5OTk0YmNjNDRkZDg3OGIxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKQEAg
LTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsOjpkaWRSZWNlaXZlUmF3RGF0YShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIAogICAgIHN3aXRjaCAobV9iaW5h
cnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRh
dGFMZW5ndGgpLCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CisgICAgICAgIHNjaGVkdWxlRGlzcGF0
Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAgIHNjaGVk
dWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGRhdGEsIGRhdGFMZW5ndGgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDk5Mjk2M2ViNTljM2IwNzViZmU1NzFiZDYzYTk0MGM3
MTBmNGVlYjAuLjkxMDg4MDA5YjU5YzEwYWIzYjk2ZTkxOWNhMzZiNDQ4MWFlM2Y2MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC01
ODQsNyArNTg0LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rv
cjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKICAg
ICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6CiAgICAgICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2Vp
dmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNr
LiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25J
RCgpLCBXVEZNb3ZlKGJpbmFyeURhdGEpLCBlbXB0eVN0cmluZygpKSwgU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoV1RGTW92ZShiaW5hcnlEYXRhKSwgZW1wdHlT
dHJpbmcoKSksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmluYXJ5VHlwZTo6QXJyYXlCdWZmZXI6CiAgICAgICAg
IGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShi
aW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5RGF0YS5zaXplKCkpLCBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggZGM2ZjY2MGZkMzg4Y2VmZmFmMGViZWY2ZTY2MGU2YjY5NWJiNjMx
NC4uOTgyZTU3MzFlZjExMjIzNWJlNDI4MTJiOGM3ZjA3MzEyNmJiNjg4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC00NjUsNyArNDY1LDcgQEAgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZToKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKIAotICAgICAgICBwZWVy
LT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKGNvbnRleHQuc2Vzc2lvbklEKCksIHVybCwgdHlwZSwg
c2l6ZSwgeyB9KSk7CisgICAgICAgIHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUodXJsLCB0
eXBlLCBzaXplLCB7IH0pKTsKICAgICB9KTsKIAogICAgIFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOGRkOWZiZjAzNjVkNDA4MTQwMGY3MDgzM2NkNzA2NDEw
Yjc4MTQ2MC4uNzhlZjFmZWNiYTE0M2EwYWYyZjc1YmVmYjM4Yjk2NDQ5ZjBkNDUzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCkBAIC0yMDkxLDcgKzIwOTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZmlsZVBhdGgg
PSBwYXRoLT5zdHJpbmcoKTsKIAogICAgICAgICBpZiAobV9pc0RPTUdsb2JhbE9iamVjdCkKLSAg
ICAgICAgICAgIGZpbGUgPSBGaWxlOjpkZXNlcmlhbGl6ZShqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihtX2dsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklE
KCksIGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwg
bmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKKyAgICAgICAgICAgIGZpbGUg
PSBGaWxlOjpkZXNlcmlhbGl6ZShmaWxlUGF0aCwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwg
dHlwZS0+c3RyaW5nKCksIG5hbWUtPnN0cmluZygpLCBvcHRpb25hbExhc3RNb2RpZmllZCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjg1Nyw3ICsyODU3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgaWYgKCFt
X2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAg
ICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZXNzaW9uSUQoKSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCks
IHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKFVSTChVUkwoKSwg
dXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXplLCBibG9iRmlsZVBhdGhGb3JCbG9i
VVJMKHVybC0+c3RyaW5nKCkpKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJp
bmdUYWc6IHsKICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBjYWNoZWRTdHJpbmc7CkBAIC0z
NTY5LDEyICszNTY5LDEyIEBAIFZlY3RvcjxTdHJpbmc+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
YmxvYlVSTHNJc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZv
aWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJWYWx1ZSYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0
ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCVmFsdWUm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBBU1NFUlQoaGFzQmxvYlVSTHMoKSk7CiAKLSAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhzZXNzaW9uSUQsIG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChhdXRvJiYgYmxvYkZpbGVQYXRocykgbXV0YWJsZSB7CisgICAgYmxv
YlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMobV9ibG9iVVJMcywgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8mJiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgICAgICBpZiAoYmxvYkZpbGVQ
YXRocy5pc0VtcHR5KCkpIHsKQEAgLTM1OTAsNyArMzU5MCw3IEBAIHZvaWQgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JCiAgICAgfSk7CiB9CiAKLUlEQlZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3Jp
dGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQorSURCVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNr
Rm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CiAKQEAgLTM1OTksOCArMzU5OSw4IEBAIElEQlZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoUEFMOjpTCiAgICAg
Q29uZGl0aW9uIGNvbmRpdGlvbjsKICAgICBsb2NrLmxvY2soKTsKIAotICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbdGhpcywgc2Vzc2lvbklELCBjb25kaXRpb25QdHIgPSAmY29uZGl0aW9u
LCB2YWx1ZVB0ciA9ICZ2YWx1ZV0gewotICAgICAgICB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhl
ZERCKHNlc3Npb25JRCwgW2NvbmRpdGlvblB0ciwgdmFsdWVQdHJdKElEQlZhbHVlJiYgcmVzdWx0
KSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBjb25kaXRpb25QdHIgPSAm
Y29uZGl0aW9uLCB2YWx1ZVB0ciA9ICZ2YWx1ZV0geworICAgICAgICB3cml0ZUJsb2JzVG9EaXNr
Rm9ySW5kZXhlZERCKFtjb25kaXRpb25QdHIsIHZhbHVlUHRyXShJREJWYWx1ZSYmIHJlc3VsdCkg
ewogICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgICAgIHZhbHVl
UHRyLT5zZXRBc0lzb2xhdGVkQ29weShyZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDRmNGIwY2YzYjdlZWNk
ZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEwN2IuLmRhODRjN2U4NDA4MDZiMzQyYzgxNDQwZjU4ODY1
ZGY2MWU1NzMzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC05Myw4ICs5Myw4IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzSXNvbGF0ZWRD
b3B5KCkgY29uc3Q7Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQlZhbHVlJiYpPiYmKTsKLSAgICBJ
REJWYWx1ZSB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseShQQUw6OlNl
c3Npb25JRCk7CisgICAgdm9pZCB3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSURCVmFsdWUmJik+JiYpOworICAgIElEQlZhbHVlIHdyaXRlQmxvYnNU
b0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KCk7CiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWludDhfdD4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcAppbmRleCBkM2FmNzBmYjhiYTMzNmJmYTYxOGJmOWMxMjU2YjEwN2Q5ZDI1
YWE1Li41YzcxYjM2OGU2MDI4YjAxNzRmM2E3ZmRmNDM4ODY0ZDg4OGY4OGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNjgsOSArNjgsOCBAQCBwcml2YXRlOgogCiAjZW5k
aWYKIAotRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBTdG9yZU1vZGUgbW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQs
IFR5cGUgdHlwZSkKLSAgICA6IG1fc2Vzc2lvbklEKGRvY3VtZW50LnNlc3Npb25JRCgpKQotICAg
ICwgbV9zdG9yZU1vZGUobW9kZSkKK0RhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVyKFN0b3JlTW9k
ZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFzdGVib2FyZCwgVHlwZSB0eXBl
KQorICAgIDogbV9zdG9yZU1vZGUobW9kZSkKICAgICAsIG1fcGFzdGVib2FyZChXVEZNb3ZlKHBh
c3RlYm9hcmQpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgLCBtX3R5cGUodHlwZSkK
QEAgLTg2LDcgKzg1LDcgQEAgRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBTdG9yZU1vZGUgbW9kZSwgc3RkOjp1bmlxdWUKIAogUmVmPERhdGFUcmFu
c2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50LCBTdG9yZU1vZGUgc3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4mJiBwYXN0ZWJvYXJkKQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5l
dyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIHN0b3JlTW9kZSwgV1RGTW92ZShwYXN0ZWJvYXJkKSkp
OworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoc3Rv
cmVNb2RlLCBXVEZNb3ZlKHBhc3RlYm9hcmQpKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5tX29yaWdp
bklkZW50aWZpZXIgPSBkb2N1bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOwog
ICAgIHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CkBAIC0zNDksNyArMzQ4LDcgQEAgVmVjdG9yPFJl
ZjxGaWxlPj4gRGF0YVRyYW5zZmVyOjpmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSBj
b25zdAogICAgIGJvb2wgYWRkZWRGaWxlc0Zyb21QYXN0ZWJvYXJkID0gZmFsc2U7CiAgICAgVmVj
dG9yPFJlZjxGaWxlPj4gZmlsZXM7CiAgICAgaWYgKCghZm9yRHJhZygpIHx8IGZvckZpbGVEcmFn
KCkpICYmIG1fcGFzdGVib2FyZC0+ZmlsZUNvbnRlbnRTdGF0ZSgpICE9IFBhc3RlYm9hcmQ6OkZp
bGVDb250ZW50U3RhdGU6Ok5vRmlsZU9ySW1hZ2VEYXRhKSB7Ci0gICAgICAgIFdlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlciByZWFkZXIgeyBtX3Nlc3Npb25JRCB9OworICAgICAgICBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIgcmVhZGVyOwogICAgICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQo
cmVhZGVyKTsKICAgICAgICAgZmlsZXMgPSBXVEZNb3ZlKHJlYWRlci5maWxlcyk7CiAgICAgICAg
IGFkZGVkRmlsZXNGcm9tUGFzdGVib2FyZCA9ICFmaWxlcy5pc0VtcHR5KCk7CkBAIC00MTQsMTIg
KzQxMywxMiBAQCBib29sIERhdGFUcmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKICAgICByZXR1cm4gIXR5cGUuaXNOdWxsKCkgJiYgdHlwZXMoKS5jb250YWlucyh0
eXBlKTsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwbGFpblRleHQs
IGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmlu
ZyYgaHRtbFRleHQpCiB7CiAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQ
YXN0ZWJvYXJkPigpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9z
LCBwbGFpblRleHQpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L2h0bWwiX3Ms
IGh0bWxUZXh0KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1l
bnQsIFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0
RXZlbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3RvcmVNb2Rl
OjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOwogfQog
CiB2b2lkIERhdGFUcmFuc2Zlcjo6Y29tbWl0VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIG5hdGl2
ZVBhc3RlYm9hcmQpCkBAIC00NjQsMjEgKzQ2MywyMSBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0
RHJhZ0ltYWdlKEVsZW1lbnQqLCBpbnQsIGludCkKIAogI2Vsc2UKIAotUmVmPERhdGFUcmFuc2Zl
cj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
K1JlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZygpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJl
YWRXcml0ZSwgUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKSwgVHlwZTo6RHJhZ0Fu
ZERyb3BEYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3Jl
TW9kZTo6UmVhZFdyaXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBl
OjpEcmFnQW5kRHJvcERhdGEpKTsKIH0KIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0g
ICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVu
dCwgU3RvcmVNb2RlOjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSwg
VHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJl
ZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0
aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNm
ZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAogUmVmPERhdGFUcmFuc2Zl
cj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBz
b3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKLSAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6
OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIGRyYWdnaW5nRmlsZXMg
PyBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzIDogVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CisgICAg
YXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNm
ZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIGRyYWdnaW5nRmls
ZXMgPyBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzIDogVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiAg
ICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oc291cmNlT3BlcmF0aW9uKTsKICAg
ICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50
aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKQEAgLTQ4Niw3
ICs0ODUsNyBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3Ao
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaQogCiBSZWY8RGF0YVRyYW5zZmVyPiBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdP
cGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7Ci0gICAgYXV0
byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgRGF0
YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJh
Z2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERh
dGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpQcm90ZWN0ZWQsIFdURk1vdmUocGFzdGVib2FyZCks
IGRyYWdnaW5nRmlsZXMgPyBUeXBlOjpEcmFnQW5kRHJvcEZpbGVzIDogVHlwZTo6RHJhZ0FuZERy
b3BEYXRhKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVyYXRpb24oc291cmNlT3Bl
cmF0aW9uKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50
Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2Zl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAppbmRleCA2YWVjYWM4ZmY0OTQyNTQ1NWNkZjdi
YTM3YmJkMTdlNjgyZjdkZDFlLi5jOTcyNmE2ZmNiYjhjMjEyMDk3ZmU4Mjk5MTE1ZjI3MzliMThk
N2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIFN0b3JlTW9kZSB7IEludmFsaWQsIFJlYWRXcml0ZSwgUmVhZG9u
bHksIFByb3RlY3RlZCB9OwogCiAgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShjb25zdCBEb2N1bWVudCYsIFN0b3JlTW9kZSwgc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+JiYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JJ
bnB1dEV2ZW50KGNvbnN0IERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0
IFN0cmluZyYgaHRtbFRleHQpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVG
b3JJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxU
ZXh0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5EYXRhVHJhbnNmZXIoKTsKIApAQCAtODcsNyAr
ODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXRUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYp
OwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zl
cj4gY3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYpOworICAgIHN0YXRpYyBSZWY8RGF0YVRy
YW5zZmVyPiBjcmVhdGVGb3JEcmFnKCk7CiAgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNy
ZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50Jik7CiAgICAgc3RhdGljIFJlZjxE
YXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAg
ICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNv
bnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRp
b24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IENvcHlBbmRQYXN0ZSwgRHJhZ0FuZERyb3BE
YXRhLCBEcmFnQW5kRHJvcEZpbGVzLCBJbnB1dEV2ZW50IH07Ci0gICAgRGF0YVRyYW5zZmVyKGNv
bnN0IERvY3VtZW50JiwgU3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4sIFR5
cGUgPSBUeXBlOjpDb3B5QW5kUGFzdGUpOworICAgIERhdGFUcmFuc2ZlcihTdG9yZU1vZGUsIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiwgVHlwZSA9IFR5cGU6OkNvcHlBbmRQYXN0ZSk7CiAK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgZm9yRHJhZygpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBUeXBlOjpEcmFnQW5kRHJvcERhdGEgfHwgbV90eXBlID09IFR5cGU6OkRy
YWdBbmREcm9wRmlsZXM7IH0KQEAgLTEzMCw3ICsxMzAsNiBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKEFkZEZpbGVzVHlwZSkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZjxGaWxl
Pj4gZmlsZXNGcm9tUGFzdGVib2FyZEFuZEl0ZW1MaXN0KCkgY29uc3Q7CiAKLSAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJpbmcgbV9vcmlnaW5JZGVudGlmaWVyOwogICAg
IFN0b3JlTW9kZSBtX3N0b3JlTW9kZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
bV9wYXN0ZWJvYXJkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
UmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
UmFuZ2VXaXRoVGV4dENvbW1hbmQuY3BwCmluZGV4IDUyYjY5YTU3MmE2NTY5MDg3YzkzYTJhMThj
ZDMyNTAyMjlmNmFmMzkuLjA0MWY5ZDExN2Q2YTAxZWIyYzU4NWE4YjIxNGQzM2RjZThkODgwMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0aFRleHRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VSYW5nZVdpdGhU
ZXh0Q29tbWFuZC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgU3RyaW5nIFJlcGxhY2VSYW5nZVdpdGhU
ZXh0Q29tbWFuZDo6aW5wdXRFdmVudERhdGEoKSBjb25zdAogUmVmUHRyPERhdGFUcmFuc2Zlcj4g
UmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29u
c3QKIHsKICAgICBpZiAoIWlzRWRpdGluZ1RleHRBcmVhT3JUZXh0SW5wdXQoKSkKLSAgICAgICAg
cmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChkb2N1bWVudCgpLCBtX3Rl
eHQsIHNlcmlhbGl6ZUZyYWdtZW50KCptX3RleHRGcmFnbWVudCwgU2VyaWFsaXplZE5vZGVzOjpT
dWJ0cmVlSW5jbHVkaW5nTm9kZSkpOworICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JJbnB1dEV2ZW50KG1fdGV4dCwgc2VyaWFsaXplRnJhZ21lbnQoKm1fdGV4dEZyYWdtZW50
LCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKSk7CiAKICAgICByZXR1cm4g
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggNjJiZTQ0NzI2ZDY5NzkyY2FmOWNkOTA0YjE4ZmM1Nzg0OGYwODE3MC4uNzUwNmNkYzdhZWEx
M2MzZTNiM2RlYjQ0MDQ3OWUwZDc5MGIyMTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE0MjIsNyArMTQyMiw3IEBA
IFJlZlB0cjxEYXRhVHJhbnNmZXI+IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50
RGF0YVRyYW5zZmVyKCkgY29uc3QKICAgICBpZiAoaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1
dCgpKQogICAgICAgICByZXR1cm4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0RXZlbnREYXRh
VHJhbnNmZXIoKTsKIAotICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZl
bnQoZG9jdW1lbnQoKSwgbV9kb2N1bWVudEZyYWdtZW50UGxhaW5UZXh0LCBtX2RvY3VtZW50RnJh
Z21lbnRIVE1MTWFya3VwKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KG1fZG9jdW1lbnRGcmFnbWVudFBsYWluVGV4dCwgbV9kb2N1bWVudEZyYWdtZW50SFRN
TE1hcmt1cCk7CiB9CiAKIGJvb2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZFJlbW92
ZUVuZEJSKE5vZGUqIGVuZEJSLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIG9yaWdpbmFsVmlzUG9z
QmVmb3JlRW5kQlIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCAzNzE4YWE0OTFlZDY2YWI4M2ZiODFkN2I0YmY5MzA3
ZGRmNDVmNTQ2Li43ZGIzZjliNDVkOGIzZjc2NzZlMzBmOTdlMDc2YTVlYTk4MzgyMzdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBWZWN0b3I8UmVmUHRyPFN0YXRpY1JhbmdlPj4gU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6dGFyZ2V0UmFuZ2VzKCkgY29uc3QKIFJlZlB0cjxEYXRh
VHJhbnNmZXI+IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNm
ZXIoKSBjb25zdAogewogICAgIGlmICghaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQot
ICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGRvY3VtZW50
KCksIG1fY29ycmVjdGlvbiwgc2VyaWFsaXplRnJhZ21lbnQoKm1fY29ycmVjdGlvbkZyYWdtZW50
LCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKSk7CisgICAgICAgIHJldHVy
biBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQobV9jb3JyZWN0aW9uLCBzZXJpYWxp
emVGcmFnbWVudCgqbV9jb3JyZWN0aW9uRnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJl
ZUluY2x1ZGluZ05vZGUpKTsKIAogICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5w
dXRFdmVudERhdGFUcmFuc2ZlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5jcHAKaW5kZXggZjM1ODc0MzIwYjE5MDUzZTEwMDZkYmU2ZWY2NmU3N2ZmMzMxYWNmNi4u
MDFmNTNkYmEwM2JlYWM3OTdkNzZhYThhZTU2NmQyZmQxMjVjODIzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC00MjUsNyArNDI1LDcgQEAgUmVmUHRyPERh
dGFUcmFuc2Zlcj4gVHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpIGNvbnN0
CiAKICAgICBTdHJpbmdCdWlsZGVyIGh0bWxUZXh0OwogICAgIE1hcmt1cEFjY3VtdWxhdG9yOjph
cHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoaHRtbFRleHQsIG1fY3VycmVudFRleHRU
b0luc2VydCwgMCwgbV9jdXJyZW50VGV4dFRvSW5zZXJ0Lmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5I
VE1MUENEQVRBKTsKLSAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50
KGRvY3VtZW50KCksIG1fY3VycmVudFRleHRUb0luc2VydCwgaHRtbFRleHQudG9TdHJpbmcoKSk7
CisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChtX2N1cnJlbnRU
ZXh0VG9JbnNlcnQsIGh0bWxUZXh0LnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFR5cGluZ0NvbW1h
bmQ6OmRpZEFwcGx5Q29tbWFuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggNjRkZTkxZDNlNmE4NTQ4YTUz
NmRkOWE5NDMxYmNlOTJmODRlZGU2Mi4uZjY4YTAwZWZhZTdhN2JiNDk1ODlkMGZmZTI3MzFiYmU2
ZTg0MmIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIFdlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlcjo6fldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsK
IAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lKQogewotICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoc2Vzc2lv
bklELCBmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoZmlsZW5hbWUp
KTsKIH0KIAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0
ZShzZXNzaW9uSUQsIGJ1ZmZlci5nZXQoKSwgdHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMu
YXBwZW5kKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCB0eXBlKSwgZmls
ZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggOTQzOGI0NDEzYTAwMTI1MWFiZTNmODczMDAw
ZDc2Y2I4Y2VhZjAzZi4uOWI5ZmE3NzFlZGFhNWFkMWIzNzkyNjExNWMwZWEzYTM1OGE0OGYwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlci5oCkBAIC0zMywxNyArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RmlsZTsKIAogc3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyIHsKLSAgICBleHBsaWNpdCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgICAgICA6IHNlc3Npb25JRChzZXNzaW9u
SUQpCi0gICAgewotICAgIH0KLQorICAgIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0g
ZGVmYXVsdDsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKIAotICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRDsKICAgICBWZWN0
b3I8UmVmPEZpbGU+PiBmaWxlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMGNmMmZjMzQ1YTQ4ODQw
ZTkzOWY0NzYxNWNjYWRkMjZkNTFjOGM0Yy4uMzk0OTZiNjk4ODY2YzRhZWMzZjc3ZDRlNjYwYmU2
ZDUwNzk5ZDlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgUmVmPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBm
cmFtZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUs
IGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBp
ZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250
ZW50VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25JRCgpLCBidWZmZXIuZ2V0
KCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7
CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2ht
ZW50KSk7CiAgICAgICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAg
ICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6
OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7CkBA
IC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UKICAgICAgICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKEJsb2I6
OmNyZWF0ZShkb2N1bWVudC5zZXNzaW9uSUQoKSwgYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSks
IGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRh
dGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShG
aWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgY29udGVudFR5cGUpLCBkZWZh
dWx0SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlz
cGxheUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZN
b3ZlKGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50OwpAQCAtMzY1LDcg
KzM2NSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhG
cmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChzdXBwb3J0c0Ns
aWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKICAgICAgICAgICAgIGlmIChpczxIVE1M
SW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkpICYmIGNvbnRlbnRUeXBlSXNTdWl0
YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oaW5mby5jb250ZW50VHlwZSkpIHsKICAg
ICAgICAgICAgICAgICBhdXRvJiBpbWFnZSA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KG9y
aWdpbmFsRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKCpmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhZ21lbnQuZG9jdW1l
bnQoKS5zZXNzaW9uSUQoKSwgaW5mby5kYXRhLCBpbmZvLmNvbnRlbnRUeXBlKSkpOworICAgICAg
ICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwg
QmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKICAgICAgICAgICAg
ICAgICBpbWFnZS5zZXRBdHRhY2htZW50RWxlbWVudChhdHRhY2htZW50LmNvcHlSZWYoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0
dHJpYnV0ZXMoaW5mby5kYXRhLT5zaXplKCksIGluZm8uY29udGVudFR5cGUsIGluZm8uZmlsZU5h
bWUpOwpAQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbmZv
LmNvbnRlbnRUeXBlKSwgV1RGTW92ZShpbmZvLmZpbGVOYW1lKSwgV1RGTW92ZShpbmZvLmRhdGEp
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShmcmFnbWVudC5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBX
VEZNb3ZlKGluZm8uZGF0YSksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSkpLCBXVEZNb3ZlKGlu
Zm8uZmlsZU5hbWUpKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmli
dXRlczo6WWVzKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRl
KEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGluZm8uZGF0YSksIFdURk1vdmUoaW5mby5jb250ZW50VHlw
ZSkpLCBXVEZNb3ZlKGluZm8uZmlsZU5hbWUpKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRh
dGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKICAgICAgICAgICAgIHBhcmVudC0+cmVwbGFjZUNo
aWxkKFdURk1vdmUoYXR0YWNobWVudCksIFdURk1vdmUob3JpZ2luYWxFbGVtZW50KSk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC00MTUsNyArNDE1LDcgQEAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1dGUK
IAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4gYmxvYlVSTE1hcDsKICAgICBm
b3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6IGZyYWdtZW50QW5k
UmVzb3VyY2VzLnJlc291cmNlcykgewotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUo
ZG9jdW1lbnQuc2Vzc2lvbklEKCksIHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5t
aW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNl
LT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAgICAgU3RyaW5nIGJsb2JV
UkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgYmxvYik7CiAgICAgICAgIGJs
b2JVUkxNYXAuc2V0KHN1YnJlc291cmNlLT51cmwoKS5zdHJpbmcoKSwgYmxvYlVSTCk7CiAgICAg
fQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGF1
dG8mIHN1YnJlc291cmNlVVJMID0gc3VicmVzb3VyY2UtPnVybCgpOwogICAgICAgICBpZiAoIXNo
b3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJyZXNvdXJjZVVSTCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKGRlc3RpbmF0aW9uRG9j
dW1lbnQuc2Vzc2lvbklEKCksIHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1l
VHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKHN1YnJlc291cmNlLT5k
YXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAgICAgU3RyaW5nIGJsb2JVUkwg
PSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsKICAg
ICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2VVUkwuc3RyaW5nKCksIGJsb2JVUkwpOwog
ICAgIH0KQEAgLTQ5MSw3ICs0OTEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0
aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKICAgICAgICAgYmxvYkJ1ZmZlci5yZXNlcnZl
Q2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7CiAgICAgICAgIGJsb2JCdWZmZXIuYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7
Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShkZXN0aW5hdGlvbkRvY3VtZW50LnNl
c3Npb25JRCgpLCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKKyAgICAgICAgYXV0byBibG9i
ID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkJ1ZmZlciksIHR5cGUpOwogCiAgICAgICAgIFN0
cmluZyBzdWJmcmFtZUJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlv
bkRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3ViZnJhbWVVUkwuc3Ry
aW5nKCksIHN1YmZyYW1lQmxvYlVSTCk7CkBAIC02ODgsNyArNjg4LDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgdHlwZSwKICAgICBpZiAoc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1l
bnRzKCkpCiAgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2ht
ZW50KGZyYW1lLCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIpLCB0eXBlLCBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKSk7CiAgICAgZWxzZQotICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFn
bWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1
bWVudCwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25JRCgpLCBidWZmZXIuZ2V0KCksIHR5
cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkpOworICAgICAgICBhZGRGcmFnbWVudChj
cmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKSk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CkBAIC03MDks
NyArNzA5LDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRo
KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBwYXRoLAogICAgIGF1dG8gZG9jdW1lbnQgPSBt
YWtlUmVmKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50
KTsKICAgICBpZiAoIXN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgewot
ICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShkb2N1bWVudC0+c2Vzc2lv
bklEKCksIHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1
dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShwYXRo
KSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsK
ICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCkBAIC03MzYsNyArNzM2LDcgQEAg
c3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckZpbGVQYXRoKEZyYW1lJiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXRoLAogCiAgICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0YWJsZUZv
cklubGluZUltYWdlUmVwcmVzZW50YXRpb24oY29udGVudFR5cGUpKSB7CiAgICAgICAgIGF1dG8g
aW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBpbWFn
ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIs
IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUoZG9jdW1lbnQt
PnNlc3Npb25JRCgpLCBwYXRoKSkpOworICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUocGF0aCkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0
dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVy
cmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnBy
ZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTc2NSw3ICs3NjUsNyBAQCBzdGF0aWMgUmVmPEhUTUxF
bGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjbwogICAgICAgICBmaWxlTmFtZSA9IG5hbWU7CiAKICAgICBpZiAoIXN1cHBvcnRzQ2xp
ZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgewotICAgICAgICBhdHRhY2htZW50LT5zZXRG
aWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9jdW1lbnQtPnNlc3Npb25JRCgpLCBidWZm
ZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgZmlsZU5hbWUpKTsKKyAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShh
dHRhY2htZW50VHlwZSkpLCBmaWxlTmFtZSkpOwogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsK
ICAgICB9CiAKQEAgLTc3Myw3ICs3NzMsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRh
Y2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjbwogCiAg
ICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24o
YXR0YWNobWVudFR5cGUpKSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJM
KGRvY3VtZW50LCBGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGRvY3VtZW50LT5zZXNzaW9uSUQo
KSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIFdURk1vdmUoZmlsZU5hbWUpKSkp
OworICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpj
cmVhdGUoQmxvYjo6Y3JlYXRlKGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZN
b3ZlKGZpbGVOYW1lKSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdU
Rk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAg
ICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxO
YW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxMjRhNWFiMmQ2YTcyMjM2NDJmMDYy
OTYyODFhYzE2Y2I0NTAxNzlhLi5iMzRiYzA2NzRlYWJkNGJjNTZlMWQ4NjIyYTQ3ZWZjNjJjMjJh
MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05ODUsOSArOTg1LDkgQEAgc3Rh
dGljIHZvaWQgcmVzdG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoRG9jdW1lbnRGcmFn
bWVudCYgZnJhZ21lbnQpCiAgICAgICAgIGF1dG8gYXR0YWNobWVudFBhdGggPSBhdHRhY2htZW50
LT5hdHRhY2htZW50UGF0aCgpOwogICAgICAgICBhdXRvIGJsb2JVUkwgPSBhdHRhY2htZW50LT5i
bG9iVVJMKCk7CiAgICAgICAgIGlmICghYXR0YWNobWVudFBhdGguaXNFbXB0eSgpKQotICAgICAg
ICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZnJhZ21lbnQuZG9jdW1lbnQo
KS5zZXNzaW9uSUQoKSwgYXR0YWNobWVudFBhdGgpKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQt
PnNldEZpbGUoRmlsZTo6Y3JlYXRlKGF0dGFjaG1lbnRQYXRoKSk7CiAgICAgICAgIGVsc2UgaWYg
KCFibG9iVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6ZGVzZXJpYWxpemUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgeyB9LCBibG9i
VVJMLCBhdHRhY2htZW50LT5hdHRhY2htZW50VHlwZSgpLCBhdHRhY2htZW50LT5hdHRhY2htZW50
VGl0bGUoKSkpOworICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpkZXNlcmlh
bGl6ZSh7IH0sIGJsb2JVUkwsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1l
bnQtPmF0dGFjaG1lbnRUaXRsZSgpKSk7CiAKICAgICAgICAgLy8gUmVtb3ZlIHRlbXBvcmFyeSBh
dHRyaWJ1dGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGFkZGVkIGluIFN0eWxlZE1hcmt1cEFjY3Vt
dWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVzLgogICAgICAgICBhdHRhY2htZW50LT5yZW1v
dmVBdHRyaWJ1dGUod2Via2l0YXR0YWNobWVudGlkQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNw
cAppbmRleCBkODkxYzcwODY4YjhjNzZhOTI5MTExN2M1M2MzMmNmNmYxN2E2NDljLi4yMzNjNzY2
Y2RlZjc4Yzg2YmMxZmI0YjBjZjNiZWRjMDQyYmZlNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJsb2IpOwog
Y2xhc3MgQmxvYlVSTFJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIFVSTFJlZ2lzdHJ5IHsKIHB1Ymxp
YzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBV
UkwmLCBVUkxSZWdpc3RyYWJsZSYpIGZpbmFsOwotICAgIHZvaWQgdW5yZWdpc3RlclVSTChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lz
dGVyVVJMKGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgc3RhdGljIFVSTFJlZ2lzdHJ5JiByZWdp
c3RyeSgpOwogfTsKQEAgLTU4LDEyICs1OCwxMiBAQCBwdWJsaWM6CiB2b2lkIEJsb2JVUkxSZWdp
c3RyeTo6cmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lzdHJhYmxlJiBibG9iKQogewogICAgIEFTU0VSVCgmYmxv
Yi5yZWdpc3RyeSgpID09IHRoaXMpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCks
IHB1YmxpY1VSTCwgc3RhdGljX2Nhc3Q8QmxvYiY+KGJsb2IpLnVybCgpKTsKKyAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZWN1cml0eU9yaWdpbigp
LCBwdWJsaWNVUkwsIHN0YXRpY19jYXN0PEJsb2ImPihibG9iKS51cmwoKSk7CiB9CiAKLXZvaWQg
QmxvYlVSTFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJV
UkwoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdp
c3RlckJsb2JVUkwoY29udGV4dC5zZXNzaW9uSUQoKSwgdXJsKTsKKyAgICBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogfQogCiBVUkxSZWdpc3RyeSYgQmxv
YlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCkBAIC03MiwyNCArNzIsMjEgQEAgVVJMUmVnaXN0cnkm
IEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
QmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCi0gICAgLCBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKK0Jsb2I6OkJsb2IoVW5pbml0
aWFsaXplZENvbnRydWN0b3IsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSkKKyAgICA6IG1faW50
ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkpCiB7CiB9
CiAKLUJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9zZXNzaW9u
SUQoc2Vzc2lvbklEKQotICAgICwgbV9zaXplKDApCitCbG9iOjpCbG9iKCkKKyAgICA6IG1fc2l6
ZSgwKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgp
OwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25J
RCwgbV9pbnRlcm5hbFVSTCwgeyB9LCAgeyB9KTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyB9LCAgeyB9KTsKIH0KIAotQmxvYjo6
QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYg
YmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKLSAg
ICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4m
JiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQor
ICAgIDogbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogICAgICwg
bV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZShwcm9wZXJ0eUJhZy50eXBlKSkKIHsKICAgICBC
bG9iQnVpbGRlciBidWlsZGVyKHByb3BlcnR5QmFnLmVuZGluZ3MpOwpAQCAtMTAxLDEyICs5OCwx
MSBAQCBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPEJsb2JQYXJ0
VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLAogICAgICAgICApOwogICAgIH0KIAotICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRl
cm5hbFVSTCwgYnVpbGRlci5maW5hbGl6ZSgpLCBtX3R5cGUpOworICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXpl
KCksIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAg
ICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fdHlwZShjb250ZW50VHlwZSkKK0Js
b2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCisgICAgOiBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoYnVmZmVyLnNp
emUoKSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKQEAgLTExNSw1MyArMTExLDQ5IEBA
IEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjCiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7
CiAgICAgYmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAgbV9p
bnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJM
LCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMp
LCBjb250ZW50VHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotICAg
IDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQorQmxv
Yjo6QmxvYihWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQorICAgIDogbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9zaXplKGRhdGEuc2l6ZSgpKQog
ewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwogICAgIGJsb2JQYXJ0cy5hcHBlbmQo
QmxvYlBhcnQoV1RGTW92ZShkYXRhKSkpOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpj
cmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBj
b250ZW50VHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCiBC
bG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0IEJsb2Im
IGJsb2IpCi0gICAgOiBtX3Nlc3Npb25JRChibG9iLm1fc2Vzc2lvbklEKQotICAgICwgbV9pbnRl
cm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQorICAgIDogbV9pbnRlcm5hbFVS
TChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogICAgICwgbV90eXBlKGJsb2IudHlwZSgp
KQogICAgICwgbV9zaXplKGJsb2Iuc2l6ZSgpKQogewotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFy
dChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVybCgpKSB9ICwg
bV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5
cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxl
QmFja2VkUGF0aCkKLSAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fdHlwZShu
b3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNv
bnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFs
PHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkK
KyAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCiAgICAgLCBtX3NpemUo
c2l6ZSkKIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwo
KTsKICAgICBpZiAoZmlsZUJhY2tlZFBhdGguaXNFbXB0eSgpKQotICAgICAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG51bGxwdHIsIG1faW50
ZXJuYWxVUkwsIHNyY1VSTCk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChudWxscHRyLCBtX2ludGVybmFsVVJMLCBzcmNVUkwpOwogICAgIGVsc2UKLSAg
ICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmlsZUJhY2tlZFBh
dGgsIG1fdHlwZSk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmlsZUJhY2tl
ZFBhdGgsIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25z
dCBTdHJpbmcmIHR5cGUpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX3R5
cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQorQmxvYjo6QmxvYihjb25zdCBVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIHR5cGUp
CisgICAgOiBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgIC8vIG1fc2l6
ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5kIC0gc3RhcnQgc28gd2UgZG8gbm90IGlu
aXRpYWxpemUgaXQgaGVyZS4KIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRl
SW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkxGb3JTbGljZShtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBzdGFydCwgZW5k
KTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSht
X2ludGVybmFsVVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCiBCbG9iOjp+QmxvYigpCiB7
Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwobV9zZXNzaW9u
SUQsIG1faW50ZXJuYWxVUkwpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0
ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYjo6
c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDJjN2E3YjBmYmU0ZmIxMmM4NmU3
YWRjNjY2YjZkY2YyNmZiYmZjMjMuLjczODk3NGFhZDgxOGNhZjZhMjQ3OTA5NTg1N2MxNDFmMTEx
YTFmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJVUkxSZWdp
c3RyeS5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU2LDMwICs1NSwzMCBAQCB1c2luZyBCbG9iUGFy
dFZhcmlhbnQgPSBWYXJpYW50PFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4sIFJlZlB0cjxK
U0M6OkFycmF5QgogY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBV
UkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4gewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURURfRVhQT1JUKEJsb2IsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgc3Rh
dGljIFJlZjxCbG9iPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmxvYihzZXNzaW9uSUQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYik7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRz
LCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAgIHN0YXRpYyBSZWY8Qmxv
Yj4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29u
c3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJsb2IoY29udGV4dC5zZXNzaW9uSUQoKSwgV1RGTW92ZShibG9iUGFydFZh
cmlhbnRzKSwgcHJvcGVydHlCYWcpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxv
YihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykpOwogICAgIH0KIAotICAg
IHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgc3Rh
dGljIFJlZjxCbG9iPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBC
bG9iKHNlc3Npb25JRCwgYnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCbG9iKGJ1ZmZlciwgY29udGVudFR5cGUpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgUmVmPEJsb2I+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgc3RhdGljIFJlZjxC
bG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2Ioc2Vzc2lvbklE
LCBXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCbG9iKFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gZGVzZXJpYWxpemUo
Y29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUsIGNv
bnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCiAgICAgewogICAgICAgICBBU1NFUlQoQmxvYjo6
aXNOb3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHNlc3Npb25JRCwgc3JjVVJMLCB0
eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHNyY1VSTCwgdHlwZSwgc2l6ZSwgZmls
ZUJhY2tlZFBhdGgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5CbG9iKCk7CkBAIC0xMDQsMzAg
KzEwMywyOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8QmxvYj4gc2xpY2UobG9uZyBsb25nIHN0YXJ0
ID0gMCwgbG9uZyBsb25nIGVuZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4
KCksIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBTdHJpbmcoKSkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxV
UkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJsb2IobV9pbnRlcm5hbFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCbG9iKFBBTDo6U2Vz
c2lvbklEKTsKLSAgICBCbG9iKFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50
PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKLSAgICBCbG9iKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICBCbG9i
KFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgQmxvYigpOworICAgIEJsb2IoVmVjdG9yPEJsb2JQ
YXJ0VmFyaWFudD4mJiwgY29uc3QgQmxvYlByb3BlcnR5QmFnJik7CisgICAgQmxvYihjb25zdCBT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBCbG9iKFZlY3Rv
cjx1aW50OF90PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVudW0gUmVm
ZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9i
Q29uc3RydWN0b3IgfTsKICAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0
b3IsIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0aWFsaXplZENvbnRydWN0b3IgeyB1
bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2IoVW5pbml0aWFsaXplZENvbnRydWN0
b3IsIFBBTDo6U2Vzc2lvbklELCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CisgICAgQmxvYihVbmlu
aXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYsIFN0cmluZyYmIHR5cGUpOwogCiAgICAgZW51bSBE
ZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIHsgZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciB9Owot
ICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcg
bG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CisgICAgQmxvYihEZXNl
cmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0IFN0cmluZyYgZmls
ZUJhY2tlZFBhdGgpOwogCiAgICAgLy8gRm9yIHNsaWNpbmcuCi0gICAgQmxvYihQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihjb25zdCBVUkwmIHNyY1VSTCwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KTsKIAogcHJpdmF0ZToKLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLQogICAgIC8v
IFRoaXMgaXMgYW4gaW50ZXJuYWwgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGFzc29j
aWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4gSXQgc2VydmVzCiAgICAgLy8gYXMgYW4gaWRlbnRpZmll
ciBmb3IgdGhpcyBibG9iLiBUaGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVzZWQgdG8gc291cmNl
IHRoZSBibG9iJ3MgY29udGVudAogICAgIC8vIGludG8gYW4gSFRNTCBvciBmb3IgRmlsZVJlYWQn
aW5nLCBwdWJsaWMgYmxvYiBVUkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2UgcHVycG9zZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmlkbAppbmRleCBhZTU1MmE5NTZmMzUzYzBlNDJjYTJkNTE1N2Y1NTQw
NDFlNTFhNTAyLi42OWQwZjE1NWFkNDc5OGQ3ZTY2YjQwOGQyZGJlYzY4MjBjNmVkZGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5pZGwKQEAgLTM1LDcgKzM1LDYgQEAgdHlwZWRlZiAoQnVmZmVyU291
cmNlIG9yIEJsb2Igb3IgVVNWU3RyaW5nKSBCbG9iUGFydDsKICAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGwsCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBDb25zdHJ1Y3RvcihvcHRpb25h
bCBzZXF1ZW5jZTxCbG9iUGFydD4gYmxvYlBhcnRzLCBvcHRpb25hbCBCbG9iUHJvcGVydHlCYWcg
b3B0aW9ucyksCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LAogXSBpbnRlcmZhY2UgQmxvYiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbG9uZyBzaXplOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGE4ZjQ2ZDE2NmNiY2M5ZjM4MzVkNTU1ZTk4ZTg0NjEx
ODkyYWE4MWEuLjZhZmIzZWZmNmI4MDFhOTRlNWI2MzE3NGRhMTk4MDEyMDI2YzlhMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtMzksMzQgKzM5LDM0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEZpbGUpOwogCi1SZWY8RmlsZT4gRmls
ZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCitSZWY8RmlsZT4gRmls
ZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgcmVsYXRpdmVQYXRoKQogewotICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShzZXNzaW9u
SUQsIHBhdGgpOworICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoKTsKICAgICBmaWxl
LT5zZXRSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoKTsKICAgICByZXR1cm4gZmlsZTsKIH0KIAot
UmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCitSZWY8RmlsZT4gRmlsZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCiB7
CiAgICAgU3RyaW5nIG5hbWU7CiAgICAgU3RyaW5nIHR5cGU7CiAgICAgY29tcHV0ZU5hbWVBbmRD
b250ZW50VHlwZShwYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5cGUpOwogCiAgICAgYXV0byBp
bnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChzZXNzaW9uSUQsIGludGVybmFsVVJM
LCBwYXRoLCB0eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVC
bG9iVVJMKGludGVybmFsVVJMLCBwYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZpbGUoc2Vzc2lvbklELCBXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwg
U3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgU3RyaW5nIHsgcGF0
aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CiB9CiAKLUZpbGU6OkZpbGUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYm
IG5hbWUpCi0gICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBzZXNzaW9uSUQsIFdU
Rk1vdmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6OkZpbGUoVVJMJiYgdXJsLCBTdHJpbmcm
JiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKQorICAgIDogQmxvYih1bmluaXRp
YWxpemVkQ29udHJ1Y3RvciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHR5cGUpKQogICAgICwgbV9w
YXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKIHsKIH0KIAot
RmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1v
ZGlmaWVkKQotICAgIDogQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBzZXNzaW9uSUQs
IHVybCwgdHlwZSwgeyB9LCBwYXRoKQorRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVj
dG9yLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2Rp
ZmllZCkKKyAgICA6IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgdXJsLCB0eXBlLCB7
IH0sIHBhdGgpCiAgICAgLCBtX3BhdGgocGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwg
bV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGUobGFzdE1vZGlmaWVkKQpAQCAtODAsOCArODAsOCBA
QCBzdGF0aWMgQmxvYlByb3BlcnR5QmFnIGNvbnZlcnRQcm9wZXJ0eUJhZyhjb25zdCBGaWxlOjpQ
cm9wZXJ0eUJhZyYgaW5pdGlhbEJhZykKICAgICByZXR1cm4gYmFnOwogfQogCi1GaWxlOjpGaWxl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+
JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVy
dHlCYWcmIHByb3BlcnR5QmFnKQotICAgIDogQmxvYihjb250ZXh0LnNlc3Npb25JRCgpLCBXVEZN
b3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBjb252ZXJ0UHJvcGVydHlCYWcocHJvcGVydHlCYWcpKQor
RmlsZTo6RmlsZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKKyAg
ICA6IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgY29udmVydFByb3BlcnR5QmFnKHBy
b3BlcnR5QmFnKSkKICAgICAsIG1fbmFtZShmaWxlbmFtZSkKICAgICAsIG1fbGFzdE1vZGlmaWVk
RGF0ZU92ZXJyaWRlKHByb3BlcnR5QmFnLmxhc3RNb2RpZmllZC52YWx1ZU9yKFdhbGxUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmgKaW5kZXggZGUzYTNjYjgwOGQzYTgwNzY4MDdiZjEzYjRhMDZiY2IyODYzM2E3Mi4uZDJm
OTM4YjQyMGQzYTYwZmI5M2Y3NDBiY2IwNGQ3NDFmODNlZmY3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmgKQEAgLTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBh
IGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZp
bGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20g
dGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZpbGU+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVP
dmVycmlkZSA9IHsgfSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAnbmV3IEZp
bGUnIGNvbnN0cnVjdG9yLgotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRW
YXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3Bl
cnR5QmFnKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJv
cGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRmlsZShjb250ZXh0LCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBmaWxlbmFtZSwgcHJv
cGVydHlCYWcpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGJs
b2JQYXJ0VmFyaWFudHMpLCBmaWxlbmFtZSwgcHJvcGVydHlCYWcpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFsaXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQg
PSBXVEY6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IFdU
Rjo6bnVsbG9wdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZGVz
ZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc2Vzc2lvbklELCBwYXRoLCBzcmNVUkwsIHR5cGUsIG5h
bWUsIGxhc3RNb2RpZmllZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKGRl
c2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHBhdGgsIHNyY1VSTCwgdHlwZSwgbmFtZSwgbGFzdE1v
ZGlmaWVkKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgQmxv
YiYgYmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZmlsZSwgbmFtZSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0aChQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CisgICAg
c3RhdGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpOwogCiAgICAgYm9vbCBpc0ZpbGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTg1LDEzICs4NSwxMyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEZpbGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCk7
Ci0gICAgRmlsZShQQUw6OlNlc3Npb25JRCwgVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYm
IHBhdGgsIFN0cmluZyYmIG5hbWUpOwotICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgRmlsZShVUkwmJiwgU3RyaW5nJiYg
dHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSk7CisgICAgRmlsZShWZWN0b3I8Qmxv
YlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFByb3BlcnR5QmFnJik7CiAgICAgRmlsZShjb25zdCBCbG9iJiwgY29uc3QgU3RyaW5n
JiBuYW1lKTsKICAgICBGaWxlKGNvbnN0IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0g
ICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOwor
ICAgIEZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOwogCiAgICAgc3RhdGljIHZv
aWQgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0
aXZlQ29udGVudFR5cGUpOwogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5pZGwKaW5kZXggYmY3NmRjZGY0MDA0MjY3MzMxMDNjMjFjM2VkZjcwNDVmZDUwNGU3
MS4uNGNmNTQ3ZTFjMzZjOTRmYzU3NmE4MTFlMjA3NTNjMTU2ZDIwOWFlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuaWRsCkBAIC0yOCw3ICsyOCw2IEBAIHR5cGVkZWYgKEJ1ZmZlclNvdXJjZSBvciBC
bG9iIG9yIFVTVlN0cmluZykgQmxvYlBhcnQ7CiAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZXhw
b3NlZCBvbiBXb3JrZXJzIGFzIHdlbGwuCiBbCiAgICAgQ29uc3RydWN0b3Ioc2VxdWVuY2U8Qmxv
YlBhcnQ+IGZpbGVCaXRzLCBVU1ZTdHJpbmcgZmlsZU5hbWUsIG9wdGlvbmFsIEZpbGVQcm9wZXJ0
eUJhZyBvcHRpb25zKSwKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3NlZD0oV2lu
ZG93KSwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IDRkY2QwZGQwYzA5YzdmMGMwZTg3NDZhZDgwMTM2
NmQ4Y2FlNjk4ZTAuLjg5NzE1NWExMjI5MWRjNGU1MzUyMzRlMDg4YThjNDJlZmEwOWI1YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBGaWxlUmVhZGVyTG9hZGVyOjp+RmlsZVJlYWRlckxvYWRlcigpCiB7CiAgICAgdGVy
bWluYXRlKCk7CiAgICAgaWYgKCFtX3VybEZvclJlYWRpbmcuaXNFbXB0eSgpKQotICAgICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9uSUQsIG1f
dXJsRm9yUmVhZGluZyk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0
ZXJCbG9iVVJMKG1fdXJsRm9yUmVhZGluZyk7CiB9CiAKIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxv
YiYgYmxvYikKQEAgLTgxLDggKzgxLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG8KICAgICAg
ICAgZmFpbGVkKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX3Nlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlc3Npb25JRCgp
OwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9u
SUQsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9yUmVh
ZGluZywgYmxvYi51cmwoKSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG1fdXJsRm9y
UmVhZGluZywgYmxvYi51cmwoKSk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxvYWQgdGhlIHJl
cXVlc3QuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNDE5YjIwOTNjN2Q3
OTBiZjIxNTNkYTJiY2QyOTE1NGRkYjYwZDQwZi4uZmZhODAzNjczYzhmNGEyYjVlZjkxNjU1ZTk5
OWVmNzZjOWQyMDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmgKQEAgLTEwMyw3ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFUeXBlOwog
CiAgICAgVVJMIG1fdXJsRm9yUmVhZGluZzsKLSAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4g
bV9zZXNzaW9uSUQ7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOwogCiAg
ICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmF3RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IGE5NWIyNDlmOGM4
NDIzZmQ3NDViYzJhYzk3YjI3YmMwNGFhM2E3MzkuLjI3MjUzMGI0ZjNhNTg1OWIyNGQzOTY0NjRk
MzkxZGI2MWY2NDQyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsNjcgKzY0LDY3IEBAIHN0YXRpYyBUaHJlYWRTcGVj
aWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICByZXR1cm4gKm1hcDsKIH0K
IAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewot
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJs
LCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAg
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xh
dGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250
ZW50VHlwZS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3Rl
ckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0
ZShwYXRoKSwgY29udGVudFR5cGUpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5p
c29sYXRlZENvcHkoKSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0g
Y29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgp
LCBjb250ZW50VHlwZSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyks
IGNvbnRlbnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVy
bCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgZm9yIChhdXRvJiBwYXJ0IDogYmxvYlBhcnRzKQogICAgICAgICBwYXJ0LmRldGFj
aEZyb21DdXJyZW50VGhyZWFkKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1
cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBhcnRzKSwg
Y29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBXVEZN
b3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwg
PSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBhcnRzKSwgY29u
dGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMp
LCBjb250ZW50VHlwZSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogewogICAgIC8vIElmIHRoZSBi
bG9iIFVSTCBjb250YWlucyBudWxsIG9yaWdpbiwgYXMgaW4gdGhlIGNvbnRleHQgd2l0aCB1bmlx
dWUgc2VjdXJpdHkgb3JpZ2luIG9yIGZpbGUgVVJMLCBzYXZlIHRoZSBtYXBwaW5nIGJldHdlZW4g
dXJsIGFuZCBvcmlnaW4gc28gdGhhdCB0aGUgb3JpZ2luIGNhbiBiZSByZXRyaXZlZCB3aGVuIGRv
aW5nIHNlY3VyaXR5IG9yaWdpbiBjaGVjay4KICAgICBpZiAob3JpZ2luICYmIEJsb2JVUkw6Omdl
dE9yaWdpbih1cmwpID09ICJudWxsIikKICAgICAgICAgb3JpZ2luTWFwKCktPmFkZCh1cmwuc3Ry
aW5nKCksIG9yaWdpbik7CiAKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwpOworICAg
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwg
PSB1cmwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIHNy
Y1VSTCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBz
cmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKICAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
K3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmIChp
c01haW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBz
cmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoKSwgY29u
dGVudFR5cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNv
bGF0ZWRDb3B5KCksIGZpbGVCYWNrZWRQYXRoID0gZmlsZUJhY2tlZFBhdGguaXNvbGF0ZWRDb3B5
KCksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAg
YmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoc2Vzc2lv
bklELCB1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmlsZUJhY2tl
ZFBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlz
b2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCksIGZpbGVCYWNrZWRQ
YXRoID0gZmlsZUJhY2tlZFBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0gY29udGVu
dFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOwogICAgIH0pOwogfQog
Ci12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCit2b2lkIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25z
dCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewogICAgIGlm
IChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JV
UkxGb3JTbGljZShzZXNzaW9uSUQsIG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKKyAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3VVJMLCBzcmNVUkws
IHN0YXJ0LCBlbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbc2Vzc2lvbklELCBuZXdVUkwgPSBuZXdVUkwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9
IHNyY1VSTC5pc29sYXRlZENvcHkoKSwgc3RhcnQsIGVuZF0gewotICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQsIG5ld1VSTCwgc3JjVVJMLCBz
dGFydCwgZW5kKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtuZXdVUkwgPSBuZXdVUkwuaXNvbGF0
ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKSwgc3RhcnQsIGVuZF0gewor
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShuZXdVUkwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCk7CiAgICAgfSk7CiB9CiAKQEAgLTE0MywxNyArMTQzLDE3IEBAIHVu
c2lnbmVkIGxvbmcgbG9uZyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShjb25zdCBV
UkwmIHVybCkKICAgICByZXR1cm4gcmVzdWx0U2l6ZTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFVSTCYgdXJsKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxv
YlVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoQmxvYlVSTDo6Z2V0T3JpZ2luKHVybCkg
PT0gIm51bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAK
ICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdp
c3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpOworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTCh1cmwpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAg
IGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsKTsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRleCBhMTYw
YWNjYjhiNThiZjliNjhlYzJhM2UwMmY3ZDM1MGU4NjhhNTVmLi45Nzk1YjIxNDUwMWRjYWJiMDgz
ZGUwMjE3MmFmNjJkOGE0NTRhODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1Ro
cmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDQsMTIgKzQ0LDEyIEBAIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogCiBjbGFzcyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVj
dG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0g
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBz
cmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7Ci0gICAgc3RhdGljIHZvaWQg
dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpOworICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShj
b25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCk7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
Jik7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBiMTRkMzEwMTU4YjY0
NWZlODY5OWY3Zjk5ZjQxODU4YmQ1NWFlMjhlLi5mMDBhM2VjMDcwN2VmOTJiY2U2NGVhMTBiMWRl
ZDM4Yzk0ZTNkYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTE3
NSw3ICsxNzUsNyBAQCBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKERPTUZvcm1E
YXRhJiBmb3JtRGF0YSwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0CiAgICAgLy8gSWYgbm8gZmlsZW5h
bWUgYXQgYWxsIGlzIGVudGVyZWQsIHJldHVybiBzdWNjZXNzZnVsIGJ1dCBlbXB0eS4KICAgICAv
LyBOdWxsIHdvdWxkIGJlIG1vcmUgbG9naWNhbCwgYnV0IE5ldHNjYXBlIHBvc3RzIGFuIGVtcHR5
IGZpbGUuIEFyZ2guCiAgICAgaWYgKGZpbGVMaXN0LT5pc0VtcHR5KCkpIHsKLSAgICAgICAgZm9y
bURhdGEuYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkuc2Vz
c2lvbklEKCksIGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAgZm9ybURhdGEuYXBwZW5kKG5hbWUs
IEZpbGU6OmNyZWF0ZShlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4o
Y29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QKIAogICAgIGF1
dG8gc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID0gYWxsb3dzRGlyZWN0b3JpZXMoKSA/IEZpbGVM
aXN0Q3JlYXRvcjo6U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpZZXMgOiBGaWxlTGlzdENyZWF0
b3I6OlNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6Tm87CiAgICAgYXV0byBzaG91bGRSZXF1ZXN0
SWNvbiA9IGljb24gPyBSZXF1ZXN0SWNvbjo6WWVzIDogUmVxdWVzdEljb246Ok5vOwotICAgIG1f
ZmlsZUxpc3RDcmVhdG9yID0gRmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1
bWVudCgpLnNlc3Npb25JRCgpLCBwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBbdGhp
cywgc2hvdWxkUmVxdWVzdEljb25dKFJlZjxGaWxlTGlzdD4mJiBmaWxlTGlzdCkgeworICAgIG1f
ZmlsZUxpc3RDcmVhdG9yID0gRmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUocGF0aHMsIHNob3VsZFJl
c29sdmVEaXJlY3RvcmllcywgW3RoaXMsIHNob3VsZFJlcXVlc3RJY29uXShSZWY8RmlsZUxpc3Q+
JiYgZmlsZUxpc3QpIHsKICAgICAgICAgc2V0RmlsZXMoV1RGTW92ZShmaWxlTGlzdCksIHNob3Vs
ZFJlcXVlc3RJY29uKTsKICAgICAgICAgbV9maWxlTGlzdENyZWF0b3IgPSBudWxscHRyOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IDg3NDY4NGY1
NjNjNjEwODUzYmM2ZDFmZmYwODhiZmRjOGRmYThkYzUuLmRjNjI4NWJjOWI1ODM1MDZlM2Q2ZDIw
ZTA5NTE2NTFjZTkwZGVjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxp
c3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgRmlsZUxpc3RDcmVhdG9yOjp+RmlsZUxpc3RDcmVhdG9yKCkK
ICAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRlcik7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVu
ZERpcmVjdG9yeUZpbGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZpbGU+PiYg
ZmlsZU9iamVjdHMpCitzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3RvcjxSZWY8Rmls
ZT4+JiBmaWxlT2JqZWN0cykKIHsKICAgICBmb3IgKGF1dG8mIGNoaWxkUGF0aCA6IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8gbWV0YWRh
dGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY2hpbGRQYXRoKTsKQEAgLTUxLDIyICs1MSwy
MiBAQCBzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0bwogCiAgICAgICAgIFN0cmluZyBjaGlsZFJlbGF0
aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShjaGlsZFBhdGgpOwogICAgICAgICBpZiAobWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVN
ZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KQotICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5Rmls
ZXMoc2Vzc2lvbklELCBjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoLCBmaWxlT2JqZWN0cyk7
CisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxkUmVsYXRp
dmVQYXRoLCBmaWxlT2JqZWN0cyk7CiAgICAgICAgIGVsc2UgaWYgKG1ldGFkYXRhLnZhbHVlKCku
dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpCi0gICAgICAgICAgICBmaWxlT2JqZWN0
cy5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChzZXNzaW9uSUQsIGNoaWxkUGF0
aCwgY2hpbGRSZWxhdGl2ZVBhdGgpKTsKKyAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChG
aWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgp
KTsKICAgICB9CiB9CiAKLUZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRo
cywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK0ZpbGVMaXN0Q3JlYXRvcjo6Rmls
ZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNo
b3VsZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHNob3VsZFJlc29sdmVE
aXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Ok5vKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjcmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Ok5v
PihzZXNzaW9uSUQsIHBhdGhzKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZUZp
bGVMaXN0PFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6Tm8+KHBhdGhzKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB0
byBhdm9pZCBibG9ja2luZyB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIG1fY29tcGxldGlvbkhh
bmRlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBtX3dvcmtRdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJGaWxlTGlzdENyZWF0b3IgV29yayBRdWV1ZSIpOwotICAgICAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgc2Vzc2lvbklELCBwYXRocyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVMaXN0ID0gY3JlYXRlRmlsZUxpc3Q8U2hvdWxkUmVz
b2x2ZURpcmVjdG9yaWVzOjpZZXM+KHNlc3Npb25JRCwgcGF0aHMpOworICAgICAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGF0
aHMgPSBjcm9zc1RocmVhZENvcHkocGF0aHMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0
byBmaWxlTGlzdCA9IGNyZWF0ZUZpbGVMaXN0PFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6WWVz
PihwYXRocyk7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZmlsZUxpc3QgPSBXVEZNb3ZlKGZpbGVMaXN0
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGVy
ID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kZXIpKQogICAgICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGVyKFdURk1vdmUoZmlsZUxpc3QpKTsKQEAgLTc2LDE0ICs3NiwxNCBAQCBGaWxl
TGlzdENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxGaWxlQ2hvbwogfQogCiB0ZW1wbGF0ZTxGaWxlTGlzdENyZWF0b3I6OlNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM+Ci1SZWY8RmlsZUxp
c3Q+IEZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlRmlsZUxpc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQorUmVmPEZpbGVM
aXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hv
b3NlckZpbGVJbmZvPiYgcGF0aHMpCiB7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZU9iamVj
dHM7CiAgICAgZm9yIChhdXRvJiBpbmZvIDogcGF0aHMpIHsKICAgICAgICAgaWYgKHNob3VsZFJl
c29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBGaWxl
U3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzOjpObykpCi0gICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhz
ZXNzaW9uSUQsIGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0
aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8u
cGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3Rz
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNy
ZWF0ZShzZXNzaW9uSUQsIGluZm8ucGF0aCwgaW5mby5kaXNwbGF5TmFtZSkpOworICAgICAgICAg
ICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZShpbmZvLnBhdGgsIGluZm8uZGlzcGxh
eU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEZpbGVMaXN0OjpjcmVhdGUoV1RGTW92ZShmaWxl
T2JqZWN0cykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENy
ZWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmgKaW5kZXggODYz
NzU0M2EwNzc5N2MwODI5Nzc3ZTNmOTU0MGUzNDJiZjQ2N2ZiOC4uM2M4Yjk0ZDdiZWVlODNhZmIx
MWZjMjVlY2UzZDBkMjRlZjFlYTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlTGlzdENyZWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5oCkBAIC00Miw5ICs0Miw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBDb21wbGV0aW9uSGFuZGxl
ciA9IEZ1bmN0aW9uPHZvaWQoUmVmPEZpbGVMaXN0PiYmKT47CiAKICAgICBlbnVtIGNsYXNzIFNo
b3VsZFJlc29sdmVEaXJlY3RvcmllcyB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmPEZpbGVM
aXN0Q3JlYXRvcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9y
PEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNo
b3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICBzdGF0aWMgUmVmPEZpbGVMaXN0Q3JlYXRvcj4gY3JlYXRlKGNvbnN0IFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcyBz
aG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlTGlzdENyZWF0
b3Ioc2Vzc2lvbklELCBwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlTGlz
dENyZWF0b3IocGF0aHMsIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+RmlsZUxpc3RDcmVhdG9yKCk7CkBAIC01Miwx
MCArNTIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsKCk7CiAKIHByaXZhdGU6Ci0gICAg
RmlsZUxpc3RDcmVhdG9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJG
aWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25IYW5k
bGVyJiYpOworICAgIEZpbGVMaXN0Q3JlYXRvcihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25IYW5kbGVy
JiYpOwogCiAgICAgdGVtcGxhdGU8U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29s
dmVEaXJlY3Rvcmllcz4KLSAgICBzdGF0aWMgUmVmPEZpbGVMaXN0PiBjcmVhdGVGaWxlTGlzdChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+Jik7CisgICAg
c3RhdGljIFJlZjxGaWxlTGlzdD4gY3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+Jik7CiAKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKICAg
ICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggMjUwZmI3Nzc0NTI4NWQ1ZDU3
NzQ4ODM2ZDk2YTk2ZmU1MTc3MTIwMC4uZmNmYTc4NGEwNWNkNTA1NWIxOGUzNmRiNTg5OGJlNzBh
ZGY3MjYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRh
dGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5CiAgICAgaWYg
KCFtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFjaG1lbnQobWltZVR5cGUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBob3N0RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJM
KGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShkb2N1bWVudCgpLnNlc3Npb25JRCgpLCBXVEZNb3Zl
KGRhdGEpLCBtaW1lVHlwZSkpKTsKKyAgICBob3N0RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBtaW1lVHlwZSkpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAppbmRleCAyMDE0ZWZlNzVjZWM0NjBlMzc5MWUzNjNmNTYyOGU1MDAxYjhk
Y2U5Li45Y2ZiZGI4NzEwOTVlZDAyZjMxNjQ1MzFkNDY3YzUyODg1YTczM2IwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNzMyLDcgKzczMiw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojp0b0Jsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgUmVmCiAgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iOwogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYmxvYkRhdGEgPSBkYXRhKCppbWFnZURhdGEsIGVuY29kaW5nTUlN
RVR5cGUsIHF1YWxpdHkpOwogICAgICAgICBpZiAoIWJsb2JEYXRhLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoY29udGV4dC5zZXNzaW9uSUQoKSwgV1RGTW92ZShi
bG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNy
ZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgICAgIGNhbGxi
YWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIFdURk1vdmUoYmxvYikpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KQEAgLTc0Myw3ICs3NDMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBI
VE1MQ2FudmFzRWxlbWVudDo6dG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFJlZgogICAgIFJlZlB0cjxCbG9iPiBibG9iOwogICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0
YSA9IGJ1ZmZlcigpLT50b0RhdGEoZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgaWYg
KCFibG9iRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoY29udGV4
dC5zZXNzaW9uSUQoKSwgV1RGTW92ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAg
ICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGluZ01JTUVU
eXBlKTsKICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCBXVEZNb3ZlKGJs
b2IpKTsKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFu
YWdlci5jcHAKaW5kZXggYjY2OGRhMWYzMjE0ZGJmOWI5MTYxZWZhODMyNTZjOTVjYTgyMTFkMy4u
ZDJmOTZkNGY1ZDdmNDUzNGVkMjM1NWQ5YTdlZTllZGNlMWVmODZmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUHVibGlj
VVJMTWFuYWdlcjo6cmV2b2tlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGZvciAoYXV0byYgcmVn
aXN0cnkgOiBtX3JlZ2lzdHJ5VG9VUkwpIHsKICAgICAgICAgaWYgKHJlZ2lzdHJ5LnZhbHVlLmNv
bnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKLSAgICAgICAgICAgIHJlZ2lzdHJ5LmtleS0+dW5yZWdp
c3RlclVSTCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB1cmwpOworICAgICAgICAgICAgcmVn
aXN0cnkua2V5LT51bnJlZ2lzdGVyVVJMKHVybCk7CiAgICAgICAgICAgICByZWdpc3RyeS52YWx1
ZS5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgUHVibGljVVJMTWFuYWdlcjo6c3RvcCgpCiAgICAgbV9pc1N0
b3BwZWQgPSB0cnVlOwogICAgIGZvciAoYXV0byYgcmVnaXN0cnkgOiBtX3JlZ2lzdHJ5VG9VUkwp
IHsKICAgICAgICAgZm9yIChhdXRvJiB1cmwgOiByZWdpc3RyeS52YWx1ZSkKLSAgICAgICAgICAg
IHJlZ2lzdHJ5LmtleS0+dW5yZWdpc3RlclVSTCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBV
UkwoeyB9LCB1cmwpKTsKKyAgICAgICAgICAgIHJlZ2lzdHJ5LmtleS0+dW5yZWdpc3RlclVSTChV
UkwoeyB9LCB1cmwpKTsKICAgICB9CiAKICAgICBtX3JlZ2lzdHJ5VG9VUkwuY2xlYXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVVJMUmVnaXN0cnkuaAppbmRleCBlM2RjNDZhOWU5Mjc0MTAxMGY0YTdjYjJjNWJj
ZjA2NmU3YTI0ZjcyLi4yMmZlODE1ODA1NjM4MDY4Y2IwY2NkYjQxZTYxOTczYTU0ODA5Y2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFVSTFJl
Z2lzdHJ5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5VUkxSZWdpc3RyeSgpID0gZGVmYXVsdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lz
dGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgPSAwOwogCiAgICAgLy8gVGhpcyBp
cyBhbiBvcHRpb25hbCBBUEkKICAgICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29u
c3QgU3RyaW5nJikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCA1MzYzNzAzYjhjYjQzYzJi
ZDkzMDBmYjY1YTk3NDRmNDg1ZGRlZTRkLi44YjkxZTFjMzI0ZDc4ZTcxNWU4ZGU3Zjc3OGY0Mzhi
Y2NkY2E4Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBAIC0x
MDYsMTEgKzEwNiwxMCBAQCBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBQb2xpY3lDaGVj
a2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShSZQogCiAgICAgLy8gQ3JlYXRl
IGEgbmV3IHRlbXBvcmFyeSBibG9iVVJMIGluIGNhc2UgdGhpcyBvbmUgZ2V0cyByZXZva2VkIGR1
cmluZyB0aGUgYXN5bmNocm9ub3VzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uLgogICAgIFVS
TCB0ZW1wb3JhcnlCbG9iVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKCZtX2ZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIGF1dG8gc2Vzc2lvbklEID0gbV9mcmFt
ZS5kb2N1bWVudCgpLT5zZXNzaW9uSUQoKTsKLSAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwoc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMLCByZXF1ZXN0LnVybCgpKTsKKyAgICBi
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodGVtcG9yYXJ5QmxvYlVSTCwgcmVxdWVzdC51
cmwoKSk7CiAgICAgcmVxdWVzdC5zZXRVUkwodGVtcG9yYXJ5QmxvYlVSTCk7Ci0gICAgcmV0dXJu
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4oW3Nlc3Npb25JRCwgdGVtcG9yYXJ5QmxvYlVSTCA9
IFdURk1vdmUodGVtcG9yYXJ5QmxvYlVSTCldIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5y
ZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMKTsKKyAgICByZXR1cm4g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPihbdGVtcG9yYXJ5QmxvYlVSTCA9IFdURk1vdmUodGVt
cG9yYXJ5QmxvYlVSTCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JV
UkwodGVtcG9yYXJ5QmxvYlVSTCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCAxMDZjODBiN2RiZjgzZmZjMjFhM2Y5ZGY5MTFjYTJlMzJjMDA0ZDc1
Li4wYWYyOGQ2NWRiZTNmMWIzMzQxNzA1NWExMWVkZTIwMDAyNGRiZTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNzY4LDcgKzM3NjgsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVu
dCwgQ2hlY2tEcgogICAgIC8vIFRoaXMgZG9lcyB3b3JrIG9ubHkgaWYgd2UgbWlzc2VkIGEgZHJh
Z0VuZC4gRG8gaXQgYW55d2F5LCBqdXN0IHRvIG1ha2Ugc3VyZSB0aGUgb2xkIGRhdGFUcmFuc2Zl
ciBnZXRzIG51bWJlZC4KICAgICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKLSAgICBkcmFn
U3RhdGUoKS5kYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKm1fZnJh
bWUuZG9jdW1lbnQoKSk7CisgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JEcmFnKCk7CiAgICAgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhh
c05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA9IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6
Tm87CiAgICAgCiAgICAgaWYgKGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAppbmRleCA2
NjBhNzk2ZDBiMmQ4OTg2MjUxYjgwNmQzOTEzYmY5MTQ1NGU5ZTc3Li5mZTkxZTgxYWFkNDMwMmUw
M2RiOTY3YTQ2YTMwNmFjNmQ0MmNjZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTMxLDcgKzMxLDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMjUgKzQ3LDI1IEBAIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9i
IFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBmaWxlLgotICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBSZWY8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwogCiAgICAg
Ly8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgYmxvYiBk
YXRhLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9y
PEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CiAgICAgCiAgICAg
Ly8gUmVnaXN0ZXJzIGEgbmV3IGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRhIGlk
ZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNVUkwuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYgc3JjVVJMKSA9IDA7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVm
ZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VS
TCBvciwgaWYgbm9uZSBmb3VuZCwgcmVmZXJyaW5nIHRvIHRoZSBmaWxlIGZvdW5kIGF0IHRoZSBn
aXZlbiBwYXRoLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJl
ZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKIAogICAgIC8vIE5lZ2F0
aXZlIHN0YXJ0IGFuZCBlbmQgdmFsdWVzIHNlbGVjdCBmcm9tIHRoZSBlbmQuCi0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNv
bnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBV
UkwmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmls
ZVBhdGhzKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCBCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVn
aXN0cnlJbXBsKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggYjg3OTYxMjgzYzNkOGU0ZWFkYzU1NzI2YTZjZWI5MGEwYzZmNzBhYy4u
Y2IzZmRkNWFhNGI3Y2RkMTc5OTUwMzRiMzE1NjVjOTQ0N2RmMTljZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDI2Myw3ICs0MjYzLDcgQEAgUmVmUHRyPEZpbGU+IElu
dGVybmFsczo6Y3JlYXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgaWYgKCF1cmwuaXNM
b2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gRmlsZTo6
Y3JlYXRlKGRvY3VtZW50LT5zZXNzaW9uSUQoKSwgdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOworICAg
IHJldHVybiBGaWxlOjpjcmVhdGUodXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogfQogCiB2b2lkIElu
dGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCA2ZTFiY2EzYTQ3
ZmRkYTYxZmQ5ZmRhYmY3MThkYTQ0MmQ4YmM1MzYxLi41NTQ0NTYxNWUwZTFlODFlY2ExNGI4MTZj
M2U4ZTQ5MWI3MzdiM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCBSZWY8RmV0Y2hFdmVudD4g
U2VydmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlQmVpbmdEaXNwYXRjaGVkRmV0Y2hFdmVudChT
Y3JpcHRFeAogCiBSZWY8RmV0Y2hSZXNwb25zZT4gU2VydmljZVdvcmtlckludGVybmFsczo6Y3Jl
YXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKIHsKLSAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoY29udGV4dC5zZXNzaW9uSUQo
KSk7CisgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCk7CiAgICAgYXV0byBmb3JtRGF0YSA9
IEZvcm1EYXRhOjpjcmVhdGUoKTsKICAgICBmb3JtRGF0YS0+YXBwZW5kQmxvYihibG9iLT51cmwo
KSk7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIHJlc3BvbnNlLnNldFR5
cGUoUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6Q29ycyk7CiAgICAgcmVzcG9uc2Uuc2V0VGFpbnRp
bmcoUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZSk7Ci0gICAgYXV0byBmZXRjaFJl
c3BvbnNlID0gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIEZldGNoQm9keTo6ZnJvbUZv
cm1EYXRhKGNvbnRleHQuc2Vzc2lvbklEKCksIGZvcm1EYXRhKSwgRmV0Y2hIZWFkZXJzOjpHdWFy
ZDo6UmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICBhdXRvIGZldGNoUmVzcG9uc2Ug
PSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4dCwgRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEo
Zm9ybURhdGEpLCBGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSwgV1RGTW92ZShyZXNwb25z
ZSkpOwogICAgIGZldGNoUmVzcG9uc2UtPmluaXRpYWxpemVPcGFxdWVMb2FkSWRlbnRpZmllckZv
clRlc3RpbmcoKTsKICAgICByZXR1cm4gZmV0Y2hSZXNwb25zZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guY3BwCmluZGV4IDIwYTJhZGFmMzU2MmY5NGM2ZGNiMzdiNDA4OWUyNGY2ZGI3ZGZiZmEu
LjQ0OTY5YWYwNmY0ZjhjMWU3N2E1YzFlYmE5ZmQ0YjAyMjNhMDY3YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50
KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNj
CiAgICAgYXV0byogZm9ybURhdGEgPSByZXF1ZXN0Lmh0dHBCb2R5KCk7CiAgICAgT3B0aW9uYWw8
RmV0Y2hCb2R5PiBib2R5OwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHko
KSkgewotICAgICAgICBib2R5ID0gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZ2xvYmFsU2NvcGUu
c2Vzc2lvbklEKCksICpmb3JtRGF0YSk7CisgICAgICAgIGJvZHkgPSBGZXRjaEJvZHk6OmZyb21G
b3JtRGF0YSgqZm9ybURhdGEpOwogICAgICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAgICAgIGNs
aWVudC0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBmNWM2NzUzMDVmNzVkNDQ0MjE2OWNkN2I4MjFmYzUw
ZDVhZTU2NTM4Li43OWJkNDYxMjAzZWRkMjQ0ZGU1N2M2OTYwNjQ0NmI2OGMxOTY1YzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBSZWY8
QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgICAgIGRhdGEu
YXBwZW5kKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5kYXRhKCksIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT5zaXplKCkpOwogICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsK
ICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRl
bnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMg
dG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KLSAgICByZXR1cm4gQmxvYjo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCksIFdURk1vdmUoZGF0YSks
IG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+
IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1Bs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMGM4NDZkYjAyNDJmM2E3NTEzZTZjM2IxMTFlYWFj
MWQ4ODYwZWM5NS4uZDRmODc1MzM2MDljZGRjNDljOWRjYjU0YTFkZGZiZjU4MzNlMGE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTUyLDE0ICs1MiwxNCBAQCBCbG9i
UmVnaXN0cnkqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVn
aXN0cnkoKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGNsYXNzIEVtcHR5
QmxvYlJlZ2lzdHJ5IDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7Ci0gICAgICAgIHZv
aWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgUmVmPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBV
UkwmIHNyY1VSTCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgICAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQotICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpIGZpbmFsIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkxG
b3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICAgICAgdm9pZCB3
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYg
ZmlsZVBhdGhzKT4mJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB9OwogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxFbXB0eUJsb2JSZWdpc3RyeT4gYmxvYlJlZ2lzdHJ5OwogICAgIHJldHVy
biAmYmxvYlJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IGViNjMwYTAxNTA5ZjZjNWZk
N2Y2NGQzMjhlZGEzZDYwNzhhZjdmNTkuLjhmNDdiOGYwNzBlMWYyOTgzMzQ1MzhkY2E4Y2Y0ZDRl
NGEzOTRjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
Cit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRs
ZTsKIApAQCAtNDcsMjggKzQ3LDI4IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVy
RmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25IYW5kbGUsIGNv
bnRlbnRUeXBlKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxv
YlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBi
bG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBi
bG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJs
b2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJl
Z2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lz
dGVyQmxvYlVSTEZyb21VUkwgeyB1cmwsIHNyY1VSTCB9LCAwKTsKIH0KIAotdm9pZCBCbG9iUmVn
aXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVC
YWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiB7CiAgICAgQVNTRVJUKGZpbGUpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQodXJsLCBzcmNVUkwsIGZpbGUtPnBhdGgoKSwgY29udGVudFR5cGUpLCAwKTsKIH0K
IAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnJlZ2lzdGVyQmxvYlVSTCh1cmwpLCAw
KTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxGb3JT
bGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOwogfQpAQCAtODEsOSArODEsOCBAQCB1
bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0IFVSTCYg
dXJsKQogICAgIHJldHVybiByZXN1bHRTaXplOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5
Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBm
aWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9VTlVTRUQoc2Vz
c2lvbklELCBzZXNzaW9uSUQgPT0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCkp
OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IGQ3NjYxNTg3ZTNlNzQzODMyZTIzMjVj
Njc5NmNmYTM0NWJiOTU2YzAuLjQwOTg0ZGIyN2RhZGQ3ZDY1ZTlhNTFhYzE3MmQwNTc3MTkyZDRh
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuaApAQCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBCbG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0
cnkgewogcHVibGljOgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbDsK
LSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJikgZmlu
YWw7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIFJlZjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7Cisg
ICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIGZp
bmFsOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsOworICAgIHZvaWQgdW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckJsb2JV
UkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kKSBmaW5hbDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUo
Y29uc3QgVVJMJikgZmluYWw7Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWw7CisgICAg
dm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMp
PiYmKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBk
ZWY5OGRhZTJmZWI0NDgwN2VmYjMyMTdhY2RjY2VjYmI2NTk5ZGMwLi5mNjc3MjBlMzk1Y2ZmZTMw
MzEwZDg2NGJmOTg5YmUyZmNmYTJiYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CkBAIC02NCwxNCArNjQsMTQgQEAgUGFzdGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiAKIGNsYXNzIFdlYkJsb2JSZWdpc3Ry
eSBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgewogcHJpdmF0ZToKLSAgICB2b2lkIHJlZ2lz
dGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
ZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShy
ZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBwYXJ0cywgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJs
b2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9Ci0gICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNy
Y1VSTCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwp
OyB9Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRh
dGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
ZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KLSAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgZmlu
YWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwg
c3RhcnQsIGVuZCk7IH0KLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJlZ2lzdGVyQmxvYlVS
TCh1cmwpOyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBS
ZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwg
V1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1
cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9iUmVn
aXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250
ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBm
aW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJM
LCBzdGFydCwgZW5kKTsgfQorICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsgfQogICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmIHVybCkgZmluYWwgeyByZXR1
cm4gbV9ibG9iUmVnaXN0cnkuYmxvYlNpemUodXJsKTsgfQotICAgIHZvaWQgd3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9i
VVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkud3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsgfQor
ICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBh
dGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS53cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OyB9CiAKICAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnlJbXBsKCkgZmluYWwgeyBy
ZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CmluZGV4IGI3NjkwZGZiZGZmMTlhYzhlNDY1ZGYwYWM5ZDkzNjIwNjJiMzRlZmQuLmNjZTBjOTRi
MmM5MTgxYjBkNDFjYjM5ZDFjMjI2YmY2Nzk4Y2Y2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtNjIsMTQgKzYyLDE0IEBAIFBhc3RlYm9hcmRTdHJhdGVneSogV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKQogCiBjbGFzcyBXZWJC
bG9iUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgQmxvYlJlZ2lzdHJ5IHsKIHByaXZhdGU6Ci0gICAg
dm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwg
UmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmws
IFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9Ci0gICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYg
cGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnku
cmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShwYXJ0cyksIGNvbnRlbnRUeXBlKTsgfQotICAg
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVy
bCwgc3JjVVJMKTsgfQotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNr
ZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVm
UHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUp
OyB9Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBlbmQpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJs
LCBzcmNVUkwsIHN0YXJ0LCBlbmQpOyB9Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkudW5yZWdp
c3RlckJsb2JVUkwodXJsKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxv
YlVSTCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBwYXJ0cywg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3Rl
ckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7
IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7IH0KKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2Us
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0
ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIFdURk1vdmUocmVmZXJl
bmNlKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShj
b25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1
cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9iVVJMKHVy
bCk7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1cmwpIGZp
bmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXplKHVybCk7IH0KLSAgICB2b2lkIHdy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBm
aWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5Lndy
aXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7IH0KKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVnaXN0
cnkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsgfQogCiAgICAgQmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5SW1wbCgp
IGZpbmFsIHsgcmV0dXJuICZtX2Jsb2JSZWdpc3RyeTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379064</attachid>
            <date>2019-09-18 13:07:53 -0700</date>
            <delta_ts>2019-09-18 13:32:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201936-20190918130752.patch</filename>
            <type>text/plain</type>
            <size>118776</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ2MjEyMjRiY2YxMzQ2
MGQxNzljMGMwNmQ1M2IzZmRkN2E5YTYwMS4uNjYwNWIwNDhkOGVhMWU2MzdlNzE4Mzg0OWExZjg5
OTBiNGU4Y2NhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOS0wOS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEJsb2JSZWdpc3RyeSBubyBs
b25nZXIgbmVlZHMgU2Vzc2lvbklEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxOTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBuZWVkcyBTZXNzaW9uSURzLCBu
b3cgdGhhdCB3ZSBoYXZlIGEgc2luZ2xlIHNlc3Npb24gcGVyIFdlYlByb2Nlc3MuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlRW50cnk6
OmZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
c29sdmVXaXRoVHlwZUFuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpibG9iKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjp+RmV0Y2hMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6
Y3JlYXRlUmVjb3JkaW5nRGF0YUJsb2IpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2VSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkaWRSZWNl
aXZlUmF3RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6c2VuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlz
a0ZvckluZGV4ZWREQik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBkb20vRGF0YVRy
YW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFu
ZEl0ZW1MaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRl
Rm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3Rh
cnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3Ap
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BU
YXJnZXQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKiBlZGl0aW5n
L1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIgY29uc3QpOgor
ICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50
RGF0YVRyYW5zZmVyIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2Zl
ciBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFk
RmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1l
bnRGb3JGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6Cisg
ICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzdG9yZUF0
dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JVUkxSZWdpc3RyeTo6dW5yZWdpc3RlclVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6On5CbG9iKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iOjpzbGljZSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAg
ICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0
aFJlbGF0aXZlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZTo6RmlsZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6fkZpbGVSZWFkZXJM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6c3RhcnQpOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5Lmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAgKiBodG1sL0ZpbGVM
aXN0Q3JlYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmREaXJlY3RvcnlGaWxlcyk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlTGlzdENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVMaXN0Q3JlYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RD
cmVhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9z
aW5nSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9CbG9iKToKKyAgICAgICAg
KiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljVVJM
TWFuYWdlcjo6cmV2b2tlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OnN0
b3ApOgorICAgICAgICAqIGh0bWwvVVJMUmVnaXN0cnkuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpleHRlbmRC
bG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y3JlYXRl
RmlsZSk6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZU9wYXF1ZVdpdGhC
bG9iQm9keVJlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNo
OjpkaXNwYXRjaEZldGNoRXZlbnQpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToK
KwogMjAxOS0wOS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlciBJUEMg
bm8gbG9uZ2VyIG5lZWQgYSBzZXNzaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWYwMWI3NjAxN2M1NWJlYjVh
MmRlYzBiNjJiMDJmZDJhODM3OTYzNi4uNzM4ZTA3ODc1Yzc2MDg4NGYzOTJlYjExYTU3YjUwYmYw
MGQ0NjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0wOS0xOCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEJsb2JSZWdpc3RyeSBubyBsb25nZXIg
bmVlZHMgU2Vzc2lvbklEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAxOTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBuZWVkcyBTZXNzaW9uSURzLCBub3cgdGhh
dCB3ZSBoYXZlIGEgc2luZ2xlIHNlc3Npb24gcGVyIFdlYlByb2Nlc3MuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9i
UmVnaXN0cnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVC
bG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxv
YlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdp
c3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6CisKIDIwMTktMDktMTggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIgSVBDIG5vIGxvbmdlciBuZWVkIGEgc2Vzc2lv
bklECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMTVkNThiYzBjMTdiN2VhZTE1Njg0
NWRiYzBkZWI0YTMyMDliYTUyZi4uYWI5MjkzNzgwZmJjNjY2NDE0ZjgzNWRhMzRmODcyYzg2YzZl
NGE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5
LTA5LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYlJl
Z2lzdHJ5IG5vIGxvbmdlciBuZWVkcyBTZXNzaW9uSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5MzYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCbG9iUmVnaXN0cnkgbm8gbG9uZ2VyIG5lZWRzIFNl
c3Npb25JRHMsIG5vdyB0aGF0IHdlIGhhdmUgYSBzaW5nbGUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vz
cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToK
KwogMjAxOS0wOS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IENhY2hlU3RvcmFnZVByb3ZpZGVyOjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZG9l
cyBub3QgbmVlZCB0byB0YWtlIGluIGEgU2Vzc2lvbklECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggNjg0NWQ4ZWQ5ZmU4NjJhOGU0MDc4ZTU5NDA1NGU5ZWQ1OWQwMzQ0ZS4uM2VlZDJi
Y2NlNzVhODY3NmQ0NWE4ODU2YzZkZjdiNGUyMDA3ZDMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA5LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBuZWVkcyBTZXNz
aW9uSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDE5MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
bG9iUmVnaXN0cnkgbm8gbG9uZ2VyIG5lZWRzIFNlc3Npb25JRHMsIG5vdyB0aGF0IHdlIGhhdmUg
YSBzaW5nbGUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisKIDIwMTktMDktMTYgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtjdXJs
XSBEb24ndCBjb21waWxlIHVudXNlZCBDZXJ0aWZpY2F0ZUNGV2luLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDlm
NGExMGI3MTFiZjM2M2YwYThhMjM0YzllMzI3MWY1MmVlNzZmYjMuLjE2MWFlMDM0MTQ5YjVmNGIw
YTMyNDc2OWYzMTc1YTAwNzQxMzY5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTMzMywxNyArMzMzLDE3IEBAIHZv
aWQgRE9NRmlsZVN5c3RlbTo6Z2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgRmlsZVN5c3RlbURpcmVjdG9yCiAgICAgfSk7CiB9CiAKLXZvaWQgRE9NRmlsZVN5c3RlbTo6
Z2V0RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUVu
dHJ5JiBmaWxlRW50cnksIEdldEZpbGVDYWxsYmFjayYmIGNvbXBsZXRpb25DYWxsYmFjaykKK3Zv
aWQgRE9NRmlsZVN5c3RlbTo6Z2V0RmlsZShGaWxlU3lzdGVtRmlsZUVudHJ5JiBmaWxlRW50cnks
IEdldEZpbGVDYWxsYmFjayYmIGNvbXBsZXRpb25DYWxsYmFjaykKIHsKICAgICBhdXRvIHZpcnR1
YWxQYXRoID0gZmlsZUVudHJ5LnZpcnR1YWxQYXRoKCk7CiAgICAgYXV0byBmdWxsUGF0aCA9IGV2
YWx1YXRlUGF0aCh2aXJ0dWFsUGF0aCk7Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtjb250
ZXh0ID0gbWFrZVJlZihjb250ZXh0KSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBh
dGgpLCB2aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNvbXBsZXRp
b25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQ
YXRoKSwgdmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVk
VHlwZShmdWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZpbGVNZXRhZGF0YTo6VHlwZTo6
RmlsZSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRl
eHQpLCBmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZhbGlkYXRlZFZpcnR1
YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlv
bkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0
aCksIHZhbGlkYXRlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1
YWxQYXRoKSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2sp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayh2YWxpZGF0ZWRW
aXJ0dWFsUGF0aC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVhdGUoY29udGV4dC0+c2Vzc2lv
bklEKCksIGZ1bGxQYXRoKSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZp
bGU6OmNyZWF0ZShmdWxsUGF0aCkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDM4
MzZiODc3YTY3ZDZiZDRjMzk4Mjg5NTdkNWY1NDZhNDhmYjYzNjYuLjc0YTNjZTZjM2VjNWRkZjA1
ZjAzNDI2NjFmNzYwNzNjNWU1NTljMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5JiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCwgY29uc3QgRmlsZVN5c3RlbURp
cmVjdG9yeUVudHJ5OjpGbGFncyYsIEdldEVudHJ5Q2FsbGJhY2smJik7CiAKICAgICB1c2luZyBH
ZXRGaWxlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGU+
PiYmKT47Ci0gICAgdm9pZCBnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lz
dGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0RmlsZShGaWxl
U3lzdGVtRmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxiYWNrJiYpOwogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IERPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCmluZGV4
IDg4MjkwNDNjODRjZTkxNDU4Njk4YTZhZjI2MGJmMjBiZDIzZmVmNWYuLmU4YzllZjM4ZTkzMmU0
ZTdhNTZjZDlkZjQ0OGE2MmM3NWM5NzFiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKQEAgLTM4LDkg
KzM4LDkgQEAgRmlsZVN5c3RlbUZpbGVFbnRyeTo6RmlsZVN5c3RlbUZpbGVFbnRyeShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01GaWwKIHsKIH0KIAotdm9pZCBGaWxlU3lzdGVt
RmlsZUVudHJ5OjpmaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxGaWxl
Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJv
ckNhbGxiYWNrKQordm9pZCBGaWxlU3lzdGVtRmlsZUVudHJ5OjpmaWxlKFJlZjxGaWxlQ2FsbGJh
Y2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxi
YWNrKQogewotICAgIGZpbGVzeXN0ZW0oKS5nZXRGaWxlKGNvbnRleHQsICp0aGlzLCBbc3VjY2Vz
c0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RG
TW92ZShlcnJvckNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkgeworICAgIGZpbGVzeXN0ZW0oKS5n
ZXRGaWxlKCp0aGlzLCBbc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2sp
LCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkg
ewogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICBpZiAo
ZXJyb3JDYWxsYmFjaykKICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVu
dChET01FeGNlcHRpb246OmNyZWF0ZShyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVF
bnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxl
RW50cnkuaAppbmRleCBhYjk2ZTAyMTQwYmMzY2Y4OTU2YzZkZWJhYTc0NGMxOGRjMmMyMzE1Li5l
YTc5ZTNiMzk0YzJhMTNkM2ZiZGQ3YjZhYTRiYTFhMDNhMDliMWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
aWxlU3lzdGVtRmlsZUVudHJ5KGNvbnRleHQsIGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBmaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RmlsZUNh
bGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51bGxwdHIpOworICAgIHZvaWQg
ZmlsZShSZWY8RmlsZUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51bGxw
dHIpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNGaWxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0Zp
bGVTeXN0ZW1GaWxlRW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBp
L0ZpbGVTeXN0ZW1GaWxlRW50cnkuaWRsCmluZGV4IGRhZDk3YjljNDA3MGFjY2FmN2ViM2YzMWQ3
N2U1YzkzOTU1NDBiYWMuLjJkNzM1MmI1MTJkMGJiN2VhY2VjNmEwNTkyZThmZWVhOTE4MzljMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVt
RmlsZUVudHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmls
ZVN5c3RlbUZpbGVFbnRyeS5pZGwKQEAgLTI2LDUgKzI2LDUgQEAKIFsKICAgICBFbmFibGVkQXRS
dW50aW1lPURpcmVjdG9yeVVwbG9hZCwKIF0gaW50ZXJmYWNlIEZpbGVTeXN0ZW1GaWxlRW50cnkg
OiBGaWxlU3lzdGVtRW50cnkgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSB2b2lkIGZpbGUoRmlsZUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JD
YWxsYmFjaz8gZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBmaWxlKEZpbGVDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBhZDI2YjM0
Y2Y2MTVhMTE1NDFhZjgxMDVjMmI4OWRhMzVjYjNhNzA0Li4yOTE4NTRhZTE3YzdmZDNhNGY1Y2Ey
N2QwODE1ZDIzODE2NjMwNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCkBAIC03NSw3ICs3NSw3IEBAIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gRmV0Y2hC
b2R5OjpleHRyYWN0KEluaXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICB9KTsK
IH0KIAotT3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIEZvcm1EYXRhJiBmb3JtRGF0YSkKK09wdGlvbmFsPEZldGNoQm9k
eT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQogewogICAgIEFT
U0VSVCghZm9ybURhdGEuaXNFbXB0eSgpKTsKIApAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxG
ZXRjaEJvZHk+IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgRm9ybURhdGEmCiAgICAgYXV0byB1cmwgPSBmb3JtRGF0YS5hc0Jsb2JVUkwoKTsKICAgICBp
ZiAoIXVybC5pc051bGwoKSkgewogICAgICAgICAvLyBGSVhNRTogUHJvcGVybHkgc2V0IG1pbWUg
dHlwZSBhbmQgc2l6ZSBvZiB0aGUgYmxvYi4KLSAgICAgICAgUmVmPGNvbnN0IEJsb2I+IGJsb2Ig
PSBCbG9iOjpkZXNlcmlhbGl6ZShzZXNzaW9uSUQsIHVybCwgeyB9LCB7IH0sIHsgfSk7CisgICAg
ICAgIFJlZjxjb25zdCBCbG9iPiBibG9iID0gQmxvYjo6ZGVzZXJpYWxpemUodXJsLCB7IH0sIHsg
fSwgeyB9KTsKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSB7IFdURk1vdmUoYmxvYikgfTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGIyN2Uw
YTUxODdhZThiZjg0YmQ3OTE3YzdlNzEwNThlMTFiOTg1NDcuLmMzZjk2ZmY0YWZmZjIwZDExMzY0
NDMzYTFmMmFjZjZhZDFkOWZiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PEZldGNoQm9keT4gZXh0cmFjdChJbml0JiYsIFN0cmluZyYpOwogICAgIEZldGNoQm9keSgpID0g
ZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+
IGZyb21Gb3JtRGF0YShQQUw6OlNlc3Npb25JRCwgRm9ybURhdGEmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgT3B0aW9uYWw8RmV0Y2hCb2R5PiBmcm9tRm9ybURhdGEoRm9ybURhdGEmKTsK
IAogICAgIHZvaWQgbG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxv
YWRpbmdTdWNjZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGIyNmVlZTM1ZGY4YzNjZDc4MmUzN2M3ZmFkOGM0
MjA2NWEzMWRjOC4uMjJkNDM3MmIzMWVmZTcyNGJlMmUwMmM4N2FkZDY3NzM1OTNiYzA2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBp
bmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlKGxlbmd0aCk7CiAgICAgbWVtY3B5
KHZhbHVlLmRhdGEoKSwgZGF0YSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNl
c3Npb25JRCwgV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6
Y3JlYXRlKFdURk1vdmUodmFsdWUpLCBjb250ZW50VHlwZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRQcmVwZW5kQk9NKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKQEAgLTY0LDggKzY0LDggQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5k
RGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAg
ICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgZGF0YSwg
bGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5
cGU6OkJsb2I6Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5
Q3JlYXRlZDxJRExJbnRlcmZhY2U8QmxvYj4+KFsmZGF0YSwgJmxlbmd0aCwgJmNvbnRlbnRUeXBl
XShhdXRvJiBjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQuc2Vzc2lvbklEKCksIGRhdGEsIGxlbmd0aCwgY29udGVudFR5cGUpOworICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJs
b2I+PihbJmRhdGEsICZsZW5ndGgsICZjb250ZW50VHlwZV0oYXV0byYpIHsKKyAgICAgICAgICAg
IHJldHVybiBibG9iRnJvbURhdGEoZGF0YSwgbGVuZ3RoLCBjb250ZW50VHlwZSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6
SlNPTjoKQEAgLTEzMiw4ICsxMzIsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qCiAgICAgICAg
IGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIHRha2VBc0Fy
cmF5QnVmZmVyKCkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBUeXBlOjpCbG9i
OgotICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8
SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYgY29udGV4dCkgewotICAgICAgICAgICAg
cmV0dXJuIHRha2VBc0Jsb2IoY29udGV4dC5zZXNzaW9uSUQoKSk7CisgICAgICAgIHByb21pc2Ut
PnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8QmxvYj4+
KFt0aGlzXShhdXRvJikgeworICAgICAgICAgICAgcmV0dXJuIHRha2VBc0Jsb2IoKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFR5cGU6OkpTT046CkBAIC0xODEsMTMg
KzE4MSwxMyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0FycmF5QnVmZmVyKCkKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLVJlZjxCbG9i
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CitSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoKQogewogICAgIGlmICgh
bV9idWZmZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Vzc2lvbklELCBWZWN0b3I8
dWludDhfdD4oKSwgbV9jb250ZW50VHlwZSk7CisgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+KCksIG1fY29udGVudFR5cGUpOwogCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29w
eS4KLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKHNlc3Npb25JRCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCks
IG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXpl
KCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c1RleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oCmluZGV4IDQwN2FjYjUwMTQ4NDgwMjdkMzhjMmI2MzExYzI2NDhmMWFjZTdjZjMuLmYy
M2MxYTlmOTU5N2U1ZWY4YjkwMTJjZGIyNzY2ZmU2NmRjYzQyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTc1LDcgKzc1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNMb2FkaW5nKCkgeyBtX2lzTG9hZGluZyA9IHRydWU7
IH0KIAogcHJpdmF0ZToKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYihQQUw6OlNlc3Npb25JRCk7
CisgICAgUmVmPEJsb2I+IHRha2VBc0Jsb2IoKTsKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0
cmluZyBtX2NvbnRlbnRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcAppbmRleCA1MzlkMThhZjAwYWE5NzU4ZGZjZWVkODkyOWVlZDQ2NTY1
OGI5N2QxLi4zYjllMWJhYTAwNjRlYWE4MTdiM2ExM2RiMzAzMjdlZDRkMzE2ZTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAtMTI0
LDggKzEyNCw4IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIGlmIChpc0JvZHlOdWxsT3JPcGFxdWUoKSkgewot
ICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURM
SW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYgY29udGV4dCkgewotICAgICAgICAgICAgcmV0
dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LnNlc3Npb25JRCgpLCBWZWN0b3I8dWludDhfdD4geyB9
LCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlw
ZShtX2NvbnRlbnRUeXBlKSkpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1
ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYpIHsKKyAg
ICAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6
bm9ybWFsaXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250
ZW50VHlwZSkpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGQ4ZGI5MGNjYjE0
NDk0NjBlMjg3MzgxZmRmNzRiM2EyYjIwMjlkYzkuLmMwZGJmNWZlNTc4ZjFmNTliNmY0YzFiMDdh
YmMwMWU3ZDI1MWQ3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEZldGNoTG9h
ZGVyOjp+RmV0Y2hMb2FkZXIoKQogewogICAgIGlmICghbV91cmxGb3JSZWFkaW5nLmlzRW1wdHko
KSkKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoKm1f
c2Vzc2lvbklELCBtX3VybEZvclJlYWRpbmcpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX3VybEZvclJlYWRpbmcpOwogfQogCiB2b2lkIEZldGNo
TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBCbG9i
JiBibG9iKQpAQCAtNjQsOCArNjQsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydExvYWRpbmdC
bG9iVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9uSUQgPSBjb250ZXh0LnNlc3Npb25JRCgp
OwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9u
SUQsIGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iVVJMKTsK
KyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZWN1
cml0eU9yaWdpbigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOwogCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRv
cklkZW50aWZpZXIoY29udGV4dC5yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IGI2YzY1MDhjYTM3NjNl
MzEzM2Q0YTNkYmQ0MTE5OGFjYTU4NGU5NjIuLjQwMTFiMzczOGM5NzliYjk3OGFkZmRjZmNiYTg1
NGNhZThjNWRmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICBGZXRjaEJvZHlDb25zdW1lciogbV9j
b25zdW1lcjsKICAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsKICAgICBVUkwgbV91cmxG
b3JSZWFkaW5nOwotICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA2MzQ5M2IzNzU2YzU0OGQ2ZGUz
Yjg5ZmZmMDZkNWI3NzE0M2JhOTIwLi40YjhmZTczZDEzMWRlNTIzMjUxYWE0NWQ0NjQ4NDBkYjRh
MWIzNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCkBAIC0xMjgyLDcgKzEyODIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpwdXRPckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbgogICAgIC8vIHdvcmtlcnMgY3VycmVudGx5IHdyaXRlIGJsb2JzIHRvIGRpc2sgc3luY2hy
b25vdXNseS4KICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1Nzk1OCAtIE1ha2UgdGhpcyBhc3luY2hyb25vdXMgYWZ0ZXIgcmVmYWN0b3Jpbmcg
YWxsb3dzIGl0LgogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYXV0byBpZGJW
YWx1ZSA9IHZhbHVlLT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpKTsKKyAgICAgICAgYXV0byBpZGJW
YWx1ZSA9IHZhbHVlLT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgp
OwogICAgICAgICBpZiAoaWRiVmFsdWUuZGF0YSgpLmRhdGEoKSkKICAgICAgICAgICAgIG1fZGF0
YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLnB1dE9yQWRkKG9wZXJhdGlvbiwga2V5LmdldCgpLCBp
ZGJWYWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgICAgIGVsc2UgewpAQCAtMTMwMSw3ICsxMzAx
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICAvLyBzdG9wIGZ1dHVyZSByZXF1ZXN0
cyBmcm9tIGdvaW5nIHRvIHRoZSBzZXJ2ZXIgYWhlYWQgb2YgaXQuCiAgICAgb3BlcmF0aW9uLnNl
dE5leHRSZXF1ZXN0Q2FuR29Ub1NlcnZlcihmYWxzZSk7CiAKLSAgICB2YWx1ZS0+d3JpdGVCbG9i
c1RvRGlza0ZvckluZGV4ZWREQihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBwcm90ZWN0ZWRPcGVyYXRp
b24gPSBSZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4ob3BlcmF0aW9uKSwga2V5
RGF0YSA9IElEQktleURhdGEoa2V5LmdldCgpKS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRlTW9k
ZV0oSURCVmFsdWUmJiBpZGJWYWx1ZSkgbXV0YWJsZSB7CisgICAgdmFsdWUtPndyaXRlQmxvYnNU
b0Rpc2tGb3JJbmRleGVkREIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywg
cHJvdGVjdGVkT3BlcmF0aW9uID0gUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+
KG9wZXJhdGlvbiksIGtleURhdGEgPSBJREJLZXlEYXRhKGtleS5nZXQoKSkuaXNvbGF0ZWRDb3B5
KCksIG92ZXJ3cml0ZU1vZGVdKElEQlZhbHVlJiYgaWRiVmFsdWUpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0
YSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMjQ0NzgyNWQ0OGJjYmM0MmViZTIyNTM4MzBlN2MwOGI4
MGNiZGM2NC4uZDVhZmQ0NDU5NzFhODQ1MGFiMzg1YTUwMDIwZWI2ZTIxOTYxMjkyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmNwcApAQCAtMTU3LDggKzE1Nyw4IEBAIFJlZjxCbG9iPiBNZWRpYVJlY29yZGVyOjpjcmVh
dGVSZWNvcmRpbmdEYXRhQmxvYigpCiB7CiAgICAgYXV0byBkYXRhID0gbV9wcml2YXRlLT5mZXRj
aERhdGEoKTsKICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSk7Ci0gICAgcmV0dXJuIEJsb2I6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCAqZGF0YSwgbV9wcml2
YXRlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZSgpOworICAgIHJl
dHVybiBCbG9iOjpjcmVhdGUoKmRhdGEsIG1fcHJpdmF0ZS0+bWltZVR5cGUoKSk7CiB9CiAKIHZv
aWQgTWVkaWFSZWNvcmRlcjo6ZGlkQWRkT3JSZW1vdmVUcmFjaygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNw
cAppbmRleCBlYmQ4MTUyMTUxZWMxZTdkM2UzZTY2YzZjY2E0MzMzNTZhNzBkZjJlLi4yODI4ZDM2
YTI4YjI2M2FhMDZiZDk5OWJmMTFjZDkwZGUyM2I1OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVVJMJiB1cmwsIFUKICAgICBtX21lZGlhU291
cmNlcy5zZXQodXJsLnN0cmluZygpLCAmc291cmNlKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwm
IHVybCkKK3ZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5yZWdpc3RlclVSTChjb25zdCBVUkwm
IHVybCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChhdXRvIHNvdXJj
ZSA9IG1fbWVkaWFTb3VyY2VzLnRha2UodXJsLnN0cmluZygpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKaW5k
ZXggMDJkNmVmYmNiYmRjZDgzMWIyOGFiN2U4YmQ2YmI1NGQ0NzU3M2M2Yi4uYjdkZmU0NGIyNWZj
NDc3MjE3NGFhNjQ2ZTRiNThjMGEzMmVlMjI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogCiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5n
IHRvIHRoZSBzcGVjaWZpZWQgbWVkaWEgc291cmNlLgogICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlJilmaW5hbDsK
LSAgICB2b2lkIHVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFVS
TCYpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBmaW5hbDsKICAg
ICBVUkxSZWdpc3RyYWJsZSogbG9va3VwKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmNwcAppbmRleCBhNTUxYTgzMWM5OWNmNTllOWJkZGE5YWI0YWM4MTliNWVl
ODllYWMwLi42YzcwMTI3M2Y1M2UyNzk5MGMwYTMwODk5OTRiY2M0NGRkODc4YjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVS
YXdEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogCiAgICAgc3dpdGNo
IChtX2JpbmFyeVR5cGUpIHsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6Ci0gICAgICAgIHNj
aGVkdWxlRGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsKKyAgICAgICAgc2NoZWR1
bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJpbmcoKSksIHsgfSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAg
ICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVy
OjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOTkyOTYzZWI1OWMzYjA3NWJmZTU3MWJk
NjNhOTQwYzcxMGY0ZWViMC4uOTEwODgwMDliNTljMTBhYjNiOTZlOTE5Y2EzNmI0NDgxYWUzZjYx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKQEAgLTU4NCw3ICs1ODQsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKICAgICBzd2l0Y2ggKG1fYmluYXJ5VHlw
ZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKICAgICAgICAgLy8gRklYTUU6IFdlIGp1
c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5n
IGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2Vzc2lvbklEKCksIFdURk1vdmUoYmluYXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOworICAgICAgICBkaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJpbmFyeURhdGEp
LCBlbXB0eVN0cmluZygpKSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5n
KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJheUJ1ZmZlcjoK
ICAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGJpbmFyeURhdGEuZGF0YSgpLCBiaW5hcnlEYXRhLnNpemUoKSksIFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBkYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYwZTZi
Njk1YmI2MzE0Li45ODJlNTczMWVmMTEyMjM1YmU0MjgxMmI4YzdmMDczMTI2YmI2ODhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ2NSw3ICs0NjUs
NyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKICAgICAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAg
ICAgIHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY29udGV4dC5zZXNzaW9uSUQoKSwgdXJs
LCB0eXBlLCBzaXplLCB7IH0pKTsKKyAgICAgICAgcGVlci0+c2VuZChCbG9iOjpkZXNlcmlhbGl6
ZSh1cmwsIHR5cGUsIHNpemUsIHsgfSkpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4ZGQ5ZmJmMDM2NWQ0MDgxNDAwZjcwODMz
Y2Q3MDY0MTBiNzgxNDYwLi43OGVmMWZlY2JhMTQzYTBhZjJmNzViZWZiMzhiOTY0NDlmMGQ0NTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTIwOTEsNyArMjA5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBm
aWxlUGF0aCA9IHBhdGgtPnN0cmluZygpOwogCiAgICAgICAgIGlmIChtX2lzRE9NR2xvYmFsT2Jq
ZWN0KQotICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KG1fZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZXNzaW9uSUQoKSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0
cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQpOworICAgICAgICAg
ICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+c3Ry
aW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlm
aWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yODU3LDcgKzI4NTcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICBpZiAoIW1faXNET01HbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwotICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNlc3Npb25JRCgpLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5z
dHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0
KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoVVJM
KFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0
aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNhY2hlZFN0cmlu
ZzsKQEAgLTM1NjksMTIgKzM1NjksMTIgQEAgVmVjdG9yPFN0cmluZz4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRl
eGVkREIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElE
QlZhbHVlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
REJWYWx1ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChoYXNCbG9iVVJMcygpKTsKIAotICAgIGJsb2JSZWdpc3RyeSgp
LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgbV9ibG9iVVJMcywgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8mJiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsK
KyAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxz
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11
dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgICAgIGlmIChi
bG9iRmlsZVBhdGhzLmlzRW1wdHkoKSkgewpAQCAtMzU5MCw3ICszNTkwLDcgQEAgdm9pZCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbkkKICAgICB9KTsKIH0KIAotSURCVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitJREJWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxv
YnNUb0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KCkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIApAQCAtMzU5OSw4ICszNTk5LDggQEAgSURCVmFsdWUgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseShQQUw6
OlMKICAgICBDb25kaXRpb24gY29uZGl0aW9uOwogICAgIGxvY2subG9jaygpOwogCi0gICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzZXNzaW9uSUQsIGNvbmRpdGlvblB0ciA9ICZj
b25kaXRpb24sIHZhbHVlUHRyID0gJnZhbHVlXSB7Ci0gICAgICAgIHdyaXRlQmxvYnNUb0Rpc2tG
b3JJbmRleGVkREIoc2Vzc2lvbklELCBbY29uZGl0aW9uUHRyLCB2YWx1ZVB0cl0oSURCVmFsdWUm
JiByZXN1bHQpIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNvbmRpdGlv
blB0ciA9ICZjb25kaXRpb24sIHZhbHVlUHRyID0gJnZhbHVlXSB7CisgICAgICAgIHdyaXRlQmxv
YnNUb0Rpc2tGb3JJbmRleGVkREIoW2NvbmRpdGlvblB0ciwgdmFsdWVQdHJdKElEQlZhbHVlJiYg
cmVzdWx0KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICAg
ICAgdmFsdWVQdHItPnNldEFzSXNvbGF0ZWRDb3B5KHJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNGY0YjBj
ZjNiN2VlY2RkZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEyYTA3Yi4uZGE4NGM3ZTg0MDgwNmIzNDJjODE0
NDBmNTg4NjVkZjYxZTU3MzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHNJ
c29sYXRlZENvcHkoKSBjb25zdDsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVk
REIoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCVmFsdWUmJik+JiYp
OwotICAgIElEQlZhbHVlIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5
KFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJWYWx1ZSYmKT4mJik7CisgICAgSURCVmFsdWUgd3Jp
dGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsKICNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBjcmVhdGVGcm9tV2lyZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGQzYWY3MGZiOGJhMzM2YmZhNjE4YmY5YzEyNTZi
MTA3ZDlkMjVhYTUuLjVjNzFiMzY4ZTYwMjhiMDE3NGYzYTdmZGY0Mzg4NjRkODg4Zjg4ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC02OCw5ICs2OCw4IEBAIHByaXZhdGU6
CiAKICNlbmRpZgogCi1EYXRhVHJhbnNmZXI6OkRhdGFUcmFuc2Zlcihjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQsIFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFz
dGVib2FyZCwgVHlwZSB0eXBlKQotICAgIDogbV9zZXNzaW9uSUQoZG9jdW1lbnQuc2Vzc2lvbklE
KCkpCi0gICAgLCBtX3N0b3JlTW9kZShtb2RlKQorRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIo
U3RvcmVNb2RlIG1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkLCBU
eXBlIHR5cGUpCisgICAgOiBtX3N0b3JlTW9kZShtb2RlKQogICAgICwgbV9wYXN0ZWJvYXJkKFdU
Rk1vdmUocGFzdGVib2FyZCkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAsIG1fdHlw
ZSh0eXBlKQpAQCAtODYsNyArODUsNyBAQCBEYXRhVHJhbnNmZXI6OkRhdGFUcmFuc2Zlcihjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZQogCiBSZWY8
RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQsIFN0b3JlTW9kZSBzdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9w
dFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgc3RvcmVNb2RlLCBXVEZNb3ZlKHBhc3Rl
Ym9hcmQpKSk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFu
c2ZlcihzdG9yZU1vZGUsIFdURk1vdmUocGFzdGVib2FyZCkpKTsKICAgICBkYXRhVHJhbnNmZXIt
Pm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJv
YXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTM0OSw3ICszNDgsNyBAQCBW
ZWN0b3I8UmVmPEZpbGU+PiBEYXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVt
TGlzdCgpIGNvbnN0CiAgICAgYm9vbCBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsK
ICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9y
RmlsZURyYWcoKSkgJiYgbV9wYXN0ZWJvYXJkLT5maWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVi
b2FyZDo6RmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRlciB7IG1fc2Vzc2lvbklEIH07CisgICAgICAg
IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciByZWFkZXI7CiAgICAgICAgIG1fcGFzdGVib2Fy
ZC0+cmVhZChyZWFkZXIpOwogICAgICAgICBmaWxlcyA9IFdURk1vdmUocmVhZGVyLmZpbGVzKTsK
ICAgICAgICAgYWRkZWRGaWxlc0Zyb21QYXN0ZWJvYXJkID0gIWZpbGVzLmlzRW1wdHkoKTsKQEAg
LTQxNCwxMiArNDEzLDEyIEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiAhdHlwZS5pc051bGwoKSAmJiB0eXBlcygpLmNv
bnRhaW5zKHR5cGUpOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0
ZUZvcklucHV0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBs
YWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCkKK1JlZjxEYXRhVHJhbnNmZXI+IERhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29u
c3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKICAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVl
PFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQv
cGxhaW4iX3MsIHBsYWluVGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQv
aHRtbCJfcywgaHRtbFRleHQpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zl
cihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlw
ZTo6SW5wdXRFdmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihT
dG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50
KSk7CiB9CiAKIHZvaWQgRGF0YVRyYW5zZmVyOjpjb21taXRUb1Bhc3RlYm9hcmQoUGFzdGVib2Fy
ZCYgbmF0aXZlUGFzdGVib2FyZCkKQEAgLTQ2NCwyMSArNDYzLDIxIEBAIHZvaWQgRGF0YVRyYW5z
ZmVyOjpzZXREcmFnSW1hZ2UoRWxlbWVudCosIGludCwgaW50KQogCiAjZWxzZQogCi1SZWY8RGF0
YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50KQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3Jl
TW9kZTo6UmVhZFdyaXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBl
OjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNm
ZXIoU3RvcmVNb2RlOjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9w
KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogfQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJv
YXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5p
cXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogICAgIGRh
dGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmll
ckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCiBSZWY8RGF0
YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3Bl
cmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewotICAgIGF1dG8g
ZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIERhdGFU
cmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dp
bmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEp
KTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKERh
dGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJh
Z2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERh
dGEpKTsKICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRp
b24pOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3Jp
Z2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwpA
QCAtNDg2LDcgKzQ4NSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRl
Rm9yRHJvcChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pCiAKIFJlZjxEYXRhVHJh
bnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2Fy
ZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsK
LSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3Vt
ZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZNb3ZlKHBhc3RlYm9h
cmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdB
bmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRh
VHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0
ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpE
cmFnQW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihz
b3VyY2VPcGVyYXRpb24pOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0g
ZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0
YVRyYW5zZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmluZGV4IDZhZWNhYzhmZjQ5NDI1
NDU1Y2RmN2JhMzdiYmQxN2U2ODJmN2RkMWUuLmM5NzI2YTZmY2JiOGMyMTIwOTdmZTgyOTkxMTVm
MjczOWIxOGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU3RvcmVNb2RlIHsgSW52YWxpZCwgUmVhZFdyaXRl
LCBSZWFkb25seSwgUHJvdGVjdGVkIH07CiAKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4g
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGNvbnN0IERvY3VtZW50JiwgU3RvcmVNb2RlLCBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4mJik7Ci0gICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNy
ZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHBsYWluVGV4
dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCk7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+
IGNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmlu
ZyYgaHRtbFRleHQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkRhdGFUcmFuc2ZlcigpOwogCkBA
IC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIHN0YXRpYyBSZWY8RGF0
YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFu
c2Zlcj4gY3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmKTsKICAgICBzdGF0
aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmls
ZXMpOwogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BU
YXJnZXQoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJh
Z09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgQ29weUFuZFBhc3RlLCBEcmFn
QW5kRHJvcERhdGEsIERyYWdBbmREcm9wRmlsZXMsIElucHV0RXZlbnQgfTsKLSAgICBEYXRhVHJh
bnNmZXIoY29uc3QgRG9jdW1lbnQmLCBTdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiwgVHlwZSA9IFR5cGU6OkNvcHlBbmRQYXN0ZSk7CisgICAgRGF0YVRyYW5zZmVyKFN0b3Jl
TW9kZSwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0gVHlwZTo6Q29weUFuZFBh
c3RlKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBmb3JEcmFnKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkRyYWdBbmREcm9wRGF0YSB8fCBtX3R5cGUgPT0g
VHlwZTo6RHJhZ0FuZERyb3BGaWxlczsgfQpAQCAtMTMwLDcgKzEzMCw2IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoQWRkRmlsZXNUeXBlKSBjb25zdDsKICAgICBWZWN0b3I8
UmVmPEZpbGU+PiBmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSBjb25zdDsKIAotICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFN0cmluZyBtX29yaWdpbklkZW50aWZp
ZXI7CiAgICAgU3RvcmVNb2RlIG1fc3RvcmVNb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKaW5kZXggNTJiNjlhNTcyYTY1NjkwODdj
OTNhMmExOGNkMzI1MDIyOWY2YWYzOS4uMDQxZjlkMTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNl
OGQ4ODAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VX
aXRoVGV4dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJh
bmdlV2l0aFRleHRDb21tYW5kLmNwcApAQCAtODIsNyArODIsNyBAQCBTdHJpbmcgUmVwbGFjZVJh
bmdlV2l0aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0CiBSZWZQdHI8RGF0YVRy
YW5zZmVyPiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNm
ZXIoKSBjb25zdAogewogICAgIGlmICghaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQot
ICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGRvY3VtZW50
KCksIG1fdGV4dCwgc2VyaWFsaXplRnJhZ21lbnQoKm1fdGV4dEZyYWdtZW50LCBTZXJpYWxpemVk
Tm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQobV90ZXh0LCBzZXJpYWxpemVGcmFnbWVudCgqbV90ZXh0
RnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpKTsKIAogICAg
IHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA2MmJlNDQ3MjZkNjk3OTJjYWY5Y2Q5MDRiMThmYzU3ODQ4ZjA4MTcwLi43NTA2
Y2RjN2FlYTEzYzNlM2IzZGViNDQwNDc5ZTBkNzkwYjIxMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTQyMiw3ICsx
NDIyLDcgQEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omlu
cHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdAogICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9y
VGV4dElucHV0KCkpCiAgICAgICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRF
dmVudERhdGFUcmFuc2ZlcigpOwogCi0gICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
SW5wdXRFdmVudChkb2N1bWVudCgpLCBtX2RvY3VtZW50RnJhZ21lbnRQbGFpblRleHQsIG1fZG9j
dW1lbnRGcmFnbWVudEhUTUxNYXJrdXApOworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0
ZUZvcklucHV0RXZlbnQobV9kb2N1bWVudEZyYWdtZW50UGxhaW5UZXh0LCBtX2RvY3VtZW50RnJh
Z21lbnRIVE1MTWFya3VwKTsKIH0KIAogYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hv
dWxkUmVtb3ZlRW5kQlIoTm9kZSogZW5kQlIsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2lu
YWxWaXNQb3NCZWZvcmVFbmRCUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDM3MThhYTQ5MWVkNjZhYjgzZmI4MWQ3
YjRiZjkzMDdkZGY0NWY1NDYuLjdkYjNmOWI0NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIz
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFu
Z2U+PiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogUmVm
UHRyPERhdGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERh
dGFUcmFuc2ZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElu
cHV0KCkpCi0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQo
ZG9jdW1lbnQoKSwgbV9jb3JyZWN0aW9uLCBzZXJpYWxpemVGcmFnbWVudCgqbV9jb3JyZWN0aW9u
RnJhZ21lbnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpKTsKKyAgICAg
ICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChtX2NvcnJlY3Rpb24s
IHNlcmlhbGl6ZUZyYWdtZW50KCptX2NvcnJlY3Rpb25GcmFnbWVudCwgU2VyaWFsaXplZE5vZGVz
OjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSkpOwogCiAgICAgcmV0dXJuIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
eXBpbmdDb21tYW5kLmNwcAppbmRleCBmMzU4NzQzMjBiMTkwNTNlMTAwNmRiZTZlZjY2ZTc3ZmYz
MzFhY2Y2Li4wMWY1M2RiYTAzYmVhYzc5N2Q3NmFhOGFlNTY2ZDJmZDEyNWM4MjNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCBS
ZWZQdHI8RGF0YVRyYW5zZmVyPiBUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVy
KCkgY29uc3QKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbFRleHQ7CiAgICAgTWFya3VwQWNjdW11
bGF0b3I6OmFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhodG1sVGV4dCwgbV9jdXJy
ZW50VGV4dFRvSW5zZXJ0LCAwLCBtX2N1cnJlbnRUZXh0VG9JbnNlcnQubGVuZ3RoKCksIEVudGl0
eU1hc2tJbkhUTUxQQ0RBVEEpOwotICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklu
cHV0RXZlbnQoZG9jdW1lbnQoKSwgbV9jdXJyZW50VGV4dFRvSW5zZXJ0LCBodG1sVGV4dC50b1N0
cmluZygpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KG1f
Y3VycmVudFRleHRUb0luc2VydCwgaHRtbFRleHQudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgVHlw
aW5nQ29tbWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA2NGRlOTFkM2U2
YTg1NDhhNTM2ZGQ5YTk0MzFiY2U5MmY4NGVkZTYyLi5mNjhhMDBlZmFlN2E3YmI0OTU4OWQwZmZl
MjczMWJiZTZlODQyYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjp+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1l
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7Ci0gICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0
ZShzZXNzaW9uSUQsIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShm
aWxlbmFtZSkpOwogfQogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxv
Yjo6Y3JlYXRlKHNlc3Npb25JRCwgYnVmZmVyLmdldCgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKKyAg
ICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5
cGUpLCBmaWxlbmFtZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA5NDM4YjQ0MTNhMDAxMjUxYWJl
M2Y4NzMwMDBkNzZjYjhjZWFmMDNmLi45YjlmYTc3MWVkYWE1YWQxYjM3OTI2MTE1YzBlYTNhMzU4
YTQ4ZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmgKQEAgLTMzLDE3ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBGaWxlOwogCiBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFs
IDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewotICAgIGV4cGxpY2l0IFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgICAgIDogc2Vzc2lvbklE
KHNlc3Npb25JRCkKLSAgICB7Ci0gICAgfQotCisgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyKCkgPSBkZWZhdWx0OwogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAog
ICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwog
ICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCAwY2YyZmMz
NDVhNDg4NDBlOTM5ZjQ3NjE1Y2NhZGQyNmQ1MWM4YzRjLi4zOTQ5NmI2OTg4NjZjNGFlYzNmNzdk
NGU2NjBiZTZkNTA3OTlkOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRp
YyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQo
RnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCBjb250
ZW50VHlwZSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUsIFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0
aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQuc2Vzc2lvbklEKCksIGJ1
ZmZlci5nZXQoKSwgY29udGVudFR5cGUpKSk7CisgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3Jl
YXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50
VHlwZSkpKTsKICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3Zl
KGF0dGFjaG1lbnQpKTsKICAgICAgICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQogICAg
ICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lk
dGgpKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAg
ICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVh
dGUoQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25JRCgpLCBidWZmZXIuZ2V0KCksIGNvbnRl
bnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5z
ZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50VHlw
ZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpV
cGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENo
aWxkKFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgIH0KICAgICByZXR1cm4gZnJhZ21lbnQ7CkBA
IC0zNjUsNyArMzY1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHN1
cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgewogICAgICAgICAgICAgaWYg
KGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG9yaWdpbmFsRWxlbWVudC5nZXQoKSkgJiYgY29udGVudFR5
cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihpbmZvLmNvbnRlbnRUeXBl
KSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxl
bWVudD4ob3JpZ2luYWxFbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgICAgICBpbWFnZS5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFnbWVu
dC5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBpbmZvLmRhdGEsIGluZm8uY29udGVudFR5cGUpKSk7
CisgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKCpmcmFtZS5kb2N1
bWVudCgpLCBCbG9iOjpjcmVhdGUoaW5mby5kYXRhLCBpbmZvLmNvbnRlbnRUeXBlKSkpOwogICAg
ICAgICAgICAgICAgIGltYWdlLnNldEF0dGFjaG1lbnRFbGVtZW50KGF0dGFjaG1lbnQuY29weVJl
ZigpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+
dXBkYXRlQXR0cmlidXRlcyhpbmZvLmRhdGEtPnNpemUoKSwgaW5mby5jb250ZW50VHlwZSwgaW5m
by5maWxlTmFtZSk7CkBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hD
b250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCBXVEZN
b3ZlKGluZm8uY29udGVudFR5cGUpLCBXVEZNb3ZlKGluZm8uZmlsZU5hbWUpLCBXVEZNb3ZlKGlu
Zm8uZGF0YSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0
RmlsZShGaWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGZyYWdtZW50LmRvY3VtZW50KCkuc2Vzc2lv
bklEKCksIFdURk1vdmUoaW5mby5kYXRhKSwgV1RGTW92ZShpbmZvLmNvbnRlbnRUeXBlKSksIFdU
Rk1vdmUoaW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3Bs
YXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxl
OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoaW5mby5kYXRhKSwgV1RGTW92ZShpbmZvLmNv
bnRlbnRUeXBlKSksIFdURk1vdmUoaW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwogICAgICAgICAgICAgcGFyZW50LT5y
ZXBsYWNlQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSwgV1RGTW92ZShvcmlnaW5hbEVsZW1lbnQp
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQxNSw3ICs0MTUsNyBAQCBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmIGZyYW1lLCBOU0F0
dHJpYnV0ZQogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBibG9iVVJMTWFw
OwogICAgIGZvciAoY29uc3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogZnJh
Z21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzKSB7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6
OmNyZWF0ZShkb2N1bWVudC5zZXNzaW9uSUQoKSwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVz
b3VyY2UtPm1pbWVUeXBlKCkpOworICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3Vi
cmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJp
bmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKTsKICAg
ICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmluZygpLCBibG9iVVJM
KTsKICAgICB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAg
ICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7CiAgICAgICAg
IGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoZGVzdGlu
YXRpb25Eb2N1bWVudC5zZXNzaW9uSUQoKSwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3Vy
Y2UtPm1pbWVUeXBlKCkpOworICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVz
b3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcg
YmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0aW9uRG9jdW1lbnQsIGJs
b2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZVVSTC5zdHJpbmcoKSwgYmxv
YlVSTCk7CiAgICAgfQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVN
YXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3Vt
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBibG9iQnVmZmVyOwogICAgICAgICBibG9iQnVmZmVy
LnJlc2VydmVDYXBhY2l0eSh1dGY4Lmxlbmd0aCgpKTsKICAgICAgICAgYmxvYkJ1ZmZlci5hcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxl
bmd0aCgpKTsKLSAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKGRlc3RpbmF0aW9uRG9j
dW1lbnQuc2Vzc2lvbklEKCksIFdURk1vdmUoYmxvYkJ1ZmZlciksIHR5cGUpOworICAgICAgICBh
dXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CiAKICAg
ICAgICAgU3RyaW5nIHN1YmZyYW1lQmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRl
c3RpbmF0aW9uRG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJmcmFt
ZVVSTC5zdHJpbmcoKSwgc3ViZnJhbWVCbG9iVVJMKTsKQEAgLTY4OCw3ICs2ODgsNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0eXBlLAogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRo
QXR0YWNobWVudHMoKSkKICAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFn
ZUF0dGFjaG1lbnQoZnJhbWUsIGRvY3VtZW50LCBXVEZNb3ZlKGJ1ZmZlciksIHR5cGUsIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUpKTsKICAgICBlbHNlCi0gICAgICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQuc2Vzc2lvbklEKCksIGJ1ZmZlci5n
ZXQoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZy
YWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3Jl
YXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCB0eXBlKSks
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0K
QEAgLTcwOSw3ICs3MDksNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9y
RmlsZVBhdGgoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgYXV0byBkb2N1
bWVudCA9IG1ha2VSZWYoKmZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywg
ZG9jdW1lbnQpOwogICAgIGlmICghc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJh
bWUpKSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50
LT5zZXNzaW9uSUQoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxh
eUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3Jl
YXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOwogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTczNiw3ICs3
MzYsNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJh
bWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAKICAgICBpZiAoY29udGVudFR5cGVJc1N1
aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50VHlwZSkpIHsKICAgICAg
ICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAg
ICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6
c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShk
b2N1bWVudC0+c2Vzc2lvbklEKCksIHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShwYXRoKSkpOwogICAgICAgICBpbWFn
ZS0+c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlm
IChwcmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51
bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtNzY1LDcgKzc2NSw3IEBAIHN0YXRpYyBS
ZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvCiAgICAgICAgIGZpbGVOYW1lID0gbmFtZTsKIAogICAgIGlmICghc3Vw
cG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFjaG1l
bnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShkb2N1bWVudC0+c2Vzc2lvbklE
KCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBmaWxlTmFtZSkpOworICAgICAg
ICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBX
VEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CiAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50OwogICAgIH0KIApAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvCiAKICAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNl
bnRhdGlvbihhdHRhY2htZW50VHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFn
ZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVP
YmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9jdW1lbnQtPnNl
c3Npb25JRCgpLCBidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92ZShmaWxl
TmFtZSkpKSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQs
IEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBl
KSksIFdURk1vdmUoZmlsZU5hbWUpKSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVs
ZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndp
ZHRoKQogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6
ZS53aWR0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDEyNGE1YWIyZDZhNzIy
MzY0MmYwNjI5NjI4MWFjMTZjYjQ1MDE3OWEuLmIzNGJjMDY3NGVhYmQ0YmM1NmUxZDg2MjJhNDdl
ZmM2MmMyMmEyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTk4NSw5ICs5ODUs
OSBAQCBzdGF0aWMgdm9pZCByZXN0b3JlQXR0YWNobWVudEVsZW1lbnRzSW5GcmFnbWVudChEb2N1
bWVudEZyYWdtZW50JiBmcmFnbWVudCkKICAgICAgICAgYXV0byBhdHRhY2htZW50UGF0aCA9IGF0
dGFjaG1lbnQtPmF0dGFjaG1lbnRQYXRoKCk7CiAgICAgICAgIGF1dG8gYmxvYlVSTCA9IGF0dGFj
aG1lbnQtPmJsb2JVUkwoKTsKICAgICAgICAgaWYgKCFhdHRhY2htZW50UGF0aC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFnbWVudC5k
b2N1bWVudCgpLnNlc3Npb25JRCgpLCBhdHRhY2htZW50UGF0aCkpOworICAgICAgICAgICAgYXR0
YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoYXR0YWNobWVudFBhdGgpKTsKICAgICAgICAg
ZWxzZSBpZiAoIWJsb2JVUkwuaXNFbXB0eSgpKQotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0
RmlsZShGaWxlOjpkZXNlcmlhbGl6ZShmcmFnbWVudC5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCB7
IH0sIGJsb2JVUkwsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0dGFjaG1lbnQtPmF0
dGFjaG1lbnRUaXRsZSgpKSk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6
OmRlc2VyaWFsaXplKHsgfSwgYmxvYlVSTCwgYXR0YWNobWVudC0+YXR0YWNobWVudFR5cGUoKSwg
YXR0YWNobWVudC0+YXR0YWNobWVudFRpdGxlKCkpKTsKIAogICAgICAgICAvLyBSZW1vdmUgdGVt
cG9yYXJ5IGF0dHJpYnV0ZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgYWRkZWQgaW4gU3R5bGVkTWFy
a3VwQWNjdW11bGF0b3I6OmFwcGVuZEN1c3RvbUF0dHJpYnV0ZXMuCiAgICAgICAgIGF0dGFjaG1l
bnQtPnJlbW92ZUF0dHJpYnV0ZSh3ZWJraXRhdHRhY2htZW50aWRBdHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCmluZGV4IGQ4OTFjNzA4NjhiOGM3NmE5MjkxMTE3YzUzYzMyY2Y2ZjE3YTY0OWMu
LjIzM2M3NjZjZGVmNzhjODZiYzFmYjRiMGNmM2JlZGMwNDJiZmU0ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
QmxvYik7CiBjbGFzcyBCbG9iVVJMUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgVVJMUmVnaXN0cnkg
ewogcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlJikgZmluYWw7Ci0gICAgdm9pZCB1bnJlZ2lzdGVy
VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lk
IHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgZmluYWw7CiAKICAgICBzdGF0aWMgVVJMUmVnaXN0
cnkmIHJlZ2lzdHJ5KCk7CiB9OwpAQCAtNTgsMTIgKzU4LDEyIEBAIHB1YmxpYzoKIHZvaWQgQmxv
YlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVnaXN0cmFibGUmIGJsb2IpCiB7CiAgICAgQVNT
RVJUKCZibG9iLnJlZ2lzdHJ5KCkgPT0gdGhpcyk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnRleHQuc2Vzc2lvbklEKCksIGNvbnRleHQuc2VjdXJpdHlP
cmlnaW4oKSwgcHVibGljVVJMLCBzdGF0aWNfY2FzdDxCbG9iJj4oYmxvYikudXJsKCkpOworICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LnNlY3VyaXR5
T3JpZ2luKCksIHB1YmxpY1VSTCwgc3RhdGljX2Nhc3Q8QmxvYiY+KGJsb2IpLnVybCgpKTsKIH0K
IAotdm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIEJsb2JVUkxSZWdpc3RyeTo6dW5y
ZWdpc3RlclVSTChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCB1cmwpOworICAgIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiB9CiAKIFVSTFJlZ2lz
dHJ5JiBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKQEAgLTcyLDI0ICs3MiwyMSBAQCBVUkxS
ZWdpc3RyeSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCiAgICAgcmV0dXJuIGluc3RhbmNl
OwogfQogCi1CbG9iOjpCbG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSkKLSAgICA6IG1fc2Vzc2lvbklE
KHNlc3Npb25JRCkKLSAgICAsIG1faW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQorQmxvYjo6Qmxv
YihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYgdXJsLCBTdHJpbmcmJiB0eXBlKQorICAg
IDogbV9pbnRlcm5hbFVSTChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBl
KSkKIHsKIH0KIAotQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX3NpemUoMCkKK0Jsb2I6OkJsb2IoKQorICAg
IDogbV9zaXplKDApCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVy
bmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
c2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOworICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IH0sICB7IH0pOwogfQog
Ci1CbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPEJsb2JQYXJ0VmFy
aWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5
QmFnKQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9pbnRlcm5hbFVSTChC
bG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQorQmxvYjo6QmxvYihWZWN0b3I8QmxvYlBhcnRW
YXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVy
dHlCYWcpCisgICAgOiBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkp
CiAgICAgLCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHByb3BlcnR5QmFnLnR5cGUpKQog
ewogICAgIEJsb2JCdWlsZGVyIGJ1aWxkZXIocHJvcGVydHlCYWcuZW5kaW5ncyk7CkBAIC0xMDEs
MTIgKzk4LDExIEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8
QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsCiAgICAgICAgICk7CiAgICAgfQog
Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklE
LCBtX2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CisgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIu
ZmluYWxpemUoKSwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV90eXBlKGNvbnRlbnRU
eXBlKQorQmxvYjo6QmxvYihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKKyAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKICAgICAsIG1fc2l6ZShi
dWZmZXIuc2l6ZSgpKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwpAQCAtMTE1LDUzICsx
MTEsNDkgQEAgQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGMKICAgICBWZWN0b3I8QmxvYlBhcnQ+IGJs
b2JQYXJ0czsKICAgICBibG9iUGFydHMuYXBwZW5kKEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpKTsK
ICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG1faW50
ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJs
b2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KIAotQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX3R5cGUoY29udGVudFR5
cGUpCitCbG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCisgICAgOiBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoZGF0YS5z
aXplKCkpCiB7CiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7CiAgICAgYmxvYlBhcnRz
LmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJs
b2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQ
YXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7
CiB9CiAKIEJsb2I6OkJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciwgY29u
c3QgQmxvYiYgYmxvYikKLSAgICA6IG1fc2Vzc2lvbklEKGJsb2IubV9zZXNzaW9uSUQpCi0gICAg
LCBtX2ludGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCisgICAgOiBtX2lu
dGVybmFsVVJMKEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkpCiAgICAgLCBtX3R5cGUoYmxv
Yi50eXBlKCkpCiAgICAgLCBtX3NpemUoYmxvYi5zaXplKCkpCiB7Ci0gICAgVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCB7
IEJsb2JQYXJ0KGJsb2IudXJsKCkpIH0gLCBtX3R5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCB7IEJsb2JQYXJ0KGJsb2IudXJs
KCkpIH0gLCBtX3R5cGUpOwogfQogCi1CbG9iOjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0
b3IsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJp
bmcmIGZpbGVCYWNrZWRQYXRoKQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwg
bV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKK0Jsb2I6OkJsb2IoRGVzZXJpYWxp
emF0aW9uQ29udHJ1Y3RvciwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwg
T3B0aW9uYWw8dW5zaWduZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNr
ZWRQYXRoKQorICAgIDogbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKICAgICAs
IG1fc2l6ZShzaXplKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRl
cm5hbFVSTCgpOwogICAgIGlmIChmaWxlQmFja2VkUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbnVsbHB0
ciwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKG51bGxwdHIsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CiAgICAg
ZWxzZQotICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBmaWxl
QmFja2VkUGF0aCwgbV90eXBlKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQobV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBm
aWxlQmFja2VkUGF0aCwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBl
bmQsIGNvbnN0IFN0cmluZyYgdHlwZSkKLSAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAg
ICAsIG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpCbG9iKGNvbnN0
IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKKyAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCiAgICAg
Ly8gbV9zaXplIGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBlbmQgLSBzdGFydCBzbyB3ZSBk
byBub3QgaW5pdGlhbGl6ZSBpdCBoZXJlLgogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJM
OjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKG1fc2Vzc2lvbklELCBtX2ludGVybmFsVVJMLCBzcmNVUkwsIHN0
YXJ0LCBlbmQpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiB9CiAKIEJsb2I6On5C
bG9iKCkKIHsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCht
X3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
dW5yZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9u
ZyBCbG9iOjpzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggMmM3YTdiMGZiZTRm
YjEyYzg2ZTdhZGM2NjZiNmRjZjI2ZmJiZmMyMy4uNzM4OTc0YWFkODE4Y2FmNmEyNDc5MDk1ODU3
YzE0MWYxMTFhMWY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTM3LDcgKzM3LDYgQEAKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUg
IlVSTFJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTYsMzAgKzU1LDMwIEBAIHVzaW5n
IEJsb2JQYXJ0VmFyaWFudCA9IFZhcmlhbnQ8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3Piwg
UmVmUHRyPEpTQzo6QXJyYXlCCiBjbGFzcyBCbG9iIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwg
cHVibGljIFVSTFJlZ2lzdHJhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxCbG9iPiB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9FWFBPUlQoQmxvYiwgV0VCQ09SRV9FWFBPUlQpOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
KyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCbG9iKHNlc3Npb25JRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBCbG9iKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0
VmFyaWFudHMsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCisgICAgc3RhdGlj
IFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlh
bnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihjb250ZXh0LnNlc3Npb25JRCgpLCBXVEZNb3ZlKGJs
b2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCbG9iKFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFnKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
KyAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJsb2Ioc2Vzc2lvbklELCBidWZmZXIsIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJsb2IoYnVmZmVyLCBjb250ZW50VHlwZSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICBzdGF0
aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihz
ZXNzaW9uSUQsIFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEJsb2I+IGRlc2VyaWFsaXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUs
IGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCisgICAgc3RhdGljIFJlZjxCbG9iPiBkZXNl
cmlhbGl6ZShjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcg
c2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChCbG9iOjppc05vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc2Vzc2lvbklELCBz
cmNVUkwsIHR5cGUsIHNpemUsIGZpbGVCYWNrZWRQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc3JjVVJMLCB0eXBlLCBz
aXplLCBmaWxlQmFja2VkUGF0aCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKQEAg
LTEwNCwzMCArMTAzLDI4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxCbG9iPiBzbGljZShsb25nIGxv
bmcgc3RhcnQgPSAwLCBsb25nIGxvbmcgZW5kID0gc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxv
bmc+OjptYXgoKSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IFN0cmluZygpKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihtX3Nlc3Npb25JRCwgbV9p
bnRlcm5hbFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQmxvYihtX2ludGVybmFsVVJMLCBzdGFydCwgZW5kLCBjb250ZW50VHlwZSkp
OwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2Io
UEFMOjpTZXNzaW9uSUQpOwotICAgIEJsb2IoUEFMOjpTZXNzaW9uSUQsIFZlY3RvcjxCbG9iUGFy
dFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOwotICAgIEJsb2IoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIEJsb2IoUEFMOjpTZXNzaW9uSUQsIFZlY3Rvcjx1aW50OF90PiYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCbG9iKCk7CisgICAgQmxvYihWZWN0
b3I8QmxvYlBhcnRWYXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKKyAgICBCbG9i
KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIEJs
b2IoVmVjdG9yPHVpbnQ4X3Q+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAg
ZW51bSBSZWZlcmVuY2luZ0V4aXN0aW5nQmxvYkNvbnN0cnVjdG9yIHsgcmVmZXJlbmNpbmdFeGlz
dGluZ0Jsb2JDb25zdHJ1Y3RvciB9OwogICAgIEJsb2IoUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JD
b25zdHJ1Y3RvciwgY29uc3QgQmxvYiYpOwogCiAgICAgZW51bSBVbmluaXRpYWxpemVkQ29udHJ1
Y3RvciB7IHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yIH07Ci0gICAgQmxvYihVbmluaXRpYWxpemVk
Q29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBTdHJpbmcmJiB0eXBlKTsKKyAgICBC
bG9iKFVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CiAKICAg
ICBlbnVtIERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IgeyBkZXNlcmlhbGl6YXRpb25Db250cnVj
dG9yIH07Ci0gICAgQmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uYWw8dW5zaWdu
ZWQgbG9uZyBsb25nPiBzaXplLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKTsKKyAgICBC
bG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3Ry
aW5nJiBmaWxlQmFja2VkUGF0aCk7CiAKICAgICAvLyBGb3Igc2xpY2luZy4KLSAgICBCbG9iKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBCbG9iKGNvbnN0IFVSTCYg
c3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpOwogCiBwcml2YXRlOgotICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwot
CiAgICAgLy8gVGhpcyBpcyBhbiBpbnRlcm5hbCBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRh
dGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LiBJdCBzZXJ2ZXMKICAgICAvLyBhcyBhbiBp
ZGVudGlmaWVyIGZvciB0aGlzIGJsb2IuIFRoZSBpbnRlcm5hbCBVUkwgaXMgbmV2ZXIgdXNlZCB0
byBzb3VyY2UgdGhlIGJsb2IncyBjb250ZW50CiAgICAgLy8gaW50byBhbiBIVE1MIG9yIGZvciBG
aWxlUmVhZCdpbmcsIHB1YmxpYyBibG9iIFVSTHMgbXVzdCBiZSB1c2VkIGZvciB0aG9zZSBwdXJw
b3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsCmluZGV4IGFlNTUyYTk1NmYzNTNjMGU0MmNhMmQ1
MTU3ZjU1NDA0MWU1MWE1MDIuLjY5ZDBmMTU1YWQ0Nzk4ZDdlNjZiNDA4ZDJkYmVjNjgyMGM2ZWRk
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbApAQCAtMzUsNyArMzUsNiBAQCB0eXBlZGVmIChC
dWZmZXJTb3VyY2Ugb3IgQmxvYiBvciBVU1ZTdHJpbmcpIEJsb2JQYXJ0OwogICAgIEdlbmVyYXRl
SXNSZWFjaGFibGU9SW1wbCwKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIENvbnN0cnVjdG9y
KG9wdGlvbmFsIHNlcXVlbmNlPEJsb2JQYXJ0PiBibG9iUGFydHMsIG9wdGlvbmFsIEJsb2JQcm9w
ZXJ0eUJhZyBvcHRpb25zKSwKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsCiBdIGludGVyZmFjZSBCbG9iIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsb25nIHNpemU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggYThmNDZkMTY2Y2JjYzlmMzgzNWQ1NTVl
OThlODQ2MTE4OTJhYTgxYS4uNmFmYjNlZmY2YjgwMWE5NGU1YjYzMTc0ZGExOTgwMTIwMjZjOWEx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0zOSwzNCArMzksMzQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRmlsZSk7CiAKLVJlZjxG
aWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCkKK1JlZjxG
aWxlPiBGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCiB7Ci0gICAgYXV0byBmaWxlID0gRmlsZTo6Y3JlYXRl
KHNlc3Npb25JRCwgcGF0aCk7CisgICAgYXV0byBmaWxlID0gRmlsZTo6Y3JlYXRlKHBhdGgpOwog
ICAgIGZpbGUtPnNldFJlbGF0aXZlUGF0aChyZWxhdGl2ZVBhdGgpOwogICAgIHJldHVybiBmaWxl
OwogfQogCi1SZWY8RmlsZT4gRmlsZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSkKK1JlZjxGaWxl
PiBGaWxlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVy
cmlkZSkKIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBTdHJpbmcgdHlwZTsKICAgICBjb21wdXRl
TmFtZUFuZENvbnRlbnRUeXBlKHBhdGgsIG5hbWVPdmVycmlkZSwgbmFtZSwgdHlwZSk7CiAKICAg
ICBhdXRvIGludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgaW50
ZXJuYWxVUkwsIHBhdGgsIHR5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyRmlsZUJsb2JVUkwoaW50ZXJuYWxVUkwsIHBhdGgsIHR5cGUpOwogCi0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmlsZShzZXNzaW9uSUQsIFdURk1vdmUoaW50ZXJuYWxVUkwpLCBXVEZNb3Zl
KHR5cGUpLCBTdHJpbmcgeyBwYXRoIH0sIFdURk1vdmUobmFtZSkpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlKFdURk1vdmUoaW50ZXJuYWxVUkwpLCBXVEZNb3ZlKHR5cGUpLCBTdHJp
bmcgeyBwYXRoIH0sIFdURk1vdmUobmFtZSkpKTsKIH0KIAotRmlsZTo6RmlsZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwg
U3RyaW5nJiYgbmFtZSkKLSAgICA6IEJsb2IodW5pbml0aWFsaXplZENvbnRydWN0b3IsIHNlc3Np
b25JRCwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHR5cGUpKQorRmlsZTo6RmlsZShVUkwmJiB1cmws
IFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpCisgICAgOiBCbG9i
KHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBXVEZNb3ZlKHVybCksIFdURk1vdmUodHlwZSkpCiAg
ICAgLCBtX3BhdGgoV1RGTW92ZShwYXRoKSkKICAgICAsIG1fbmFtZShXVEZNb3ZlKG5hbWUpKQog
ewogfQogCi1GaWxlOjpGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+
JiBsYXN0TW9kaWZpZWQpCi0gICAgOiBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHNl
c3Npb25JRCwgdXJsLCB0eXBlLCB7IH0sIHBhdGgpCitGaWxlOjpGaWxlKERlc2VyaWFsaXphdGlv
bkNvbnRydWN0b3IsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYg
bGFzdE1vZGlmaWVkKQorICAgIDogQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCB1cmws
IHR5cGUsIHsgfSwgcGF0aCkKICAgICAsIG1fcGF0aChwYXRoKQogICAgICwgbV9uYW1lKG5hbWUp
CiAgICAgLCBtX2xhc3RNb2RpZmllZERhdGVPdmVycmlkZShsYXN0TW9kaWZpZWQpCkBAIC04MCw4
ICs4MCw4IEBAIHN0YXRpYyBCbG9iUHJvcGVydHlCYWcgY29udmVydFByb3BlcnR5QmFnKGNvbnN0
IEZpbGU6OlByb3BlcnR5QmFnJiBpbml0aWFsQmFnKQogICAgIHJldHVybiBiYWc7CiB9CiAKLUZp
bGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0
VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCi0gICAgOiBCbG9iKGNvbnRleHQuc2Vzc2lvbklE
KCksIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGNvbnZlcnRQcm9wZXJ0eUJhZyhwcm9wZXJ0
eUJhZykpCitGaWxlOjpGaWxlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJp
YW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmIHByb3BlcnR5
QmFnKQorICAgIDogQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBjb252ZXJ0UHJvcGVy
dHlCYWcocHJvcGVydHlCYWcpKQogICAgICwgbV9uYW1lKGZpbGVuYW1lKQogICAgICwgbV9sYXN0
TW9kaWZpZWREYXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlT3IoV2Fs
bFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGUuaAppbmRleCBkZTNhM2NiODA4ZDNhODA3NjgwN2JmMTNiNGEwNmJjYjI4NjMz
YTcyLi5kMmY5MzhiNDIwZDNhNjBmYjkzZjc0MGJjYjA0ZDc0MWY4M2VmZjc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuaApAQCAtNDIsMTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8g
Q3JlYXRlIGEgZmlsZSB3aXRoIGFuIG9wdGlvbmFsIG5hbWUgZXhwb3NlZCB0byB0aGUgYXV0aG9y
ICh2aWEgRmlsZS5uYW1lIGFuZCBhc3NvY2lhdGVkIERPTSBwcm9wZXJ0aWVzKSB0aGF0IGRpZmZl
cnMgZnJvbSB0aGUgb25lIHByb3ZpZGVkIGluIHRoZSBwYXRoLgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbmFtZU92ZXJyaWRlID0geyB9KTsKIAogICAgIC8vIENyZWF0ZSBhIEZpbGUgdXNpbmcgdGhl
ICduZXcgRmlsZScgY29uc3RydWN0b3IuCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBi
bG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJh
ZyYgcHJvcGVydHlCYWcpCisgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoVmVjdG9yPEJsb2JQ
YXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGaWxlKGNvbnRleHQsIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGZpbGVu
YW1lLCBwcm9wZXJ0eUJhZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKFdU
Rk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIGZpbGVuYW1lLCBwcm9wZXJ0eUJhZykpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8RmlsZT4gZGVzZXJpYWxpemUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RN
b2RpZmllZCA9IFdURjo6bnVsbG9wdCkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFsaXpl
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlm
aWVkID0gV1RGOjpudWxsb3B0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmlsZShkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBzZXNzaW9uSUQsIHBhdGgsIHNyY1VSTCwg
dHlwZSwgbmFtZSwgbGFzdE1vZGlmaWVkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZpbGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgcGF0aCwgc3JjVVJMLCB0eXBlLCBuYW1l
LCBsYXN0TW9kaWZpZWQpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShj
b25zdCBCbG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShmaWxlLCBuYW1lKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRo
KTsKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7CiAKICAgICBib29sIGlzRmls
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtODUsMTMgKzg1LDEzIEBA
IHB1YmxpYzoKICAgICBib29sIGlzRGlyZWN0b3J5KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRmlsZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBwYXRoKTsKLSAgICBGaWxlKFBBTDo6U2Vzc2lvbklELCBVUkwmJiwgU3RyaW5nJiYgdHlwZSwg
U3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSk7Ci0gICAgRmlsZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBGaWxlKFVSTCYmLCBT
dHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKTsKKyAgICBGaWxlKFZl
Y3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKICAgICBGaWxlKGNvbnN0IEJsb2ImLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwogICAgIEZpbGUoY29uc3QgRmlsZSYsIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAKLSAgICBGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2Rp
ZmllZCk7CisgICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCk7CiAKICAgICBz
dGF0aWMgdm9pZCBjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUsIFN0cmluZyYgZWZmZWN0aXZlTmFtZSwgU3RyaW5n
JiBlZmZlY3RpdmVDb250ZW50VHlwZSk7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRsIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmlkbAppbmRleCBiZjc2ZGNkZjQwMDQyNjczMzEwM2MyMWMzZWRmNzA0
NWZkNTA0ZTcxLi40Y2Y1NDdlMWMzNmM5NGZjNTc2YTgxMWUyMDc1M2MxNTZkMjA5YWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZS5pZGwKQEAgLTI4LDcgKzI4LDYgQEAgdHlwZWRlZiAoQnVmZmVyU291
cmNlIG9yIEJsb2Igb3IgVVNWU3RyaW5nKSBCbG9iUGFydDsKIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBleHBvc2VkIG9uIFdvcmtlcnMgYXMgd2VsbC4KIFsKICAgICBDb25zdHJ1Y3RvcihzZXF1
ZW5jZTxCbG9iUGFydD4gZmlsZUJpdHMsIFVTVlN0cmluZyBmaWxlTmFtZSwgb3B0aW9uYWwgRmls
ZVByb3BlcnR5QmFnIG9wdGlvbnMpLAotICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBFeHBv
c2VkPShXaW5kb3cpLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggNGRjZDBkZDBjMDljN2YwYzBlODc0
NmFkODAxMzY2ZDhjYWU2OThlMC4uODk3MTU1YTEyMjkxZGM0ZTUzNTIzNGUwODhhOGM0MmVmYTA5
YjVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBA
IC02OCw3ICs2OCw3IEBAIEZpbGVSZWFkZXJMb2FkZXI6On5GaWxlUmVhZGVyTG9hZGVyKCkKIHsK
ICAgICB0ZXJtaW5hdGUoKTsKICAgICBpZiAoIW1fdXJsRm9yUmVhZGluZy5pc0VtcHR5KCkpCi0g
ICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKCptX3Nlc3Np
b25JRCwgbV91cmxGb3JSZWFkaW5nKTsKKyAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
dW5yZWdpc3RlckJsb2JVUkwobV91cmxGb3JSZWFkaW5nKTsKIH0KIAogdm9pZCBGaWxlUmVhZGVy
TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBCbG9iJiBibG9iKQpAQCAtODEsOCArODEsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6
OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEJs
bwogICAgICAgICBmYWlsZWQoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2Vz
c2lvbklEKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKCpt
X3Nlc3Npb25JRCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbV91
cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwg
bV91cmxGb3JSZWFkaW5nLCBibG9iLnVybCgpKTsKIAogICAgIC8vIENvbnN0cnVjdCBhbmQgbG9h
ZCB0aGUgcmVxdWVzdC4KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRp
bmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA0MTli
MjA5M2M3ZDc5MGJmMjE1M2RhMmJjZDI5MTU0ZGRiNjBkNDBmLi5mZmE4MDM2NzNjOGY0YTJiNWVm
OTE2NTVlOTk5ZWY3NmM5ZDIwM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuaApAQCAtMTAzLDcgKzEwMyw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGF0
YVR5cGU7CiAKICAgICBVUkwgbV91cmxGb3JSZWFkaW5nOwotICAgIE9wdGlvbmFsPFBBTDo6U2Vz
c2lvbklEPiBtX3Nlc3Npb25JRDsKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2Fk
ZXI7CiAKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9yYXdEYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggYTk1
YjI0OWY4Yzg0MjNmZDc0NWJjMmFjOTdiMjdiYzA0YWEzYTczOS4uMjcyNTMwYjRmM2E1ODU5YjI0
ZDM5NjQ2NGQzOTFkYjYxZjY0NDJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC02NCw2NyArNjQsNjcgQEAgc3RhdGljIFRo
cmVhZFNwZWNpZmljPEJsb2JVcmxPcmlnaW5NYXA+JiBvcmlnaW5NYXAoKQogICAgIHJldHVybiAq
bWFwOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JV
UkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKGlzTWFpblRocmVh
ZCgpKSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lv
bklELCB1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlw
ZSk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1
cmwuaXNvbGF0ZWRDb3B5KCksIHBhdGggPSBwYXRoLmlzb2xhdGVkQ29weSgpLCBjb250ZW50VHlw
ZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgp
LnJlZ2lzdGVyRmlsZUJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdXJs
ID0gdXJsLmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVu
dFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVh
dGUocGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBi
bG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIFdURk1vdmUoYmxv
YlBhcnRzKSwgY29udGVudFR5cGUpOworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iUGFydHMpCiAgICAgICAgIHBh
cnQuZGV0YWNoRnJvbUN1cnJlbnRUaHJlYWQoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNz
aW9uSUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgYmxvYlBhcnRzID0gV1RGTW92ZShibG9i
UGFydHMpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSgpIG11dGFi
bGUgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1
cmwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKSwgYmxvYlBhcnRzID0gV1RGTW92ZShibG9iUGFy
dHMpLCBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUg
eworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJs
b2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKICAgICB9KTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCit2
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgLy8g
SWYgdGhlIGJsb2IgVVJMIGNvbnRhaW5zIG51bGwgb3JpZ2luLCBhcyBpbiB0aGUgY29udGV4dCB3
aXRoIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgZmlsZSBVUkwsIHNhdmUgdGhlIG1hcHBpbmcg
YmV0d2VlbiB1cmwgYW5kIG9yaWdpbiBzbyB0aGF0IHRoZSBvcmlnaW4gY2FuIGJlIHJldHJpdmVk
IHdoZW4gZG9pbmcgc2VjdXJpdHkgb3JpZ2luIGNoZWNrLgogICAgIGlmIChvcmlnaW4gJiYgQmxv
YlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+YWRk
KHVybC5zdHJpbmcoKSwgb3JpZ2luKTsKIAogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAg
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwsIHNyY1VS
TCk7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9u
SUQsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQs
IHVybCwgc3JjVVJMKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRD
b3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwogICAgIH0pOwogfQogCi12b2lk
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFj
a2VkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYg
c3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAg
ICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwsIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOwor
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmlsZUJhY2tlZFBh
dGgpLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FsbE9uTWFp
blRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNy
Y1VSTC5pc29sYXRlZENvcHkoKSwgZmlsZUJhY2tlZFBhdGggPSBmaWxlQmFja2VkUGF0aC5pc29s
YXRlZENvcHkoKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShm
aWxlQmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwg
PSB1cmwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKSwgZmls
ZUJhY2tlZFBhdGggPSBmaWxlQmFja2VkUGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUg
PSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpjcmVhdGUoZmlsZUJhY2tlZFBhdGgpLCBjb250ZW50VHlwZSk7CiAgICAg
fSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VSTCwgY29uc3Qg
VVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKK3ZvaWQgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiBuZXdV
UkwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCiB7
CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25JRCwgbmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQp
OworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShuZXdVUkws
IHNyY1VSTCwgc3RhcnQsIGVuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxs
T25NYWluVGhyZWFkKFtzZXNzaW9uSUQsIG5ld1VSTCA9IG5ld1VSTC5pc29sYXRlZENvcHkoKSwg
c3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBzdGFydCwgZW5kXSB7Ci0gICAgICAgIGJs
b2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHNlc3Npb25JRCwgbmV3VVJMLCBz
cmNVUkwsIHN0YXJ0LCBlbmQpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW25ld1VSTCA9IG5ld1VS
TC5pc29sYXRlZENvcHkoKSwgc3JjVVJMID0gc3JjVVJMLmlzb2xhdGVkQ29weSgpLCBzdGFydCwg
ZW5kXSB7CisgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG5l
d1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKICAgICB9KTsKIH0KIApAQCAtMTQzLDE3ICsxNDMs
MTcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXpl
KGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiByZXN1bHRTaXplOwogfQogCi12b2lkIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChCbG9iVVJMOjpnZXRPcmln
aW4odXJsKSA9PSAibnVsbCIpCiAgICAgICAgIG9yaWdpbk1hcCgpLT5yZW1vdmUodXJsLnN0cmlu
ZygpKTsKIAogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnko
KS51bnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHVybCk7CisgICAgICAgIGJsb2JSZWdpc3Ry
eSgpLnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
Y2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklELCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwp
OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9IHVybC5pc29sYXRlZENvcHkoKV0geworICAg
ICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmlu
ZGV4IGExNjBhY2NiOGI1OGJmOWI2OGVjMmEzZTAyZjdkMzUwZTg2OGE1NWYuLjk3OTViMjE0NTAx
ZGNhYmIwODNkZTAyMTcyYWY2MmQ4YTQ1NGE4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBAIC00NCwxMiArNDQsMTIgQEAgY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewogcHVibGlj
OgotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7
Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOwotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgbmV3VVJMLCBjb25z
dCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKTsKLSAgICBzdGF0
aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJik7Cisg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JV
UkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCk7CisgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgZW5kKTsKKyAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29u
c3QgVVJMJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGIxNGQz
MTAxNThiNjQ1ZmU4Njk5ZjdmOTlmNDE4NThiZDU1YWUyOGUuLmYwMGEzZWMwNzA3ZWY5MmJjZTY0
ZWExMGIxZGVkMzhjOTRlM2RhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cApAQCAtMTc1LDcgKzE3NSw3IEBAIGJvb2wgRmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEo
RE9NRm9ybURhdGEmIGZvcm1EYXRhLCBib29sIG11bHRpcGFydCkgY29uc3QKICAgICAvLyBJZiBu
byBmaWxlbmFtZSBhdCBhbGwgaXMgZW50ZXJlZCwgcmV0dXJuIHN1Y2Nlc3NmdWwgYnV0IGVtcHR5
LgogICAgIC8vIE51bGwgd291bGQgYmUgbW9yZSBsb2dpY2FsLCBidXQgTmV0c2NhcGUgcG9zdHMg
YW4gZW1wdHkgZmlsZS4gQXJnaC4KICAgICBpZiAoZmlsZUxpc3QtPmlzRW1wdHkoKSkgewotICAg
ICAgICBmb3JtRGF0YS5hcHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1l
bnQoKS5zZXNzaW9uSUQoKSwgZW1wdHlTdHJpbmcoKSkpOworICAgICAgICBmb3JtRGF0YS5hcHBl
bmQobmFtZSwgRmlsZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpmaWxl
c0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBjb25zdAog
CiAgICAgYXV0byBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgPSBhbGxvd3NEaXJlY3Rvcmllcygp
ID8gRmlsZUxpc3RDcmVhdG9yOjpTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyA6IEZpbGVM
aXN0Q3JlYXRvcjo6U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpObzsKICAgICBhdXRvIHNob3Vs
ZFJlcXVlc3RJY29uID0gaWNvbiA/IFJlcXVlc3RJY29uOjpZZXMgOiBSZXF1ZXN0SWNvbjo6Tm87
Ci0gICAgbV9maWxlTGlzdENyZWF0b3IgPSBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShlbGVtZW50
KCktPmRvY3VtZW50KCkuc2Vzc2lvbklEKCksIHBhdGhzLCBzaG91bGRSZXNvbHZlRGlyZWN0b3Jp
ZXMsIFt0aGlzLCBzaG91bGRSZXF1ZXN0SWNvbl0oUmVmPEZpbGVMaXN0PiYmIGZpbGVMaXN0KSB7
CisgICAgbV9maWxlTGlzdENyZWF0b3IgPSBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZShwYXRocywg
c2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBbdGhpcywgc2hvdWxkUmVxdWVzdEljb25dKFJlZjxG
aWxlTGlzdD4mJiBmaWxlTGlzdCkgewogICAgICAgICBzZXRGaWxlcyhXVEZNb3ZlKGZpbGVMaXN0
KSwgc2hvdWxkUmVxdWVzdEljb24pOwogICAgICAgICBtX2ZpbGVMaXN0Q3JlYXRvciA9IG51bGxw
dHI7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3Jl
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKaW5kZXgg
ODc0Njg0ZjU2M2M2MTA4NTNiYzZkMWZmZjA4OGJmZGM4ZGZhOGRjNS4uZGM2Mjg1YmM5YjU4MzUw
NmUzZDZkMjBlMDk1MTY1MWNlOTBkZWNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlTGlzdENyZWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RD
cmVhdG9yLmNwcApAQCAtMzksNyArMzksNyBAQCBGaWxlTGlzdENyZWF0b3I6On5GaWxlTGlzdENy
ZWF0b3IoKQogICAgIEFTU0VSVCghbV9jb21wbGV0aW9uSGFuZGVyKTsKIH0KIAotc3RhdGljIHZv
aWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3RvcjxSZWY8
RmlsZT4+JiBmaWxlT2JqZWN0cykKK3N0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCwgVmVjdG9y
PFJlZjxGaWxlPj4mIGZpbGVPYmplY3RzKQogewogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShkaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0
byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShjaGlsZFBhdGgpOwpAQCAtNTEs
MjIgKzUxLDIyIEBAIHN0YXRpYyB2b2lkIGFwcGVuZERpcmVjdG9yeUZpbGVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkaXJlY3RvCiAKICAgICAgICAgU3RyaW5nIGNo
aWxkUmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoICsgIi8iICsgRmlsZVN5c3RlbTo6cGF0aEdl
dEZpbGVOYW1lKGNoaWxkUGF0aCk7CiAgICAgICAgIGlmIChtZXRhZGF0YS52YWx1ZSgpLnR5cGUg
PT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3RvcnkpCi0gICAgICAgICAgICBhcHBlbmREaXJl
Y3RvcnlGaWxlcyhzZXNzaW9uSUQsIGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVP
YmplY3RzKTsKKyAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0aCwgY2hp
bGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0YWRhdGEu
dmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKLSAgICAgICAgICAgIGZp
bGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKHNlc3Npb25JRCwg
Y2hpbGRQYXRoLCBjaGlsZFJlbGF0aXZlUGF0aCkpOworICAgICAgICAgICAgZmlsZU9iamVjdHMu
YXBwZW5kKEZpbGU6OmNyZWF0ZVdpdGhSZWxhdGl2ZVBhdGgoY2hpbGRQYXRoLCBjaGlsZFJlbGF0
aXZlUGF0aCkpOwogICAgIH0KIH0KIAotRmlsZUxpc3RDcmVhdG9yOjpGaWxlTGlzdENyZWF0b3Io
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9y
aWVzLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorRmlsZUxpc3RDcmVh
dG9yOjpGaWxlTGlzdENyZWF0b3IoY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBw
YXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3Rvcmllcywg
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoc2hvdWxk
UmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6Tm8pCi0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0ZUZpbGVMaXN0PFNob3VsZFJlc29sdmVEaXJlY3Rv
cmllczo6Tm8+KHNlc3Npb25JRCwgcGF0aHMpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y3JlYXRlRmlsZUxpc3Q8U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpObz4ocGF0aHMpKTsKICAg
ICBlbHNlIHsKICAgICAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBvbiBhIGJhY2tncm91bmQg
dGhyZWFkIHRvIGF2b2lkIGJsb2NraW5nIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgbV9jb21w
bGV0aW9uSGFuZGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIG1fd29y
a1F1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIkZpbGVMaXN0Q3JlYXRvciBXb3JrIFF1ZXVlIik7
Ci0gICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBzZXNzaW9uSUQsIHBhdGhzID0gY3Jvc3NUaHJlYWRDb3B5KHBhdGhzKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZUxpc3QgPSBjcmVhdGVGaWxlTGlzdDxT
aG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Olllcz4oc2Vzc2lvbklELCBwYXRocyk7CisgICAgICAg
IG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwYXRocyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBhdXRvIGZpbGVMaXN0ID0gY3JlYXRlRmlsZUxpc3Q8U2hvdWxkUmVzb2x2ZURpcmVjdG9y
aWVzOjpZZXM+KHBhdGhzKTsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmaWxlTGlzdCA9IFdURk1vdmUo
ZmlsZUxpc3QpXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRp
b25IYW5kZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRlcikpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kZXIoV1RGTW92ZShmaWxlTGlzdCkpOwpAQCAtNzYsMTQgKzc2LDE0
IEBAIEZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vCiB9CiAKIHRlbXBsYXRlPEZpbGVMaXN0Q3JlYXRv
cjo6U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3Rvcmllcz4KLVJl
ZjxGaWxlTGlzdD4gRmlsZUxpc3RDcmVhdG9yOjpjcmVhdGVGaWxlTGlzdChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMpCitS
ZWY8RmlsZUxpc3Q+IEZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9y
PEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocykKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBm
aWxlT2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewogICAgICAgICBpZiAo
c2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6WWVz
ICYmIEZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OlNo
b3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9y
eUZpbGVzKHNlc3Npb25JRCwgaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUo
aW5mby5wYXRoKSwgZmlsZU9iamVjdHMpOworICAgICAgICAgICAgYXBwZW5kRGlyZWN0b3J5Rmls
ZXMoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoaW5mby5wYXRoKSwgZmls
ZU9iamVjdHMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQo
RmlsZTo6Y3JlYXRlKHNlc3Npb25JRCwgaW5mby5wYXRoLCBpbmZvLmRpc3BsYXlOYW1lKSk7Cisg
ICAgICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGluZm8ucGF0aCwgaW5m
by5kaXNwbGF5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZN
b3ZlKGZpbGVPYmplY3RzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVMaXN0Q3JlYXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuaApp
bmRleCA4NjM3NTQzYTA3Nzk3YzA4Mjk3NzdlM2Y5NTQwZTM0MmJmNDY3ZmI4Li4zYzhiOTRkN2Jl
ZWU4M2FmYjExZmMyNWVjZTNkMGQyNGVmMWVhNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxp
c3RDcmVhdG9yLmgKQEAgLTQyLDkgKzQyLDkgQEAgcHVibGljOgogICAgIHVzaW5nIENvbXBsZXRp
b25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChSZWY8RmlsZUxpc3Q+JiYpPjsKIAogICAgIGVudW0g
Y2xhc3MgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBS
ZWY8RmlsZUxpc3RDcmVhdG9yPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXMgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHN0YXRpYyBSZWY8RmlsZUxpc3RDcmVhdG9yPiBjcmVhdGUoY29u
c3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVj
dG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGVM
aXN0Q3JlYXRvcihzZXNzaW9uSUQsIHBhdGhzLCBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZpbGVMaXN0Q3JlYXRvcihwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIH5GaWxlTGlzdENyZWF0b3IoKTsK
QEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogcHJpdmF0
ZToKLSAgICBGaWxlTGlzdENyZWF0b3IoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxGaWxl
Q2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxl
dGlvbkhhbmRsZXImJik7CisgICAgRmlsZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hv
b3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlv
bkhhbmRsZXImJik7CiAKICAgICB0ZW1wbGF0ZTxTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMgc2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzPgotICAgIHN0YXRpYyBSZWY8RmlsZUxpc3Q+IGNyZWF0ZUZp
bGVMaXN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4m
KTsKKyAgICBzdGF0aWMgUmVmPEZpbGVMaXN0PiBjcmVhdGVGaWxlTGlzdChjb25zdCBWZWN0b3I8
RmlsZUNob29zZXJGaWxlSW5mbz4mKTsKIAogICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fd29ya1F1
ZXVlOwogICAgIENvbXBsZXRpb25IYW5kbGVyIG1fY29tcGxldGlvbkhhbmRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCAyNTBmYjc3NzQ1
Mjg1ZDVkNTc3NDg4MzZkOTZhOTZmZTUxNzcxMjAwLi5mY2ZhNzg0YTA1Y2Q1MDU1YjE4ZTM2ZGI1
ODk4YmU3MGFkZjcyNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHkK
ICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChtaW1l
VHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVP
YmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50KCkuc2Vzc2lvbklEKCks
IFdURk1vdmUoZGF0YSksIG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIG1pbWVU
eXBlKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDIwMTRlZmU3NWNlYzQ2MGUzNzkxZTM2M2Y1NjI4
ZTUwMDFiOGRjZTkuLjljZmJkYjg3MTA5NWVkMDJmMzE2NDUzMWQ0NjdjNTI4ODVhNzMzYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC03MzIsNyArNzMy
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTENhbnZhc0VsZW1lbnQ6OnRvQmxvYihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWYKICAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2I7
CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBibG9iRGF0YSA9IGRhdGEoKmltYWdlRGF0YSwgZW5j
b2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAgICAgICAgIGlmICghYmxvYkRhdGEuaXNFbXB0eSgp
KQotICAgICAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0ZShjb250ZXh0LnNlc3Npb25JRCgpLCBX
VEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CisgICAgICAgICAgICBibG9iID0g
QmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGluZ01JTUVUeXBlKTsKICAgICAg
ICAgY2FsbGJhY2stPnNjaGVkdWxlQ2FsbGJhY2soY29udGV4dCwgV1RGTW92ZShibG9iKSk7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtNzQzLDcgKzc0Myw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojp0b0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUmVmCiAgICAgUmVmUHRyPEJsb2I+IGJsb2I7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJsb2JEYXRhID0gYnVmZmVyKCktPnRvRGF0YShlbmNvZGluZ01JTUVUeXBlLCBxdWFsaXR5KTsK
ICAgICBpZiAoIWJsb2JEYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgYmxvYiA9IEJsb2I6OmNyZWF0
ZShjb250ZXh0LnNlc3Npb25JRCgpLCBXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlw
ZSk7CisgICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9iRGF0YSksIGVuY29k
aW5nTUlNRVR5cGUpOwogICAgIGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIFdU
Rk1vdmUoYmxvYikpOwogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJs
aWNVUkxNYW5hZ2VyLmNwcAppbmRleCBiNjY4ZGExZjMyMTRkYmY5YjkxNjFlZmE4MzI1NmM5NWNh
ODIxMWQzLi5kMmY5NmQ0ZjVkN2Y0NTM0ZWQyMzU1ZDlhN2VlOWVkY2UxZWY4NmY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9p
ZCBQdWJsaWNVUkxNYW5hZ2VyOjpyZXZva2UoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChh
dXRvJiByZWdpc3RyeSA6IG1fcmVnaXN0cnlUb1VSTCkgewogICAgICAgICBpZiAocmVnaXN0cnku
dmFsdWUuY29udGFpbnModXJsLnN0cmluZygpKSkgewotICAgICAgICAgICAgcmVnaXN0cnkua2V5
LT51bnJlZ2lzdGVyVVJMKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHVybCk7CisgICAgICAg
ICAgICByZWdpc3RyeS5rZXktPnVucmVnaXN0ZXJVUkwodXJsKTsKICAgICAgICAgICAgIHJlZ2lz
dHJ5LnZhbHVlLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBQdWJsaWNVUkxNYW5hZ2VyOjpzdG9wKCkKICAg
ICBtX2lzU3RvcHBlZCA9IHRydWU7CiAgICAgZm9yIChhdXRvJiByZWdpc3RyeSA6IG1fcmVnaXN0
cnlUb1VSTCkgewogICAgICAgICBmb3IgKGF1dG8mIHVybCA6IHJlZ2lzdHJ5LnZhbHVlKQotICAg
ICAgICAgICAgcmVnaXN0cnkua2V5LT51bnJlZ2lzdGVyVVJMKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFVSTCh7IH0sIHVybCkpOworICAgICAgICAgICAgcmVnaXN0cnkua2V5LT51bnJlZ2lz
dGVyVVJMKFVSTCh7IH0sIHVybCkpOwogICAgIH0KIAogICAgIG1fcmVnaXN0cnlUb1VSTC5jbGVh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCmluZGV4IGUzZGM0NmE5ZTkyNzQxMDEwZjRh
N2NiMmM1YmNmMDY2ZTdhMjRmNzIuLjIyZmU4MTU4MDU2MzgwNjhjYjBjY2RiNDFlNjE5NzNhNTQ4
MDljZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xh
c3MgVVJMUmVnaXN0cnkgewogcHVibGljOgogICAgIHZpcnR1YWwgflVSTFJlZ2lzdHJ5KCkgPSBk
ZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSA9IDA7CiAKICAgICAv
LyBUaGlzIGlzIGFuIG9wdGlvbmFsIEFQSQogICAgIHZpcnR1YWwgVVJMUmVnaXN0cmFibGUqIGxv
b2t1cChjb25zdCBTdHJpbmcmKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IDUzNjM3MDNi
OGNiNDNjMmJkOTMwMGZiNjVhOTc0NGY0ODVkZGVlNGQuLjhiOTFlMWMzMjRkNzhlNzE1ZThkZTdm
Nzc4ZjQzOGJjY2RjYThjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAKQEAgLTEwNiwxMSArMTA2LDEwIEBAIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIFBv
bGljeUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KFJlCiAKICAgICAv
LyBDcmVhdGUgYSBuZXcgdGVtcG9yYXJ5IGJsb2JVUkwgaW4gY2FzZSB0aGlzIG9uZSBnZXRzIHJl
dm9rZWQgZHVyaW5nIHRoZSBhc3luY2hyb25vdXMgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24u
CiAgICAgVVJMIHRlbXBvcmFyeUJsb2JVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoJm1f
ZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgYXV0byBzZXNzaW9uSUQg
PSBtX2ZyYW1lLmRvY3VtZW50KCktPnNlc3Npb25JRCgpOwotICAgIGJsb2JSZWdpc3RyeSgpLnJl
Z2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwsIHJlcXVlc3QudXJsKCkp
OworICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh0ZW1wb3JhcnlCbG9iVVJMLCBy
ZXF1ZXN0LnVybCgpKTsKICAgICByZXF1ZXN0LnNldFVSTCh0ZW1wb3JhcnlCbG9iVVJMKTsKLSAg
ICByZXR1cm4gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPihbc2Vzc2lvbklELCB0ZW1wb3JhcnlC
bG9iVVJMID0gV1RGTW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0gewotICAgICAgICBibG9iUmVnaXN0
cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChzZXNzaW9uSUQsIHRlbXBvcmFyeUJsb2JVUkwpOworICAg
IHJldHVybiBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+KFt0ZW1wb3JhcnlCbG9iVVJMID0gV1RG
TW92ZSh0ZW1wb3JhcnlCbG9iVVJMKV0geworICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lz
dGVyQmxvYlVSTCh0ZW1wb3JhcnlCbG9iVVJMKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDEwNmM4MGI3ZGJmODNmZmMyMWEzZjlkZjkxMWNhMmUz
MmMwMDRkNzUuLjBhZjI4ZDY1ZGJlM2YxYjMzNDE3MDU1YTExZWRlMjAwMDI0ZGJlMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM3NjgsNyArMzc2OCw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBDaGVja0RyCiAgICAgLy8gVGhpcyBkb2VzIHdvcmsgb25seSBpZiB3ZSBtaXNz
ZWQgYSBkcmFnRW5kLiBEbyBpdCBhbnl3YXksIGp1c3QgdG8gbWFrZSBzdXJlIHRoZSBvbGQgZGF0
YVRyYW5zZmVyIGdldHMgbnVtYmVkLgogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKIAot
ICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJh
ZygqbV9mcmFtZS5kb2N1bWVudCgpKTsKKyAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIgPSBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoKTsKICAgICBIYXNOb25EZWZhdWx0UGFzdGVib2Fy
ZERhdGEgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhID0gSGFzTm9uRGVmYXVsdFBhc3RlYm9h
cmREYXRhOjpObzsKICAgICAKICAgICBpZiAoZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVu
dHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5o
CmluZGV4IDY2MGE3OTZkMGIyZDg5ODYyNTFiODA2ZDM5MTNiZjkxNDU0ZTllNzcuLmZlOTFlODFh
YWQ0MzAyZTAzZGI5NjdhNDZhMzA2YWM2ZDQyY2NlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwyNSArNDcsMjUgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKIAogICAgIC8vIFJlZ2lzdGVy
cyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGZpbGUuCi0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWY8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7
CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmll
ZCBibG9iIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
LCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKICAg
ICAKICAgICAvLyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBibG9i
IGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VSTC4KLSAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHNyY1VSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwpID0gMDsKIAogICAgIC8vIFJlZ2lzdGVycyBhIG5ldyBibG9i
IFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRoZSBzcGVjaWZp
ZWQgc3JjVVJMIG9yLCBpZiBub25lIGZvdW5kLCByZWZlcnJpbmcgdG8gdGhlIGZpbGUgZm91bmQg
YXQgdGhlIGdpdmVuIHBhdGguCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlv
bmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwogCiAgICAg
Ly8gTmVnYXRpdmUgc3RhcnQgYW5kIGVuZCB2YWx1ZXMgc2VsZWN0IGZyb20gdGhlIGVuZC4KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBl
bmQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkg
PSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYpID0gMDsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXpl
KGNvbnN0IFVSTCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3Jh
cnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBmaWxlUGF0aHMpPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIEJsb2JSZWdpc3RyeUltcGwq
IGJsb2JSZWdpc3RyeUltcGwoKSB7IHJldHVybiBudWxscHRyOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBiODc5NjEyODNjM2Q4ZTRlYWRjNTU3MjZhNmNlYjkwYTBj
NmY3MGFjLi5jYjNmZGQ1YWE0YjdjZGQxNzk5NTAzNGIzMTU2NWM5NDQ3ZGYxOWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00MjYzLDcgKzQyNjMsNyBAQCBSZWZQdHI8
RmlsZT4gSW50ZXJuYWxzOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBpZiAo
IXVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBGaWxlOjpjcmVhdGUoZG9jdW1lbnQtPnNlc3Npb25JRCgpLCB1cmwuZmlsZVN5c3RlbVBhdGgo
KSk7CisgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZSh1cmwuZmlsZVN5c3RlbVBhdGgoKSk7CiB9CiAK
IHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3JvVGFzayhpbnQgdGVzdE51bWJlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCmluZGV4IDZl
MWJjYTNhNDdmZGRhNjFmZDlmZGFiZjcxOGRhNDQyZDhiYzUzNjEuLjU1NDQ1NjE1ZTBlMWU4MWVj
YTE0YjgxNmMzZThlNDkxYjczN2IzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAtNjgsMTQgKzY4LDE0IEBAIFJlZjxGZXRj
aEV2ZW50PiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpjcmVhdGVCZWluZ0Rpc3BhdGNoZWRGZXRj
aEV2ZW50KFNjcmlwdEV4CiAKIFJlZjxGZXRjaFJlc3BvbnNlPiBTZXJ2aWNlV29ya2VySW50ZXJu
YWxzOjpjcmVhdGVPcGFxdWVXaXRoQmxvYkJvZHlSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogewotICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShjb250ZXh0LnNl
c3Npb25JRCgpKTsKKyAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoKTsKICAgICBhdXRvIGZv
cm1EYXRhID0gRm9ybURhdGE6OmNyZWF0ZSgpOwogICAgIGZvcm1EYXRhLT5hcHBlbmRCbG9iKGJs
b2ItPnVybCgpKTsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgcmVzcG9u
c2Uuc2V0VHlwZShSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpDb3JzKTsKICAgICByZXNwb25zZS5z
ZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlKTsKLSAgICBhdXRv
IGZldGNoUmVzcG9uc2UgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4dCwgRmV0Y2hCb2R5
Ojpmcm9tRm9ybURhdGEoY29udGV4dC5zZXNzaW9uSUQoKSwgZm9ybURhdGEpLCBGZXRjaEhlYWRl
cnM6Okd1YXJkOjpSZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZSkpOworICAgIGF1dG8gZmV0Y2hS
ZXNwb25zZSA9IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBGZXRjaEJvZHk6OmZyb21G
b3JtRGF0YShmb3JtRGF0YSksIEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlLCBXVEZNb3Zl
KHJlc3BvbnNlKSk7CiAgICAgZmV0Y2hSZXNwb25zZS0+aW5pdGlhbGl6ZU9wYXF1ZUxvYWRJZGVu
dGlmaWVyRm9yVGVzdGluZygpOwogICAgIHJldHVybiBmZXRjaFJlc3BvbnNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggMjBhMmFkYWYzNTYyZjk0YzZkY2IzN2I0MDg5ZTI0ZjZk
YjdkZmJmYS4uNDQ5NjlhZjA2ZjRmOGMxZTc3YTVjMWViYTlmZDRiMDIyM2EwNjdhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBkaXNwYXRjaEZl
dGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYg
Z2xvYmFsU2MKICAgICBhdXRvKiBmb3JtRGF0YSA9IHJlcXVlc3QuaHR0cEJvZHkoKTsKICAgICBP
cHRpb25hbDxGZXRjaEJvZHk+IGJvZHk7CiAgICAgaWYgKGZvcm1EYXRhICYmICFmb3JtRGF0YS0+
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvZHkgPSBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShnbG9i
YWxTY29wZS5zZXNzaW9uSUQoKSwgKmZvcm1EYXRhKTsKKyAgICAgICAgYm9keSA9IEZldGNoQm9k
eTo6ZnJvbUZvcm1EYXRhKCpmb3JtRGF0YSk7CiAgICAgICAgIGlmICghYm9keSkgewogICAgICAg
ICAgICAgY2xpZW50LT5kaWROb3RIYW5kbGUoKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGY1YzY3NTMwNWY3NWQ0NDQyMTY5Y2Q3
YjgyMWZjNTBkNWFlNTY1MzguLjc5YmQ0NjEyMDNlZGQyNDRkZTU3YzY5NjA2NDQ2YjY4YzE5NjVj
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjE0LDcgKzIxNCw3
IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAg
ICAgZGF0YS5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmRhdGEoKSwgbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPnNpemUoKSk7CiAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBu
dWxscHRyOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxp
emVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBk
ZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgotICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgV1RGTW92
ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CiAKIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCAwYzg0NmRiMDI0MmYzYTc1MTNlNmMz
YjExMWVhYWMxZDg4NjBlYzk1Li5kNGY4NzUzMzYwOWNkZGM0OWM5ZGNiNTRhMWRkZmJmNTgzM2Uw
YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNTIsMTQgKzUyLDE0
IEBAIEJsb2JSZWdpc3RyeSogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0
ZUJsb2JSZWdpc3RyeSgpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgY2xh
c3MgRW1wdHlCbG9iUmVnaXN0cnkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKLSAg
ICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
LSAgICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAg
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JV
UkwoY29uc3QgVVJMJiwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBWZWN0b3I8QmxvYlBhcnQ+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwg
UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgICAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcg
c3RhcnQsIGxvbmcgbG9uZyBlbmQpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25z
dCBVUkwmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQotICAgICAg
ICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmls
ZVBhdGhzKT4mJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIH07CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5QmxvYlJlZ2lzdHJ5PiBibG9iUmVnaXN0cnk7CiAg
ICAgcmV0dXJuICZibG9iUmVnaXN0cnkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggZWI2MzBhMDE1
MDlmNmM1ZmQ3ZjY0ZDMyOGVkYTNkNjA3OGFmN2Y1OS4uOGY0N2I4ZjA3MGUxZjI5ODMzNDUzOGRj
YThjZjRkNGU0YTM5NGM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1
cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29u
c3QgVVJMJiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5z
aW9uSGFuZGxlOwogCkBAIC00NywyOCArNDcsMjggQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFJlZjwK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhh
bmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQ
YXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJl
Z2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQ
YXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
Z2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAwKTsKIH0KIAotdm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogewogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVnaXN0ZXJCbG9iVVJMRnJvbVVSTCB7IHVybCwgc3JjVVJMIH0sIDApOwogfQogCi12b2lk
IEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxX
ZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgZmlsZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBBU1NFUlQoZmlsZSk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkxPcHRp
b25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50VHlwZSks
IDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJCbG9iVVJM
KHVybCksIDApOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNV
UkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkKIHsKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKSwgMCk7CiB9CkBAIC04MSw5ICs4
MSw4IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUoY29u
c3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKLXZvaWQgQmxvYlJlZ2lz
dHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgQmxvYlJlZ2lzdHJ5UHJveHk6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUX1VO
VVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNz
aW9uSUQoKSk7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKaW5kZXggZDc2NjE1ODdlM2U3NDM4
MzJlMjMyNWM2Nzk2Y2ZhMzQ1YmI5NTZjMC4uNDA5ODRkYjI3ZGFkZDdkNjVlOWE1MWFjMTcyZDA1
NzcxOTJkNGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQ
SS9CbG9iUmVnaXN0cnlQcm94eS5oCkBAIC0zMSwxNCArMzEsMTQgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIEJsb2JSZWdpc3RyeVByb3h5IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmLCBSZWY8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwp
IGZpbmFsOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbDsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmKSBmaW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25n
IGxvbmcgZW5kKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBm
aW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7CisgICAg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxv
bmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpIGZpbmFsOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBi
bG9iU2l6ZShjb25zdCBVUkwmKSBmaW5hbDsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxlUGF0aHMpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZp
bGVQYXRocyk+JiYpIGZpbmFsOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CmluZGV4IGRlZjk4ZGFlMmZlYjQ0ODA3ZWZiMzIxN2FjZGNjZWNiYjY1OTlkYzAuLmY2NzcyMGUz
OTVjZmZlMzAzMTBkODY0YmY5ODliZTJmY2ZhMmJjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KQEAgLTY0LDE0ICs2NCwxNCBAQCBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKIAogY2xhc3MgV2ViQmxv
YlJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7CiBwcml2YXRlOgotICAgIHZv
aWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFJl
ZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBX
VEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQotICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBh
cnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJl
Z2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KLSAgICB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmws
IHNyY1VSTCk7IH0KLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2Vk
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0
cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlG
aWxlQmFja2VkKHVybCwgc3JjVVJMLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsg
fQotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwg
c3JjVVJMLCBzdGFydCwgZW5kKTsgfQotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0
ZXJCbG9iVVJMKHVybCk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyRmlsZUJsb2JV
UkwodXJsLCBXVEZNb3ZlKHJlZmVyZW5jZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYgcGFydHMsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJC
bG9iVVJMKHVybCwgV1RGTW92ZShwYXJ0cyksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWwgeyBt
X2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOyB9CisgICAgdm9pZCBy
ZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYgcmVmZXJlbmNlLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVy
QmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKHVybCwgc3JjVVJMLCBXVEZNb3ZlKHJlZmVyZW5j
ZSksIGNvbnRlbnRUeXBlKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBlbmQpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJs
LCBzcmNVUkwsIHN0YXJ0LCBlbmQpOyB9CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwp
OyB9CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYgdXJsKSBmaW5h
bCB7IHJldHVybiBtX2Jsb2JSZWdpc3RyeS5ibG9iU2l6ZSh1cmwpOyB9Ci0gICAgdm9pZCB3cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmls
ZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS53cml0
ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOyB9CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
JiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5
LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7IH0KIAogICAgIEJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeUltcGwoKSBm
aW5hbCB7IHJldHVybiAmbV9ibG9iUmVnaXN0cnk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKaW5kZXggYjc2OTBkZmJkZmYxOWFjOGU0NjVkZjBhYzlkOTM2MjA2MmIzNGVmZC4u
Y2NlMGM5NGIyYzkxODFiMGQ0MWNiMzlkMWMyMjZiZjY3OThjZjYyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC02MiwxNCArNjIsMTQgQEAgUGFzdGVib2FyZFN0cmF0ZWd5
KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiAKIGNs
YXNzIFdlYkJsb2JSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgewogcHJpdmF0
ZToKLSAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9i
VVJMKHVybCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9i
UGFydD4mJiBwYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JS
ZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUp
OyB9Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBVUkwmIHNyY1VSTCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJs
b2JVUkwodXJsLCBzcmNVUkwpOyB9Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5
RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3Jj
VVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxP
cHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250
ZW50VHlwZSk7IH0KLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JT
bGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7IH0KLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3Rl
ckZpbGVCbG9iVVJMKHVybCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYm
IHBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5
LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwp
IGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsgfQor
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJl
ZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3Ry
eS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92
ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsgfQorICAgIHZvaWQgdW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkudW5yZWdpc3RlckJs
b2JVUkwodXJsKTsgfQogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwm
IHVybCkgZmluYWwgeyByZXR1cm4gbV9ibG9iUmVnaXN0cnkuYmxvYlNpemUodXJsKTsgfQotICAg
IHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVn
aXN0cnkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsgfQorICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBtX2Js
b2JSZWdpc3RyeS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOyB9CiAKICAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0
cnlJbXBsKCkgZmluYWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379067</attachid>
            <date>2019-09-18 13:32:34 -0700</date>
            <delta_ts>2019-09-18 15:30:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201936-20190918133232.patch</filename>
            <type>text/plain</type>
            <size>119572</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg0ODBlZDYwYWZhODA2
ODQwOTMwZjliNDcyYTY1MzdiZjc5NzRjZi4uODEzM2Q0Mjk2NzIyY2VjMmUwMDBkMDM5MzBhMTNj
ZDM2YThkZTVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxOS0wOS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEJsb2JSZWdpc3RyeSBubyBs
b25nZXIgbmVlZHMgU2Vzc2lvbklEcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxOTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBuZWVkcyBTZXNzaW9uSURzLCBu
b3cgdGhhdCB3ZSBoYXZlIGEgc2luZ2xlIHNlc3Npb24gcGVyIFdlYlByb2Nlc3MuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01GaWxlU3lzdGVtOjpnZXRGaWxlKToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lz
dGVtRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1GaWxlRW50cnk6
OmZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
c29sdmVXaXRoVHlwZUFuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpibG9iKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjp+RmV0Y2hMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0TG9hZGluZ0Jsb2JVUkwpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlcjo6
Y3JlYXRlUmVjb3JkaW5nRGF0YUJsb2IpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2VSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpkaWRSZWNl
aXZlUmF3RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6c2VuZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlz
a0ZvckluZGV4ZWREQik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBkb20vRGF0YVRy
YW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6RGF0YVRyYW5zZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZmlsZXNGcm9tUGFzdGVib2FyZEFu
ZEl0ZW1MaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRl
Rm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3Rh
cnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3Ap
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BU
YXJnZXQpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKiBlZGl0aW5n
L1JlcGxhY2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIgY29uc3QpOgor
ICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjppbnB1dEV2ZW50
RGF0YVRyYW5zZmVyIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2Zl
ciBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFk
RmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1l
bnRGb3JGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6Cisg
ICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVzdG9yZUF0
dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJsb2JVUkxSZWdpc3RyeTo6dW5yZWdpc3RlclVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6On5CbG9iKToKKyAg
ICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCbG9iOjpzbGljZSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmlkbDoKKyAgICAg
ICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y3JlYXRlV2l0
aFJlbGF0aXZlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZTo6RmlsZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6fkZpbGVSZWFkZXJM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6c3RhcnQpOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5Lmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKToKKyAgICAgICAgKiBodG1sL0ZpbGVM
aXN0Q3JlYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmREaXJlY3RvcnlGaWxlcyk6
CisgICAgICAgIChXZWJDb3JlOjpGaWxlTGlzdENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KToKKyAgICAg
ICAgKiBodG1sL0ZpbGVMaXN0Q3JlYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3RD
cmVhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9z
aW5nSW1hZ2VXaXRoRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9CbG9iKToKKyAgICAgICAg
KiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljVVJM
TWFuYWdlcjo6cmV2b2tlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OnN0
b3ApOgorICAgICAgICAqIGh0bWwvVVJMUmVnaXN0cnkuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpleHRlbmRC
bG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y3JlYXRl
RmlsZSk6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OmNyZWF0ZU9wYXF1ZVdpdGhC
bG9iQm9keVJlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNo
OjpkaXNwYXRjaEZldGNoRXZlbnQpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToK
KwogMjAxOS0wOS0xOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdIEludHJvZHVjZSBVc2VkSG9yaXpvbnRhbFZhbHVlczo6Q29uc3RyYWludHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMTBhNzA1N2FlZmMwNGI2NjFhM2IzNThjMGQyM2VhNjg3YjNkYjE5Zi4uODZmZDllMWFl
ZmVjZTg1NjljYmE2ZTRlMTg5ZTRhNzVjNjE5NzlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxOS0wOS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IEJsb2JSZWdpc3RyeSBubyBsb25nZXIgbmVlZHMgU2Vzc2lvbklEcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxOTM2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBu
ZWVkcyBTZXNzaW9uSURzLCBub3cgdGhhdCB3ZSBoYXZlIGEgc2luZ2xlIHNlc3Npb24gcGVyIFdl
YlByb2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRm
b3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdp
c3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6QmxvYlJl
Z2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdp
c3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCk6CisgICAgICAg
IChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAg
IChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5Lmg6
CisKIDIwMTktMDktMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtBcHBsZSBQYXldIFRlbGwgd2Vic2l0ZXMgd2h5IGEgc2Vzc2lvbiB3YXMgY2FuY2VsbGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMTVkNThiYzBjMTdiN2VhZTE1Njg0NWRiYzBk
ZWI0YTMyMDliYTUyZi4uYWI5MjkzNzgwZmJjNjY2NDE0ZjgzNWRhMzRmODcyYzg2YzZlNGE5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA5LTE4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQmxvYlJlZ2lzdHJ5
IG5vIGxvbmdlciBuZWVkcyBTZXNzaW9uSURzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBCbG9iUmVnaXN0cnkgbm8gbG9uZ2VyIG5lZWRzIFNlc3Npb25J
RHMsIG5vdyB0aGF0IHdlIGhhdmUgYSBzaW5nbGUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwogMjAx
OS0wOS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENhY2hl
U3RvcmFnZVByb3ZpZGVyOjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgZG9lcyBub3Qg
bmVlZCB0byB0YWtlIGluIGEgU2Vzc2lvbklECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggNjg0NWQ4ZWQ5ZmU4NjJhOGU0MDc4ZTU5NDA1NGU5ZWQ1OWQwMzQ0ZS4uM2VlZDJiY2NlNzVh
ODY3NmQ0NWE4ODU2YzZkZjdiNGUyMDA3ZDMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA5LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgQmxvYlJlZ2lzdHJ5IG5vIGxvbmdlciBuZWVkcyBTZXNzaW9uSURz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5MzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCbG9iUmVn
aXN0cnkgbm8gbG9uZ2VyIG5lZWRzIFNlc3Npb25JRHMsIG5vdyB0aGF0IHdlIGhhdmUgYSBzaW5n
bGUgc2Vzc2lvbiBwZXIgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisKIDIwMTktMDktMTYgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtjdXJsXSBEb24n
dCBjb21waWxlIHVudXNlZCBDZXJ0aWZpY2F0ZUNGV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDlmNGExMGI3
MTFiZjM2M2YwYThhMjM0YzllMzI3MWY1MmVlNzZmYjMuLjE2MWFlMDM0MTQ5YjVmNGIwYTMyNDc2
OWYzMTc1YTAwNzQxMzY5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
dHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTMzMywxNyArMzMzLDE3IEBAIHZvaWQgRE9N
RmlsZVN5c3RlbTo6Z2V0RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmls
ZVN5c3RlbURpcmVjdG9yCiAgICAgfSk7CiB9CiAKLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0Rmls
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRmlsZUVudHJ5JiBm
aWxlRW50cnksIEdldEZpbGVDYWxsYmFjayYmIGNvbXBsZXRpb25DYWxsYmFjaykKK3ZvaWQgRE9N
RmlsZVN5c3RlbTo6Z2V0RmlsZShGaWxlU3lzdGVtRmlsZUVudHJ5JiBmaWxlRW50cnksIEdldEZp
bGVDYWxsYmFjayYmIGNvbXBsZXRpb25DYWxsYmFjaykKIHsKICAgICBhdXRvIHZpcnR1YWxQYXRo
ID0gZmlsZUVudHJ5LnZpcnR1YWxQYXRoKCk7CiAgICAgYXV0byBmdWxsUGF0aCA9IGV2YWx1YXRl
UGF0aCh2aXJ0dWFsUGF0aCk7Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtjb250ZXh0ID0g
bWFrZVJlZihjb250ZXh0KSwgZnVsbFBhdGggPSBjcm9zc1RocmVhZENvcHkoZnVsbFBhdGgpLCB2
aXJ0dWFsUGF0aCA9IGNyb3NzVGhyZWFkQ29weSh2aXJ0dWFsUGF0aCksIGNvbXBsZXRpb25DYWxs
YmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBtX3dv
cmtRdWV1ZS0+ZGlzcGF0Y2goW2Z1bGxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KGZ1bGxQYXRoKSwg
dmlydHVhbFBhdGggPSBjcm9zc1RocmVhZENvcHkodmlydHVhbFBhdGgpLCBjb21wbGV0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAg
IGF1dG8gdmFsaWRhdGVkVmlydHVhbFBhdGggPSB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShm
dWxsUGF0aCwgV1RGTW92ZSh2aXJ0dWFsUGF0aCksIEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7
Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpLCBm
dWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZhbGlkYXRlZFZpcnR1YWxQYXRo
ID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQYXRoKSwgY29tcGxldGlvbkNhbGxi
YWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtmdWxsUGF0aCA9IGNyb3NzVGhyZWFkQ29weShmdWxsUGF0aCksIHZh
bGlkYXRlZFZpcnR1YWxQYXRoID0gY3Jvc3NUaHJlYWRDb3B5KHZhbGlkYXRlZFZpcnR1YWxQYXRo
KSwgY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spXSgpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKHZhbGlkYXRlZFZpcnR1YWxQYXRoLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayh2YWxpZGF0ZWRWaXJ0dWFs
UGF0aC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25DYWxsYmFjayhGaWxlOjpjcmVhdGUoY29udGV4dC0+c2Vzc2lvbklEKCks
IGZ1bGxQYXRoKSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKEZpbGU6OmNy
ZWF0ZShmdWxsUGF0aCkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDM4MzZiODc3
YTY3ZDZiZDRjMzk4Mjg5NTdkNWY1NDZhNDhmYjYzNjYuLjc0YTNjZTZjM2VjNWRkZjA1ZjAzNDI2
NjFmNzYwNzNjNWU1NTljMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRFbnRyeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5JiwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCwgY29uc3QgRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5OjpGbGFncyYsIEdldEVudHJ5Q2FsbGJhY2smJik7CiAKICAgICB1c2luZyBHZXRGaWxl
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmPEZpbGU+PiYmKT47
Ci0gICAgdm9pZCBnZXRGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGaWxlU3lzdGVtRmls
ZUVudHJ5JiwgR2V0RmlsZUNhbGxiYWNrJiYpOworICAgIHZvaWQgZ2V0RmlsZShGaWxlU3lzdGVt
RmlsZUVudHJ5JiwgR2V0RmlsZUNhbGxiYWNrJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IERPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnkuY3BwCmluZGV4IDg4Mjkw
NDNjODRjZTkxNDU4Njk4YTZhZjI2MGJmMjBiZDIzZmVmNWYuLmU4YzllZjM4ZTkzMmU0ZTdhNTZj
ZDlkZjQ0OGE2MmM3NWM5NzFiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5jcHAKQEAgLTM4LDkgKzM4LDkg
QEAgRmlsZVN5c3RlbUZpbGVFbnRyeTo6RmlsZVN5c3RlbUZpbGVFbnRyeShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBET01GaWwKIHsKIH0KIAotdm9pZCBGaWxlU3lzdGVtRmlsZUVu
dHJ5OjpmaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxGaWxlQ2FsbGJh
Y2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxi
YWNrKQordm9pZCBGaWxlU3lzdGVtRmlsZUVudHJ5OjpmaWxlKFJlZjxGaWxlQ2FsbGJhY2s+JiYg
c3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQog
ewotICAgIGZpbGVzeXN0ZW0oKS5nZXRGaWxlKGNvbnRleHQsICp0aGlzLCBbc3VjY2Vzc0NhbGxi
YWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJvckNhbGxiYWNrID0gV1RGTW92ZShl
cnJvckNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkgeworICAgIGZpbGVzeXN0ZW0oKS5nZXRGaWxl
KCp0aGlzLCBbc3VjY2Vzc0NhbGxiYWNrID0gV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBlcnJv
ckNhbGxiYWNrID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkgewogICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3JD
YWxsYmFjaykKICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChET01F
eGNlcHRpb246OmNyZWF0ZShyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1GaWxlRW50cnku
aAppbmRleCBhYjk2ZTAyMTQwYmMzY2Y4OTU2YzZkZWJhYTc0NGMxOGRjMmMyMzE1Li5lYTc5ZTNi
Mzk0YzJhMTNkM2ZiZGQ3YjZhYTRiYTFhMDNhMDliMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUZpbGVFbnRyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVudHJ5LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlU3lz
dGVtRmlsZUVudHJ5KGNvbnRleHQsIGZpbGVzeXN0ZW0sIHZpcnR1YWxQYXRoKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBmaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8RmlsZUNhbGxiYWNr
PiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51bGxwdHIpOworICAgIHZvaWQgZmlsZShS
ZWY8RmlsZUNhbGxiYWNrPiYmLCBSZWZQdHI8RXJyb3JDYWxsYmFjaz4mJiA9IG51bGxwdHIpOwog
CiBwcml2YXRlOgogICAgIGJvb2wgaXNGaWxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0
ZW1GaWxlRW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVT
eXN0ZW1GaWxlRW50cnkuaWRsCmluZGV4IGRhZDk3YjljNDA3MGFjY2FmN2ViM2YzMWQ3N2U1Yzkz
OTU1NDBiYWMuLjJkNzM1MmI1MTJkMGJiN2VhY2VjNmEwNTkyZThmZWVhOTE4MzljMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRmlsZUVu
dHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bUZpbGVFbnRyeS5pZGwKQEAgLTI2LDUgKzI2LDUgQEAKIFsKICAgICBFbmFibGVkQXRSdW50aW1l
PURpcmVjdG9yeVVwbG9hZCwKIF0gaW50ZXJmYWNlIEZpbGVTeXN0ZW1GaWxlRW50cnkgOiBGaWxl
U3lzdGVtRW50cnkgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lk
IGZpbGUoRmlsZUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgRXJyb3JDYWxsYmFj
az8gZXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBmaWxlKEZpbGVDYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIG9wdGlvbmFsIEVycm9yQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBhZDI2YjM0Y2Y2MTVh
MTE1NDFhZjgxMDVjMmI4OWRhMzVjYjNhNzA0Li4yOTE4NTRhZTE3YzdmZDNhNGY1Y2EyN2QwODE1
ZDIzODE2NjMwNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCkBAIC03NSw3ICs3NSw3IEBAIEV4Y2VwdGlvbk9yPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpl
eHRyYWN0KEluaXQmJiB2YWx1ZSwgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICB9KTsKIH0KIAot
T3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIEZvcm1EYXRhJiBmb3JtRGF0YSkKK09wdGlvbmFsPEZldGNoQm9keT4gRmV0
Y2hCb2R5Ojpmcm9tRm9ybURhdGEoRm9ybURhdGEmIGZvcm1EYXRhKQogewogICAgIEFTU0VSVCgh
Zm9ybURhdGEuaXNFbXB0eSgpKTsKIApAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxGZXRjaEJv
ZHk+IEZldGNoQm9keTo6ZnJvbUZvcm1EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRm9y
bURhdGEmCiAgICAgYXV0byB1cmwgPSBmb3JtRGF0YS5hc0Jsb2JVUkwoKTsKICAgICBpZiAoIXVy
bC5pc051bGwoKSkgewogICAgICAgICAvLyBGSVhNRTogUHJvcGVybHkgc2V0IG1pbWUgdHlwZSBh
bmQgc2l6ZSBvZiB0aGUgYmxvYi4KLSAgICAgICAgUmVmPGNvbnN0IEJsb2I+IGJsb2IgPSBCbG9i
OjpkZXNlcmlhbGl6ZShzZXNzaW9uSUQsIHVybCwgeyB9LCB7IH0sIHsgfSk7CisgICAgICAgIFJl
Zjxjb25zdCBCbG9iPiBibG9iID0gQmxvYjo6ZGVzZXJpYWxpemUodXJsLCB7IH0sIHsgfSwgeyB9
KTsKICAgICAgICAgcmV0dXJuIEZldGNoQm9keSB7IFdURk1vdmUoYmxvYikgfTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IGIyN2UwYTUxODdh
ZThiZjg0YmQ3OTE3YzdlNzEwNThlMTFiOTg1NDcuLmMzZjk2ZmY0YWZmZjIwZDExMzY0NDMzYTFm
MmFjZjZhZDFkOWZiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPEZldGNo
Qm9keT4gZXh0cmFjdChJbml0JiYsIFN0cmluZyYpOwogICAgIEZldGNoQm9keSgpID0gZGVmYXVs
dDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGZyb21G
b3JtRGF0YShQQUw6OlNlc3Npb25JRCwgRm9ybURhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgT3B0aW9uYWw8RmV0Y2hCb2R5PiBmcm9tRm9ybURhdGEoRm9ybURhdGEmKTsKIAogICAg
IHZvaWQgbG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lkIGxvYWRpbmdT
dWNjZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5jcHAKaW5kZXggZGIyNmVlZTM1ZGY4YzNjZDc4MmUzN2M3ZmFkOGM0MjA2NWEz
MWRjOC4uMjJkNDM3MmIzMWVmZTcyNGJlMmUwMmM4N2FkZDY3NzM1OTNiYzA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAg
LTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUg
UmVmPEJsb2I+IGJsb2JGcm9tRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShjb25zdCB1bnNpZ25l
ZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlKGxlbmd0aCk7CiAgICAgbWVtY3B5KHZhbHVl
LmRhdGEoKSwgZGF0YSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNlc3Npb25J
RCwgV1RGTW92ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gQmxvYjo6Y3JlYXRl
KFdURk1vdmUodmFsdWUpLCBjb250ZW50VHlwZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
aG91bGRQcmVwZW5kQk9NKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKQEAgLTY0LDggKzY0LDggQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKICAgICAgICAgZnVs
ZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoV1RGTW92ZShwcm9taXNlKSwgZGF0YSwgbGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJs
b2I6Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRl
ZDxJRExJbnRlcmZhY2U8QmxvYj4+KFsmZGF0YSwgJmxlbmd0aCwgJmNvbnRlbnRUeXBlXShhdXRv
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQuc2Vz
c2lvbklEKCksIGRhdGEsIGxlbmd0aCwgY29udGVudFR5cGUpOworICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+Pihb
JmRhdGEsICZsZW5ndGgsICZjb250ZW50VHlwZV0oYXV0byYpIHsKKyAgICAgICAgICAgIHJldHVy
biBibG9iRnJvbURhdGEoZGF0YSwgbGVuZ3RoLCBjb250ZW50VHlwZSk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoK
QEAgLTEzMiw4ICsxMzIsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qCiAgICAgICAgIGZ1bGZp
bGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFdURk1vdmUocHJvbWlzZSksIHRha2VBc0FycmF5QnVm
ZmVyKCkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBUeXBlOjpCbG9iOgotICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50
ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYgY29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJu
IHRha2VBc0Jsb2IoY29udGV4dC5zZXNzaW9uSUQoKSk7CisgICAgICAgIHByb21pc2UtPnJlc29s
dmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8QmxvYj4+KFt0aGlz
XShhdXRvJikgeworICAgICAgICAgICAgcmV0dXJuIHRha2VBc0Jsb2IoKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFR5cGU6OkpTT046CkBAIC0xODEsMTMgKzE4MSwx
MyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Fy
cmF5QnVmZmVyKCkKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLVJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCitSZWY8
QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoKQogewogICAgIGlmICghbV9idWZm
ZXIpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2Vzc2lvbklELCBWZWN0b3I8dWludDhf
dD4oKSwgbV9jb250ZW50VHlwZSk7CisgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+KCksIG1fY29udGVudFR5cGUpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0
cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAg
ICByZXR1cm4gYmxvYkZyb21EYXRhKHNlc3Npb25JRCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCksIG1f
Y29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CmluZGV4IDQwN2FjYjUwMTQ4NDgwMjdkMzhjMmI2MzExYzI2NDhmMWFjZTdjZjMuLmYyM2MxYTlm
OTU5N2U1ZWY4YjkwMTJjZGIyNzY2ZmU2NmRjYzQyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0QXNMb2FkaW5nKCkgeyBtX2lzTG9hZGluZyA9IHRydWU7IH0KIAog
cHJpdmF0ZToKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYihQQUw6OlNlc3Npb25JRCk7CisgICAg
UmVmPEJsb2I+IHRha2VBc0Jsb2IoKTsKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBt
X2NvbnRlbnRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcAppbmRleCA1MzlkMThhZjAwYWE5NzU4ZGZjZWVkODkyOWVlZDQ2NTY1OGI5N2Qx
Li4zYjllMWJhYTAwNjRlYWE4MTdiM2ExM2RiMzAzMjdlZDRkMzE2ZTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAtMTI0LDggKzEy
NCw4IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgIH0KIAogICAgIGlmIChpc0JvZHlOdWxsT3JPcGFxdWUoKSkgewotICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJm
YWNlPEJsb2I+PihbdGhpc10oYXV0byYgY29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShjb250ZXh0LnNlc3Npb25JRCgpLCBWZWN0b3I8dWludDhfdD4geyB9LCBCbG9i
Ojpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX2Nv
bnRlbnRUeXBlKSkpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbdGhpc10oYXV0byYpIHsKKyAgICAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IHsgfSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9jb250ZW50VHlw
ZSkpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGQ4ZGI5MGNjYjE0NDk0NjBl
Mjg3MzgxZmRmNzRiM2EyYjIwMjlkYzkuLmMwZGJmNWZlNTc4ZjFmNTliNmY0YzFiMDdhYmMwMWU3
ZDI1MWQ3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEZldGNoTG9hZGVyOjp+
RmV0Y2hMb2FkZXIoKQogewogICAgIGlmICghbV91cmxGb3JSZWFkaW5nLmlzRW1wdHkoKSkKLSAg
ICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoKm1fc2Vzc2lv
bklELCBtX3VybEZvclJlYWRpbmcpOworICAgICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyQmxvYlVSTChtX3VybEZvclJlYWRpbmcpOwogfQogCiB2b2lkIEZldGNoTG9hZGVy
OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBCbG9iJiBibG9i
KQpAQCAtNjQsOCArNjQsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydExvYWRpbmdCbG9iVVJM
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9uSUQgPSBjb250ZXh0LnNlc3Npb25JRCgpOwotICAg
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9uSUQsIGNv
bnRleHQuc2VjdXJpdHlPcmlnaW4oKSwgbV91cmxGb3JSZWFkaW5nLCBibG9iVVJMKTsKKyAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZWN1cml0eU9y
aWdpbigpLCBtX3VybEZvclJlYWRpbmcsIGJsb2JVUkwpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcklkZW50
aWZpZXIoY29udGV4dC5yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IGI2YzY1MDhjYTM3NjNlMzEzM2Q0
YTNkYmQ0MTE5OGFjYTU4NGU5NjIuLjQwMTFiMzczOGM5NzliYjk3OGFkZmRjZmNiYTg1NGNhZThj
NWRmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAg
LTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICBGZXRjaEJvZHlDb25zdW1lciogbV9jb25zdW1l
cjsKICAgICBib29sIG1faXNTdGFydGVkIHsgZmFsc2UgfTsKICAgICBVUkwgbV91cmxGb3JSZWFk
aW5nOwotICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA2MzQ5M2IzNzU2YzU0OGQ2ZGUzYjg5ZmZm
MDZkNWI3NzE0M2JhOTIwLi40YjhmZTczZDEzMWRlNTIzMjUxYWE0NWQ0NjQ4NDBkYjRhMWIzNDNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC0xMjgyLDcgKzEyODIsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpwdXRP
ckFkZE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbgog
ICAgIC8vIHdvcmtlcnMgY3VycmVudGx5IHdyaXRlIGJsb2JzIHRvIGRpc2sgc3luY2hyb25vdXNs
eS4KICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1Nzk1OCAtIE1ha2UgdGhpcyBhc3luY2hyb25vdXMgYWZ0ZXIgcmVmYWN0b3JpbmcgYWxsb3dz
IGl0LgogICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYXV0byBpZGJWYWx1ZSA9
IHZhbHVlLT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpKTsKKyAgICAgICAgYXV0byBpZGJWYWx1ZSA9
IHZhbHVlLT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgpOwogICAg
ICAgICBpZiAoaWRiVmFsdWUuZGF0YSgpLmRhdGEoKSkKICAgICAgICAgICAgIG1fZGF0YWJhc2Ut
PmNvbm5lY3Rpb25Qcm94eSgpLnB1dE9yQWRkKG9wZXJhdGlvbiwga2V5LmdldCgpLCBpZGJWYWx1
ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgICAgIGVsc2UgewpAQCAtMTMwMSw3ICsxMzAxLDcgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICAvLyBzdG9wIGZ1dHVyZSByZXF1ZXN0cyBmcm9t
IGdvaW5nIHRvIHRoZSBzZXJ2ZXIgYWhlYWQgb2YgaXQuCiAgICAgb3BlcmF0aW9uLnNldE5leHRS
ZXF1ZXN0Q2FuR29Ub1NlcnZlcihmYWxzZSk7CiAKLSAgICB2YWx1ZS0+d3JpdGVCbG9ic1RvRGlz
a0ZvckluZGV4ZWREQihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBwcm90ZWN0ZWRPcGVyYXRpb24gPSBS
ZWY8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4ob3BlcmF0aW9uKSwga2V5RGF0YSA9
IElEQktleURhdGEoa2V5LmdldCgpKS5pc29sYXRlZENvcHkoKSwgb3ZlcndyaXRlTW9kZV0oSURC
VmFsdWUmJiBpZGJWYWx1ZSkgbXV0YWJsZSB7CisgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tG
b3JJbmRleGVkREIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJvdGVj
dGVkT3BlcmF0aW9uID0gUmVmPElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24+KG9wZXJh
dGlvbiksIGtleURhdGEgPSBJREJLZXlEYXRhKGtleS5nZXQoKSkuaXNvbGF0ZWRDb3B5KCksIG92
ZXJ3cml0ZU1vZGVdKElEQlZhbHVlJiYgaWRiVmFsdWUpIG11dGFibGUgewogICAgICAgICBBU1NF
UlQoJm9yaWdpblRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHAKaW5kZXggMjQ0NzgyNWQ0OGJjYmM0MmViZTIyNTM4MzBlN2MwOGI4MGNiZGM2
NC4uZDVhZmQ0NDU5NzFhODQ1MGFiMzg1YTUwMDIwZWI2ZTIxOTYxMjkyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cApAQCAtMTU3LDggKzE1Nyw4IEBAIFJlZjxCbG9iPiBNZWRpYVJlY29yZGVyOjpjcmVhdGVSZWNv
cmRpbmdEYXRhQmxvYigpCiB7CiAgICAgYXV0byBkYXRhID0gbV9wcml2YXRlLT5mZXRjaERhdGEo
KTsKICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCAqZGF0YSwgbV9wcml2YXRlLT5t
aW1lVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZSgpOworICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoKmRhdGEsIG1fcHJpdmF0ZS0+bWltZVR5cGUoKSk7CiB9CiAKIHZvaWQgTWVk
aWFSZWNvcmRlcjo6ZGlkQWRkT3JSZW1vdmVUcmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAppbmRl
eCBlYmQ4MTUyMTUxZWMxZTdkM2UzZTY2YzZjY2E0MzMzNTZhNzBkZjJlLi4yODI4ZDM2YTI4YjI2
M2FhMDZiZDk5OWJmMTFjZDkwZGUyM2I1OGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgVVJMJiB1cmwsIFUKICAgICBtX21lZGlhU291cmNlcy5z
ZXQodXJsLnN0cmluZygpLCAmc291cmNlKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmIHVybCkK
K3ZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5yZWdpc3RlclVSTChjb25zdCBVUkwmIHVybCkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChhdXRvIHNvdXJjZSA9IG1f
bWVkaWFTb3VyY2VzLnRha2UodXJsLnN0cmluZygpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKaW5kZXggMDJk
NmVmYmNiYmRjZDgzMWIyOGFiN2U4YmQ2YmI1NGQ0NzU3M2M2Yi4uYjdkZmU0NGIyNWZjNDc3MjE3
NGFhNjQ2ZTRiNThjMGEzMmVlMjI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogCiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRo
ZSBzcGVjaWZpZWQgbWVkaWEgc291cmNlLgogICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlJilmaW5hbDsKLSAgICB2
b2lkIHVucmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFVSTCYpIGZp
bmFsOworICAgIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBmaW5hbDsKICAgICBVUkxS
ZWdpc3RyYWJsZSogbG9va3VwKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsLmNwcAppbmRleCBhNTUxYTgzMWM5OWNmNTllOWJkZGE5YWI0YWM4MTliNWVlODllYWMw
Li42YzcwMTI3M2Y1M2UyNzk5MGMwYTMwODk5OTRiY2M0NGRkODc4YjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApA
QCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogCiAgICAgc3dpdGNoIChtX2Jp
bmFyeVR5cGUpIHsKICAgICBjYXNlIEJpbmFyeVR5cGU6OkJsb2I6Ci0gICAgICAgIHNjaGVkdWxl
RGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
ZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsKKyAgICAgICAgc2NoZWR1bGVEaXNw
YXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJpbmcoKSksIHsgfSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVh
dGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOTkyOTYzZWI1OWMzYjA3NWJmZTU3MWJkNjNhOTQw
YzcxMGY0ZWViMC4uOTEwODgwMDliNTljMTBhYjNiOTZlOTE5Y2EzNmI0NDgxYWUzZjYxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAg
LTU4NCw3ICs1ODQsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVj
dG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKICAgICBzd2l0Y2ggKG1fYmluYXJ5VHlwZSkgewog
ICAgIGNhc2UgQmluYXJ5VHlwZTo6QmxvYjoKICAgICAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVj
ZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJh
Y2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lv
bklEKCksIFdURk1vdmUoYmluYXJ5RGF0YSksIGVtcHR5U3RyaW5nKCkpLCBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG1fdXJsKS0+dG9TdHJpbmcoKSkpOworICAgICAgICBkaXNwYXRjaEV2ZW50KE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGJpbmFyeURhdGEpLCBlbXB0
eVN0cmluZygpKSwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCktPnRvU3RyaW5nKCkpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCaW5hcnlUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAg
ICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRl
KGJpbmFyeURhdGEuZGF0YSgpLCBiaW5hcnlEYXRhLnNpemUoKSksIFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCBkYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYwZTZiNjk1YmI2
MzE0Li45ODJlNTczMWVmMTEyMjM1YmU0MjgxMmI4YzdmMDczMTI2YmI2ODhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ2NSw3ICs0NjUsNyBAQCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNEb2N1bWVudCgpKTsKICAgICAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAgICAgIHBl
ZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY29udGV4dC5zZXNzaW9uSUQoKSwgdXJsLCB0eXBl
LCBzaXplLCB7IH0pKTsKKyAgICAgICAgcGVlci0+c2VuZChCbG9iOjpkZXNlcmlhbGl6ZSh1cmws
IHR5cGUsIHNpemUsIHsgfSkpOwogICAgIH0pOwogCiAgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4ZGQ5ZmJmMDM2NWQ0MDgxNDAwZjcwODMzY2Q3MDY0
MTBiNzgxNDYwLi43OGVmMWZlY2JhMTQzYTBhZjJmNzViZWZiMzhiOTY0NDlmMGQ0NTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTIwOTEsNyArMjA5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaWxlUGF0
aCA9IHBhdGgtPnN0cmluZygpOwogCiAgICAgICAgIGlmIChtX2lzRE9NR2xvYmFsT2JqZWN0KQot
ICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KG1fZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9u
SUQoKSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygp
LCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQpOworICAgICAgICAgICAgZmls
ZSA9IEZpbGU6OmRlc2VyaWFsaXplKGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkp
LCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yODU3LDcgKzI4NTcsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICBpZiAo
IW1faXNET01HbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwot
ICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNlc3Npb25JRCgpLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmco
KSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoVVJMKFVSTCgp
LCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJs
b2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFN0
cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNhY2hlZFN0cmluZzsKQEAg
LTM1NjksMTIgKzM1NjksMTIgQEAgVmVjdG9yPFN0cmluZz4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpibG9iVVJMc0lzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElEQlZhbHVl
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Ondy
aXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJREJWYWx1
ZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIEFTU0VSVChoYXNCbG9iVVJMcygpKTsKIAotICAgIGJsb2JSZWdpc3RyeSgpLndyaXRl
QmxvYnNUb1RlbXBvcmFyeUZpbGVzKHNlc3Npb25JRCwgbV9ibG9iVVJMcywgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKGF1dG8mJiBibG9iRmlsZVBhdGhzKSBtdXRhYmxlIHsKKyAgICBi
bG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxzLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYmIGJsb2JGaWxlUGF0aHMpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgICAgIGlmIChibG9iRmls
ZVBhdGhzLmlzRW1wdHkoKSkgewpAQCAtMzU5MCw3ICszNTkwLDcgQEAgdm9pZCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbkkKICAgICB9KTsKIH0KIAotSURCVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3
cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCitJREJWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rp
c2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKIApAQCAtMzU5OSw4ICszNTk5LDggQEAgSURCVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseShQQUw6OlMKICAg
ICBDb25kaXRpb24gY29uZGl0aW9uOwogICAgIGxvY2subG9jaygpOwogCi0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCBzZXNzaW9uSUQsIGNvbmRpdGlvblB0ciA9ICZjb25kaXRp
b24sIHZhbHVlUHRyID0gJnZhbHVlXSB7Ci0gICAgICAgIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRl
eGVkREIoc2Vzc2lvbklELCBbY29uZGl0aW9uUHRyLCB2YWx1ZVB0cl0oSURCVmFsdWUmJiByZXN1
bHQpIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIGNvbmRpdGlvblB0ciA9
ICZjb25kaXRpb24sIHZhbHVlUHRyID0gJnZhbHVlXSB7CisgICAgICAgIHdyaXRlQmxvYnNUb0Rp
c2tGb3JJbmRleGVkREIoW2NvbmRpdGlvblB0ciwgdmFsdWVQdHJdKElEQlZhbHVlJiYgcmVzdWx0
KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICAgICAgdmFs
dWVQdHItPnNldEFzSXNvbGF0ZWRDb3B5KHJlc3VsdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNGY0YjBjZjNiN2Vl
Y2RkZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEyYTA3Yi4uZGE4NGM3ZTg0MDgwNmIzNDJjODE0NDBmNTg4
NjVkZjYxZTU3MzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHNJc29sYXRl
ZENvcHkoKSBjb25zdDsKLSAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSURCVmFsdWUmJik+JiYpOwotICAg
IElEQlZhbHVlIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KFBBTDo6
U2Vzc2lvbklEKTsKKyAgICB2b2lkIHdyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJREJWYWx1ZSYmKT4mJik7CisgICAgSURCVmFsdWUgd3JpdGVCbG9i
c1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKTsKICNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIAogICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBj
cmVhdGVGcm9tV2lyZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCmluZGV4IGQzYWY3MGZiOGJhMzM2YmZhNjE4YmY5YzEyNTZiMTA3ZDlk
MjVhYTUuLjVjNzFiMzY4ZTYwMjhiMDE3NGYzYTdmZGY0Mzg4NjRkODg4Zjg4ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC02OCw5ICs2OCw4IEBAIHByaXZhdGU6CiAKICNl
bmRpZgogCi1EYXRhVHJhbnNmZXI6OkRhdGFUcmFuc2Zlcihjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQsIFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gcGFzdGVib2Fy
ZCwgVHlwZSB0eXBlKQotICAgIDogbV9zZXNzaW9uSUQoZG9jdW1lbnQuc2Vzc2lvbklEKCkpCi0g
ICAgLCBtX3N0b3JlTW9kZShtb2RlKQorRGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIoU3RvcmVN
b2RlIG1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkLCBUeXBlIHR5
cGUpCisgICAgOiBtX3N0b3JlTW9kZShtb2RlKQogICAgICwgbV9wYXN0ZWJvYXJkKFdURk1vdmUo
cGFzdGVib2FyZCkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAsIG1fdHlwZSh0eXBl
KQpAQCAtODYsNyArODUsNyBAQCBEYXRhVHJhbnNmZXI6OkRhdGFUcmFuc2Zlcihjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIFN0b3JlTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZQogCiBSZWY8RGF0YVRy
YW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQsIFN0b3JlTW9kZSBzdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiYmIHBhc3RlYm9hcmQpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigq
bmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgc3RvcmVNb2RlLCBXVEZNb3ZlKHBhc3RlYm9hcmQp
KSk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihz
dG9yZU1vZGUsIFdURk1vdmUocGFzdGVib2FyZCkpKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3Jp
Z2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7
CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTM0OSw3ICszNDgsNyBAQCBWZWN0b3I8
UmVmPEZpbGU+PiBEYXRhVHJhbnNmZXI6OmZpbGVzRnJvbVBhc3RlYm9hcmRBbmRJdGVtTGlzdCgp
IGNvbnN0CiAgICAgYm9vbCBhZGRlZEZpbGVzRnJvbVBhc3RlYm9hcmQgPSBmYWxzZTsKICAgICBW
ZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKICAgICBpZiAoKCFmb3JEcmFnKCkgfHwgZm9yRmlsZURy
YWcoKSkgJiYgbV9wYXN0ZWJvYXJkLT5maWxlQ29udGVudFN0YXRlKCkgIT0gUGFzdGVib2FyZDo6
RmlsZUNvbnRlbnRTdGF0ZTo6Tm9GaWxlT3JJbWFnZURhdGEpIHsKLSAgICAgICAgV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyIHJlYWRlciB7IG1fc2Vzc2lvbklEIH07CisgICAgICAgIFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlciByZWFkZXI7CiAgICAgICAgIG1fcGFzdGVib2FyZC0+cmVh
ZChyZWFkZXIpOwogICAgICAgICBmaWxlcyA9IFdURk1vdmUocmVhZGVyLmZpbGVzKTsKICAgICAg
ICAgYWRkZWRGaWxlc0Zyb21QYXN0ZWJvYXJkID0gIWZpbGVzLmlzRW1wdHkoKTsKQEAgLTQxNCwx
MiArNDEzLDEyIEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogICAgIHJldHVybiAhdHlwZS5pc051bGwoKSAmJiB0eXBlcygpLmNvbnRhaW5z
KHR5cGUpOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklu
cHV0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBsYWluVGV4
dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCkKK1JlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3Ry
aW5nJiBodG1sVGV4dCkKIHsKICAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRp
Y1Bhc3RlYm9hcmQ+KCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4i
X3MsIHBsYWluVGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJf
cywgaHRtbFRleHQpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1
bWVudCwgU3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5w
dXRFdmVudCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2ZlcihTdG9yZU1v
ZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CiB9
CiAKIHZvaWQgRGF0YVRyYW5zZmVyOjpjb21taXRUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgbmF0
aXZlUGFzdGVib2FyZCkKQEAgLTQ2NCwyMSArNDYzLDIxIEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpz
ZXREcmFnSW1hZ2UoRWxlbWVudCosIGludCwgaW50KQogCiAjZWxzZQogCi1SZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6
UmVhZFdyaXRlLCBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpLCBUeXBlOjpEcmFn
QW5kRHJvcERhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoU3Rv
cmVNb2RlOjpSZWFkV3JpdGUsIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIFR5
cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogfQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsK
LSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3Vt
ZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigp
LCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0
UmVmKCpuZXcgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0
YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogICAgIGRhdGFUcmFu
c2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCiBSZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9u
IHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewotICAgIGF1dG8gZGF0YVRy
YW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIERhdGFUcmFuc2Zl
cjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxl
cyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAg
ICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKERhdGFUcmFu
c2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdG
aWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsK
ICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRpb24pOwog
ICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRl
bnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwpAQCAtNDg2
LDcgKzQ4NSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJv
cChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pCiAKIFJlZjxEYXRhVHJhbnNmZXI+
IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJh
Z09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKLSAgICBh
dXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBE
YXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBk
cmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9w
RGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNm
ZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJk
KSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5k
RHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VP
cGVyYXRpb24pOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1l
bnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5z
ZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmluZGV4IDZhZWNhYzhmZjQ5NDI1NDU1Y2Rm
N2JhMzdiYmQxN2U2ODJmN2RkMWUuLmM5NzI2YTZmY2JiOGMyMTIwOTdmZTgyOTkxMTVmMjczOWIx
OGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVi
bGljOgogICAgIGVudW0gY2xhc3MgU3RvcmVNb2RlIHsgSW52YWxpZCwgUmVhZFdyaXRlLCBSZWFk
b25seSwgUHJvdGVjdGVkIH07CiAKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRl
Rm9yQ29weUFuZFBhc3RlKGNvbnN0IERvY3VtZW50JiwgU3RvcmVNb2RlLCBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4mJik7Ci0gICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZv
cklucHV0RXZlbnQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29u
c3QgU3RyaW5nJiBodG1sVGV4dCk7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZUZvcklucHV0RXZlbnQoY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRt
bFRleHQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkRhdGFUcmFuc2ZlcigpOwogCkBAIC04Nyw3
ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbW1pdFRvUGFzdGVib2FyZChQYXN0ZWJvYXJk
Jik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5z
ZmVyPiBjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4g
Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgUmVm
PERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwog
ICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQo
Y29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJh
dGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgQ29weUFuZFBhc3RlLCBEcmFnQW5kRHJv
cERhdGEsIERyYWdBbmREcm9wRmlsZXMsIElucHV0RXZlbnQgfTsKLSAgICBEYXRhVHJhbnNmZXIo
Y29uc3QgRG9jdW1lbnQmLCBTdG9yZU1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiwg
VHlwZSA9IFR5cGU6OkNvcHlBbmRQYXN0ZSk7CisgICAgRGF0YVRyYW5zZmVyKFN0b3JlTW9kZSwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+LCBUeXBlID0gVHlwZTo6Q29weUFuZFBhc3RlKTsK
IAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBmb3JEcmFnKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFR5cGU6OkRyYWdBbmREcm9wRGF0YSB8fCBtX3R5cGUgPT0gVHlwZTo6
RHJhZ0FuZERyb3BGaWxlczsgfQpAQCAtMTMwLDcgKzEzMCw2IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXMoQWRkRmlsZXNUeXBlKSBjb25zdDsKICAgICBWZWN0b3I8UmVmPEZp
bGU+PiBmaWxlc0Zyb21QYXN0ZWJvYXJkQW5kSXRlbUxpc3QoKSBjb25zdDsKIAotICAgIFBBTDo6
U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFN0cmluZyBtX29yaWdpbklkZW50aWZpZXI7CiAg
ICAgU3RvcmVNb2RlIG1fc3RvcmVNb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiBtX3Bhc3RlYm9hcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VSYW5nZVdpdGhUZXh0Q29tbWFuZC5jcHAKaW5kZXggNTJiNjlhNTcyYTY1NjkwODdjOTNhMmEx
OGNkMzI1MDIyOWY2YWYzOS4uMDQxZjlkMTE3ZDZhMDFlYjJjNTg1YThiMjE0ZDMzZGNlOGQ4ODAw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlUmFuZ2VXaXRoVGV4
dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVJhbmdlV2l0
aFRleHRDb21tYW5kLmNwcApAQCAtODIsNyArODIsNyBAQCBTdHJpbmcgUmVwbGFjZVJhbmdlV2l0
aFRleHRDb21tYW5kOjppbnB1dEV2ZW50RGF0YSgpIGNvbnN0CiBSZWZQdHI8RGF0YVRyYW5zZmVy
PiBSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQ6OmlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBj
b25zdAogewogICAgIGlmICghaXNFZGl0aW5nVGV4dEFyZWFPclRleHRJbnB1dCgpKQotICAgICAg
ICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGRvY3VtZW50KCksIG1f
dGV4dCwgc2VyaWFsaXplRnJhZ21lbnQoKm1fdGV4dEZyYWdtZW50LCBTZXJpYWxpemVkTm9kZXM6
OlN1YnRyZWVJbmNsdWRpbmdOb2RlKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvcklucHV0RXZlbnQobV90ZXh0LCBzZXJpYWxpemVGcmFnbWVudCgqbV90ZXh0RnJhZ21l
bnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpKTsKIAogICAgIHJldHVy
biBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFuc2ZlcigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApp
bmRleCA2MmJlNDQ3MjZkNjk3OTJjYWY5Y2Q5MDRiMThmYzU3ODQ4ZjA4MTcwLi43NTA2Y2RjN2Fl
YTEzYzNlM2IzZGViNDQwNDc5ZTBkNzkwYjIxMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTQyMiw3ICsxNDIyLDcg
QEAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmlucHV0RXZl
bnREYXRhVHJhbnNmZXIoKSBjb25zdAogICAgIGlmIChpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElu
cHV0KCkpCiAgICAgICAgIHJldHVybiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5wdXRFdmVudERh
dGFUcmFuc2ZlcigpOwogCi0gICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRF
dmVudChkb2N1bWVudCgpLCBtX2RvY3VtZW50RnJhZ21lbnRQbGFpblRleHQsIG1fZG9jdW1lbnRG
cmFnbWVudEhUTUxNYXJrdXApOworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklu
cHV0RXZlbnQobV9kb2N1bWVudEZyYWdtZW50UGxhaW5UZXh0LCBtX2RvY3VtZW50RnJhZ21lbnRI
VE1MTWFya3VwKTsKIH0KIAogYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hvdWxkUmVt
b3ZlRW5kQlIoTm9kZSogZW5kQlIsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgb3JpZ2luYWxWaXNQ
b3NCZWZvcmVFbmRCUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxp
bmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDM3MThhYTQ5MWVkNjZhYjgzZmI4MWQ3YjRiZjkz
MDdkZGY0NWY1NDYuLjdkYjNmOWI0NWQ4YjNmNzY3NmUzMGY5N2UwNzZhNWVhOTgzODIzN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21t
YW5kLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIFZlY3RvcjxSZWZQdHI8U3RhdGljUmFuZ2U+PiBT
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kOjp0YXJnZXRSYW5nZXMoKSBjb25zdAogUmVmUHRyPERh
dGFUcmFuc2Zlcj4gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZDo6aW5wdXRFdmVudERhdGFUcmFu
c2ZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0VkaXRpbmdUZXh0QXJlYU9yVGV4dElucHV0KCkp
Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoZG9jdW1l
bnQoKSwgbV9jb3JyZWN0aW9uLCBzZXJpYWxpemVGcmFnbWVudCgqbV9jb3JyZWN0aW9uRnJhZ21l
bnQsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpKTsKKyAgICAgICAgcmV0
dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChtX2NvcnJlY3Rpb24sIHNlcmlh
bGl6ZUZyYWdtZW50KCptX2NvcnJlY3Rpb25GcmFnbWVudCwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0
cmVlSW5jbHVkaW5nTm9kZSkpOwogCiAgICAgcmV0dXJuIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpp
bnB1dEV2ZW50RGF0YVRyYW5zZmVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdD
b21tYW5kLmNwcAppbmRleCBmMzU4NzQzMjBiMTkwNTNlMTAwNmRiZTZlZjY2ZTc3ZmYzMzFhY2Y2
Li4wMWY1M2RiYTAzYmVhYzc5N2Q3NmFhOGFlNTY2ZDJmZDEyNWM4MjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCBSZWZQdHI8
RGF0YVRyYW5zZmVyPiBUeXBpbmdDb21tYW5kOjppbnB1dEV2ZW50RGF0YVRyYW5zZmVyKCkgY29u
c3QKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbFRleHQ7CiAgICAgTWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhodG1sVGV4dCwgbV9jdXJyZW50VGV4
dFRvSW5zZXJ0LCAwLCBtX2N1cnJlbnRUZXh0VG9JbnNlcnQubGVuZ3RoKCksIEVudGl0eU1hc2tJ
bkhUTUxQQ0RBVEEpOwotICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZl
bnQoZG9jdW1lbnQoKSwgbV9jdXJyZW50VGV4dFRvSW5zZXJ0LCBodG1sVGV4dC50b1N0cmluZygp
KTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KG1fY3VycmVu
dFRleHRUb0luc2VydCwgaHRtbFRleHQudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29t
bWFuZDo6ZGlkQXBwbHlDb21tYW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA2NGRlOTFkM2U2YTg1NDhh
NTM2ZGQ5YTk0MzFiY2U5MmY4NGVkZTYyLi5mNjhhMDBlZmFlN2E3YmI0OTU4OWQwZmZlMjczMWJi
ZTZlODQyYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyOjp+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0
OwogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUpCiB7Ci0gICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShzZXNz
aW9uSUQsIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShmaWxlbmFt
ZSkpOwogfQogCiB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewotICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoQmxvYjo6Y3Jl
YXRlKHNlc3Npb25JRCwgYnVmZmVyLmdldCgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKKyAgICBmaWxl
cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShidWZmZXIuZ2V0KCksIHR5cGUpLCBm
aWxlbmFtZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA5NDM4YjQ0MTNhMDAxMjUxYWJlM2Y4NzMw
MDBkNzZjYjhjZWFmMDNmLi45YjlmYTc3MWVkYWE1YWQxYjM3OTI2MTE1YzBlYTNhMzU4YTQ4ZjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyLmgKQEAgLTMzLDE3ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBGaWxlOwogCiBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFsIDogUGFz
dGVib2FyZEZpbGVSZWFkZXIgewotICAgIGV4cGxpY2l0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgICAgIDogc2Vzc2lvbklEKHNlc3Np
b25JRCkKLSAgICB7Ci0gICAgfQotCisgICAgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCkg
PSBkZWZhdWx0OwogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAogICAgIHZv
aWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogCi0gICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwogICAgIFZl
Y3RvcjxSZWY8RmlsZT4+IGZpbGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCAwY2YyZmMzNDVhNDg4
NDBlOTM5ZjQ3NjE1Y2NhZGQyNmQ1MWM4YzRjLi4zOTQ5NmI2OTg4NjZjNGFlYzNmNzdkNGU2NjBi
ZTZkNTA3OTlkOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBSZWY8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUm
IGZyYW1lLCBEb2N1CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCBjb250ZW50VHlw
ZSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGNv
bnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQuc2Vzc2lvbklEKCksIGJ1ZmZlci5n
ZXQoKSwgY29udGVudFR5cGUpKSk7CisgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2Jq
ZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSkp
KTsKICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFj
aG1lbnQpKTsKICAgICAgICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAg
ICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsK
QEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICAgICAg
ZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoQmxv
Yjo6Y3JlYXRlKGRvY3VtZW50LnNlc3Npb25JRCgpLCBidWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBl
KSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVw
ZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxl
KEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSksIGRl
ZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVE
aXNwbGF5QXR0cmlidXRlczo6WWVzKTsKICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdU
Rk1vdmUoYXR0YWNobWVudCkpOwogICAgIH0KICAgICByZXR1cm4gZnJhZ21lbnQ7CkBAIC0zNjUs
NyArMzY1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKHN1cHBvcnRz
Q2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGZyYW1lKSkgewogICAgICAgICAgICAgaWYgKGlzPEhU
TUxJbWFnZUVsZW1lbnQ+KG9yaWdpbmFsRWxlbWVudC5nZXQoKSkgJiYgY29udGVudFR5cGVJc1N1
aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihpbmZvLmNvbnRlbnRUeXBlKSkgewog
ICAgICAgICAgICAgICAgIGF1dG8mIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4o
b3JpZ2luYWxFbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFnbWVudC5kb2N1
bWVudCgpLnNlc3Npb25JRCgpLCBpbmZvLmRhdGEsIGluZm8uY29udGVudFR5cGUpKSk7CisgICAg
ICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKCpmcmFtZS5kb2N1bWVudCgp
LCBCbG9iOjpjcmVhdGUoaW5mby5kYXRhLCBpbmZvLmNvbnRlbnRUeXBlKSkpOwogICAgICAgICAg
ICAgICAgIGltYWdlLnNldEF0dGFjaG1lbnRFbGVtZW50KGF0dGFjaG1lbnQuY29weVJlZigpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRl
QXR0cmlidXRlcyhpbmZvLmRhdGEtPnNpemUoKSwgaW5mby5jb250ZW50VHlwZSwgaW5mby5maWxl
TmFtZSk7CkBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGlu
Zm8uY29udGVudFR5cGUpLCBXVEZNb3ZlKGluZm8uZmlsZU5hbWUpLCBXVEZNb3ZlKGluZm8uZGF0
YSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShG
aWxlOjpjcmVhdGUoQmxvYjo6Y3JlYXRlKGZyYWdtZW50LmRvY3VtZW50KCkuc2Vzc2lvbklEKCks
IFdURk1vdmUoaW5mby5kYXRhKSwgV1RGTW92ZShpbmZvLmNvbnRlbnRUeXBlKSksIFdURk1vdmUo
aW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRy
aWJ1dGVzOjpZZXMpOworICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVh
dGUoQmxvYjo6Y3JlYXRlKFdURk1vdmUoaW5mby5kYXRhKSwgV1RGTW92ZShpbmZvLmNvbnRlbnRU
eXBlKSksIFdURk1vdmUoaW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVw
ZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwogICAgICAgICAgICAgcGFyZW50LT5yZXBsYWNl
Q2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSwgV1RGTW92ZShvcmlnaW5hbEVsZW1lbnQpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQxNSw3ICs0MTUsNyBAQCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmIGZyYW1lLCBOU0F0dHJpYnV0
ZQogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBibG9iVVJMTWFwOwogICAg
IGZvciAoY29uc3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogZnJhZ21lbnRB
bmRSZXNvdXJjZXMucmVzb3VyY2VzKSB7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0
ZShkb2N1bWVudC5zZXNzaW9uSUQoKSwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2Ut
Pm1pbWVUeXBlKCkpOworICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVzb3Vy
Y2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcgYmxv
YlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKTsKICAgICAgICAg
YmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmluZygpLCBibG9iVVJMKTsKICAg
ICB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhB
cmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAg
YXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoZGVzdGluYXRpb25E
b2N1bWVudC5zZXNzaW9uSUQoKSwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1p
bWVUeXBlKCkpOworICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoc3VicmVzb3VyY2Ut
PmRhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcgYmxvYlVS
TCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0aW9uRG9jdW1lbnQsIGJsb2IpOwog
ICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNvdXJjZVVSTC5zdHJpbmcoKSwgYmxvYlVSTCk7
CiAgICAgfQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBX
aXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBibG9iQnVmZmVyOwogICAgICAgICBibG9iQnVmZmVyLnJlc2Vy
dmVDYXBhY2l0eSh1dGY4Lmxlbmd0aCgpKTsKICAgICAgICAgYmxvYkJ1ZmZlci5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgp
KTsKLSAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKGRlc3RpbmF0aW9uRG9jdW1lbnQu
c2Vzc2lvbklEKCksIFdURk1vdmUoYmxvYkJ1ZmZlciksIHR5cGUpOworICAgICAgICBhdXRvIGJs
b2IgPSBCbG9iOjpjcmVhdGUoV1RGTW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CiAKICAgICAgICAg
U3RyaW5nIHN1YmZyYW1lQmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0
aW9uRG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJmcmFtZVVSTC5z
dHJpbmcoKSwgc3ViZnJhbWVCbG9iVVJMKTsKQEAgLTY4OCw3ICs2ODgsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiB0eXBlLAogICAgIGlmIChzaG91bGRSZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNo
bWVudHMoKSkKICAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFj
aG1lbnQoZnJhbWUsIGRvY3VtZW50LCBXVEZNb3ZlKGJ1ZmZlciksIHR5cGUsIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUpKTsKICAgICBlbHNlCi0gICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRv
Y3VtZW50LCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQuc2Vzc2lvbklEKCksIGJ1ZmZlci5nZXQoKSwg
dHlwZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50
KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2Jq
ZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KQEAgLTcw
OSw3ICs3MDksNyBAQCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBh
dGgoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgYXV0byBkb2N1bWVudCA9
IG1ha2VSZWYoKmZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxB
dHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1l
bnQpOwogICAgIGlmICghc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7
Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LT5zZXNz
aW9uSUQoKSwgcGF0aCksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJp
YnV0ZXM6Olllcyk7CisgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBh
dGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMp
OwogICAgICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTczNiw3ICs3MzYsNyBA
QCBzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRmlsZVBhdGgoRnJhbWUmIGZy
YW1lLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAKICAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxl
Rm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50VHlwZSkpIHsKICAgICAgICAgYXV0
byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGlt
YWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0
ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVu
dC0+c2Vzc2lvbklEKCksIHBhdGgpKSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShwYXRoKSkpOwogICAgICAgICBpbWFnZS0+c2V0
QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlmIChwcmVm
ZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcigq
cHJlZmVycmVkU2l6ZS53aWR0aCkpOwpAQCAtNzY1LDcgKzc2NSw3IEBAIHN0YXRpYyBSZWY8SFRN
TEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvCiAgICAgICAgIGZpbGVOYW1lID0gbmFtZTsKIAogICAgIGlmICghc3VwcG9ydHND
bGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNl
dEZpbGUoRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShkb2N1bWVudC0+c2Vzc2lvbklEKCksIGJ1
ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBmaWxlTmFtZSkpOworICAgICAgICBhdHRh
Y2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3Zl
KGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CiAgICAgICAgIHJldHVybiBhdHRhY2htZW50
OwogICAgIH0KIApAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0
dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAK
ICAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlv
bihhdHRhY2htZW50VHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoZG9jdW1lbnQsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZG9jdW1lbnQtPnNlc3Npb25J
RCgpLCBidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92ZShmaWxlTmFtZSkp
KSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6
OmNyZWF0ZShCbG9iOjpjcmVhdGUoYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIFdU
Rk1vdmUoZmlsZU5hbWUpKSkpOwogICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQo
V1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlmIChwcmVmZXJyZWRTaXplLndpZHRoKQog
ICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcigqcHJlZmVycmVkU2l6ZS53aWR0
aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKaW5kZXggN2FmZjE3
YjVjMTllMWM5ZTE0ZmI4NzkxMWQ4N2NmNTU4M2VjN2EwMy4uNzA2ZTgyNjczZjA4MTMzMzczNWU1
ODcxMjc4YzhkNDUwZDBiNjliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9n
dGsvRWRpdG9yR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JH
dGsuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoUGFzdGVib2FyZCYgcGFzCiAgICAgICAg
ICAgICByZXR1cm4gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7CiAgICAgICAgIH0sICZidWZmZXIpOwog
ICAgICAgICBpZiAoc3RhdHVzID09IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7Ci0gICAgICAgICAg
ICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKS0+c2Vzc2lvbklEKCks
IFdURk1vdmUoYnVmZmVyKSwgImltYWdlL3BuZyIpOworICAgICAgICAgICAgYXV0byBibG9iID0g
QmxvYjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwgImltYWdlL3BuZyIpOwogICAgICAgICAgICAg
aWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoKmZyYW1lLmRv
Y3VtZW50KCksIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKCpmcmFtZS5kb2N1bWVudCgpLCBibG9i
KSwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxMjRhNWFiMmQ2YTcyMjM2
NDJmMDYyOTYyODFhYzE2Y2I0NTAxNzlhLi5iMzRiYzA2NzRlYWJkNGJjNTZlMWQ4NjIyYTQ3ZWZj
NjJjMjJhMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05ODUsOSArOTg1LDkg
QEAgc3RhdGljIHZvaWQgcmVzdG9yZUF0dGFjaG1lbnRFbGVtZW50c0luRnJhZ21lbnQoRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQpCiAgICAgICAgIGF1dG8gYXR0YWNobWVudFBhdGggPSBhdHRh
Y2htZW50LT5hdHRhY2htZW50UGF0aCgpOwogICAgICAgICBhdXRvIGJsb2JVUkwgPSBhdHRhY2ht
ZW50LT5ibG9iVVJMKCk7CiAgICAgICAgIGlmICghYXR0YWNobWVudFBhdGguaXNFbXB0eSgpKQot
ICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZnJhZ21lbnQuZG9j
dW1lbnQoKS5zZXNzaW9uSUQoKSwgYXR0YWNobWVudFBhdGgpKTsKKyAgICAgICAgICAgIGF0dGFj
aG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGF0dGFjaG1lbnRQYXRoKSk7CiAgICAgICAgIGVs
c2UgaWYgKCFibG9iVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZp
bGUoRmlsZTo6ZGVzZXJpYWxpemUoZnJhZ21lbnQuZG9jdW1lbnQoKS5zZXNzaW9uSUQoKSwgeyB9
LCBibG9iVVJMLCBhdHRhY2htZW50LT5hdHRhY2htZW50VHlwZSgpLCBhdHRhY2htZW50LT5hdHRh
Y2htZW50VGl0bGUoKSkpOworICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpk
ZXNlcmlhbGl6ZSh7IH0sIGJsb2JVUkwsIGF0dGFjaG1lbnQtPmF0dGFjaG1lbnRUeXBlKCksIGF0
dGFjaG1lbnQtPmF0dGFjaG1lbnRUaXRsZSgpKSk7CiAKICAgICAgICAgLy8gUmVtb3ZlIHRlbXBv
cmFyeSBhdHRyaWJ1dGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGFkZGVkIGluIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVzLgogICAgICAgICBhdHRhY2htZW50
LT5yZW1vdmVBdHRyaWJ1dGUod2Via2l0YXR0YWNobWVudGlkQXR0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iLmNwcAppbmRleCBkODkxYzcwODY4YjhjNzZhOTI5MTExN2M1M2MzMmNmNmYxN2E2NDljLi4y
MzNjNzY2Y2RlZjc4Yzg2YmMxZmI0YjBjZjNiZWRjMDQyYmZlNGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJs
b2IpOwogY2xhc3MgQmxvYlVSTFJlZ2lzdHJ5IGZpbmFsIDogcHVibGljIFVSTFJlZ2lzdHJ5IHsK
IHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSYpIGZpbmFsOwotICAgIHZvaWQgdW5yZWdpc3RlclVS
TChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCB1
bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgc3RhdGljIFVSTFJlZ2lzdHJ5
JiByZWdpc3RyeSgpOwogfTsKQEAgLTU4LDEyICs1OCwxMiBAQCBwdWJsaWM6CiB2b2lkIEJsb2JV
UkxSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgVVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lzdHJhYmxlJiBibG9iKQogewogICAgIEFTU0VS
VCgmYmxvYi5yZWdpc3RyeSgpID09IHRoaXMpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTChjb250ZXh0LnNlc3Npb25JRCgpLCBjb250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCksIHB1YmxpY1VSTCwgc3RhdGljX2Nhc3Q8QmxvYiY+KGJsb2IpLnVybCgpKTsKKyAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZWN1cml0eU9y
aWdpbigpLCBwdWJsaWNVUkwsIHN0YXRpY19jYXN0PEJsb2ImPihibG9iKS51cmwoKSk7CiB9CiAK
LXZvaWQgQmxvYlVSTFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVn
aXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
dW5yZWdpc3RlckJsb2JVUkwoY29udGV4dC5zZXNzaW9uSUQoKSwgdXJsKTsKKyAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogfQogCiBVUkxSZWdpc3Ry
eSYgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RyeSgpCkBAIC03MiwyNCArNzIsMjEgQEAgVVJMUmVn
aXN0cnkmIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsK
IH0KIAotQmxvYjo6QmxvYihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUpCi0gICAgOiBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCi0gICAgLCBtX2ludGVybmFsVVJMKFdURk1vdmUodXJsKSkKK0Jsb2I6OkJsb2Io
VW5pbml0aWFsaXplZENvbnRydWN0b3IsIFVSTCYmIHVybCwgU3RyaW5nJiYgdHlwZSkKKyAgICA6
IG1faW50ZXJuYWxVUkwoV1RGTW92ZSh1cmwpKQogICAgICwgbV90eXBlKFdURk1vdmUodHlwZSkp
CiB7CiB9CiAKLUJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV9z
ZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9zaXplKDApCitCbG9iOjpCbG9iKCkKKyAgICA6
IG1fc2l6ZSgwKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5h
bFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nl
c3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgeyB9LCAgeyB9KTsKKyAgICBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyB9LCAgeyB9KTsKIH0KIAot
QmxvYjo6QmxvYihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJh
ZykKLSAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1faW50ZXJuYWxVUkwoQmxv
YlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKSkKK0Jsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0VmFy
aWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5
QmFnKQorICAgIDogbV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQog
ICAgICwgbV90eXBlKG5vcm1hbGl6ZWRDb250ZW50VHlwZShwcm9wZXJ0eUJhZy50eXBlKSkKIHsK
ICAgICBCbG9iQnVpbGRlciBidWlsZGVyKHByb3BlcnR5QmFnLmVuZGluZ3MpOwpAQCAtMTAxLDEy
ICs5OCwxMSBAQCBCbG9iOjpCbG9iKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVmVjdG9yPEJs
b2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLAogICAgICAgICApOwogICAgIH0KIAot
ICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwg
bV9pbnRlcm5hbFVSTCwgYnVpbGRlci5maW5hbGl6ZSgpLCBtX3R5cGUpOworICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBidWlsZGVyLmZp
bmFsaXplKCksIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKLSAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fdHlwZShjb250ZW50VHlw
ZSkKK0Jsb2I6OkJsb2IoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCisgICAgOiBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoYnVm
ZmVyLnNpemUoKSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKQEAgLTExNSw1MyArMTEx
LDQ5IEBAIEJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjCiAgICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9i
UGFydHM7CiAgICAgYmxvYlBhcnRzLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKGRhdGEpKSk7CiAg
ICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1fc2Vzc2lvbklELCBtX2ludGVy
bmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9i
UGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQotICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV90eXBlKGNvbnRlbnRUeXBl
KQorQmxvYjo6QmxvYihWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQorICAgIDogbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9zaXplKGRhdGEuc2l6
ZSgpKQogewogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwogICAgIGJsb2JQYXJ0cy5h
cHBlbmQoQmxvYlBhcnQoV1RGTW92ZShkYXRhKSkpOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9i
VVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFy
dHMpLCBjb250ZW50VHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwog
fQogCiBCbG9iOjpCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IsIGNvbnN0
IEJsb2ImIGJsb2IpCi0gICAgOiBtX3Nlc3Npb25JRChibG9iLm1fc2Vzc2lvbklEKQotICAgICwg
bV9pbnRlcm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQorICAgIDogbV9pbnRl
cm5hbFVSTChCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpKQogICAgICwgbV90eXBlKGJsb2Iu
dHlwZSgpKQogICAgICwgbV9zaXplKGJsb2Iuc2l6ZSgpKQogewotICAgIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgeyBC
bG9iUGFydChibG9iLnVybCgpKSB9ICwgbV90eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgeyBCbG9iUGFydChibG9iLnVybCgp
KSB9ICwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9y
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJp
bmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5n
JiBmaWxlQmFja2VkUGF0aCkKLSAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1f
dHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCitCbG9iOjpCbG9iKERlc2VyaWFsaXph
dGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9w
dGlvbmFsPHVuc2lnbmVkIGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2Vk
UGF0aCkKKyAgICA6IG1fdHlwZShub3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpCiAgICAgLCBt
X3NpemUoc2l6ZSkKIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJu
YWxVUkwoKTsKICAgICBpZiAoZmlsZUJhY2tlZFBhdGguaXNFbXB0eSgpKQotICAgICAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9zZXNzaW9uSUQsIG51bGxwdHIs
IG1faW50ZXJuYWxVUkwsIHNyY1VSTCk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTChudWxscHRyLCBtX2ludGVybmFsVVJMLCBzcmNVUkwpOwogICAgIGVs
c2UKLSAgICAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQobV9zZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmlsZUJh
Y2tlZFBhdGgsIG1fdHlwZSk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgZmls
ZUJhY2tlZFBhdGgsIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5k
LCBjb25zdCBTdHJpbmcmIHR5cGUpCi0gICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAg
LCBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQorQmxvYjo6QmxvYihjb25zdCBV
UkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcm
IHR5cGUpCisgICAgOiBtX3R5cGUobm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgIC8v
IG1fc2l6ZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZW5kIC0gc3RhcnQgc28gd2UgZG8g
bm90IGluaXRpYWxpemUgaXQgaGVyZS4KIHsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShtX3Nlc3Npb25JRCwgbV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBzdGFy
dCwgZW5kKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JT
bGljZShtX2ludGVybmFsVVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogfQogCiBCbG9iOjp+Qmxv
YigpCiB7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwobV9z
ZXNzaW9uSUQsIG1faW50ZXJuYWxVUkwpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcg
QmxvYjo6c2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDJjN2E3YjBmYmU0ZmIx
MmM4NmU3YWRjNjY2YjZkY2YyNmZiYmZjMjMuLjczODk3NGFhZDgxOGNhZjZhMjQ3OTA5NTg1N2Mx
NDFmMTExYTFmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJV
UkxSZWdpc3RyeS5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTU2LDMwICs1NSwzMCBAQCB1c2luZyBC
bG9iUGFydFZhcmlhbnQgPSBWYXJpYW50PFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4sIFJl
ZlB0cjxKU0M6OkFycmF5QgogY2xhc3MgQmxvYiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBVUkxSZWdpc3RyYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8QmxvYj4gewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURURfRVhQT1JUKEJsb2IsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisg
ICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmxvYihzZXNzaW9uSUQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QmxvYik7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZh
cmlhbnRzLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQorICAgIHN0YXRpYyBS
ZWY8QmxvYj4gY3JlYXRlKFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50
cywgY29uc3QgQmxvYlByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJsb2IoY29udGV4dC5zZXNzaW9uSUQoKSwgV1RGTW92ZShibG9i
UGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmxvYihXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBwcm9wZXJ0eUJhZykpOwogICAgIH0K
IAotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisg
ICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBCbG9iKHNlc3Npb25JRCwgYnVmZmVyLCBjb250ZW50VHlwZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBCbG9iKGJ1ZmZlciwgY29udGVudFR5cGUpKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgc3RhdGlj
IFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2Ioc2Vz
c2lvbklELCBXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCbG9iKFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFJlZjxCbG9iPiBkZXNlcmlhbGl6ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBj
b25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoKQorICAgIHN0YXRpYyBSZWY8QmxvYj4gZGVzZXJp
YWxpemUoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNp
emUsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBhdGgpCiAgICAgewogICAgICAgICBBU1NFUlQo
QmxvYjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHNlc3Npb25JRCwgc3Jj
VVJMLCB0eXBlLCBzaXplLCBmaWxlQmFja2VkUGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBCbG9iKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHNyY1VSTCwgdHlwZSwgc2l6
ZSwgZmlsZUJhY2tlZFBhdGgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5CbG9iKCk7CkBAIC0x
MDQsMzAgKzEwMywyOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8QmxvYj4gc2xpY2UobG9uZyBsb25n
IHN0YXJ0ID0gMCwgbG9uZyBsb25nIGVuZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8bG9uZyBsb25n
Pjo6bWF4KCksIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBTdHJpbmcoKSkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IobV9zZXNzaW9uSUQsIG1faW50
ZXJuYWxVUkwsIHN0YXJ0LCBlbmQsIGNvbnRlbnRUeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEJsb2IobV9pbnRlcm5hbFVSTCwgc3RhcnQsIGVuZCwgY29udGVudFR5cGUpKTsK
ICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCbG9iKFBB
TDo6U2Vzc2lvbklEKTsKLSAgICBCbG9iKFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8QmxvYlBhcnRW
YXJpYW50PiYmLCBjb25zdCBCbG9iUHJvcGVydHlCYWcmKTsKLSAgICBCbG9iKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAg
ICBCbG9iKFBBTDo6U2Vzc2lvbklELCBWZWN0b3I8dWludDhfdD4mJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgQmxvYigpOworICAgIEJsb2IoVmVjdG9y
PEJsb2JQYXJ0VmFyaWFudD4mJiwgY29uc3QgQmxvYlByb3BlcnR5QmFnJik7CisgICAgQmxvYihj
b25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBCbG9i
KFZlY3Rvcjx1aW50OF90PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVu
dW0gUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3Rp
bmdCbG9iQ29uc3RydWN0b3IgfTsKICAgICBCbG9iKFJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29u
c3RydWN0b3IsIGNvbnN0IEJsb2ImKTsKIAogICAgIGVudW0gVW5pbml0aWFsaXplZENvbnRydWN0
b3IgeyB1bmluaXRpYWxpemVkQ29udHJ1Y3RvciB9OwotICAgIEJsb2IoVW5pbml0aWFsaXplZENv
bnRydWN0b3IsIFBBTDo6U2Vzc2lvbklELCBVUkwmJiwgU3RyaW5nJiYgdHlwZSk7CisgICAgQmxv
YihVbmluaXRpYWxpemVkQ29udHJ1Y3RvciwgVVJMJiYsIFN0cmluZyYmIHR5cGUpOwogCiAgICAg
ZW51bSBEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yIHsgZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rv
ciB9OwotICAgIEJsb2IoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvbmFsPHVuc2lnbmVk
IGxvbmcgbG9uZz4gc2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCk7CisgICAgQmxv
YihEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBPcHRpb25hbDx1bnNpZ25lZCBsb25nIGxvbmc+IHNpemUsIGNvbnN0IFN0cmlu
ZyYgZmlsZUJhY2tlZFBhdGgpOwogCiAgICAgLy8gRm9yIHNsaWNpbmcuCi0gICAgQmxvYihQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihjb25zdCBVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKTsKIAogcHJpdmF0ZToKLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLQog
ICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJuYWwgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRh
IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4gSXQgc2VydmVzCiAgICAgLy8gYXMgYW4gaWRl
bnRpZmllciBmb3IgdGhpcyBibG9iLiBUaGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVzZWQgdG8g
c291cmNlIHRoZSBibG9iJ3MgY29udGVudAogICAgIC8vIGludG8gYW4gSFRNTCBvciBmb3IgRmls
ZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBVUkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2UgcHVycG9z
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmlkbAppbmRleCBhZTU1MmE5NTZmMzUzYzBlNDJjYTJkNTE1
N2Y1NTQwNDFlNTFhNTAyLi42OWQwZjE1NWFkNDc5OGQ3ZTY2YjQwOGQyZGJlYzY4MjBjNmVkZGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5pZGwKQEAgLTM1LDcgKzM1LDYgQEAgdHlwZWRlZiAoQnVm
ZmVyU291cmNlIG9yIEJsb2Igb3IgVVNWU3RyaW5nKSBCbG9iUGFydDsKICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGwsCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBDb25zdHJ1Y3Rvcihv
cHRpb25hbCBzZXF1ZW5jZTxCbG9iUGFydD4gYmxvYlBhcnRzLCBvcHRpb25hbCBCbG9iUHJvcGVy
dHlCYWcgb3B0aW9ucyksCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0LAogXSBpbnRlcmZhY2UgQmxvYiB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbG9uZyBzaXplOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGE4ZjQ2ZDE2NmNiY2M5ZjM4MzVkNTU1ZTk4
ZTg0NjExODkyYWE4MWEuLjZhZmIzZWZmNmI4MDFhOTRlNWI2MzE3NGRhMTk4MDEyMDI2YzlhMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtMzksMzQgKzM5LDM0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEZpbGUpOwogCi1SZWY8Rmls
ZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpCitSZWY8Rmls
ZT4gRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmVQYXRoKQogewotICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShz
ZXNzaW9uSUQsIHBhdGgpOworICAgIGF1dG8gZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoKTsKICAg
ICBmaWxlLT5zZXRSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoKTsKICAgICByZXR1cm4gZmlsZTsK
IH0KIAotUmVmPEZpbGU+IEZpbGU6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJpZGUpCitSZWY8RmlsZT4g
RmlsZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lT3ZlcnJp
ZGUpCiB7CiAgICAgU3RyaW5nIG5hbWU7CiAgICAgU3RyaW5nIHR5cGU7CiAgICAgY29tcHV0ZU5h
bWVBbmRDb250ZW50VHlwZShwYXRoLCBuYW1lT3ZlcnJpZGUsIG5hbWUsIHR5cGUpOwogCiAgICAg
YXV0byBpbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChzZXNzaW9uSUQsIGludGVy
bmFsVVJMLCBwYXRoLCB0eXBlKTsKKyAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckZpbGVCbG9iVVJMKGludGVybmFsVVJMLCBwYXRoLCB0eXBlKTsKIAotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZpbGUoc2Vzc2lvbklELCBXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0
eXBlKSwgU3RyaW5nIHsgcGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmlsZShXVEZNb3ZlKGludGVybmFsVVJMKSwgV1RGTW92ZSh0eXBlKSwgU3RyaW5n
IHsgcGF0aCB9LCBXVEZNb3ZlKG5hbWUpKSk7CiB9CiAKLUZpbGU6OkZpbGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBVUkwmJiB1cmwsIFN0cmluZyYmIHR5cGUsIFN0cmluZyYmIHBhdGgsIFN0
cmluZyYmIG5hbWUpCi0gICAgOiBCbG9iKHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yLCBzZXNzaW9u
SUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh0eXBlKSkKK0ZpbGU6OkZpbGUoVVJMJiYgdXJsLCBT
dHJpbmcmJiB0eXBlLCBTdHJpbmcmJiBwYXRoLCBTdHJpbmcmJiBuYW1lKQorICAgIDogQmxvYih1
bmluaXRpYWxpemVkQ29udHJ1Y3RvciwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHR5cGUpKQogICAg
ICwgbV9wYXRoKFdURk1vdmUocGF0aCkpCiAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKIHsK
IH0KIAotRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYg
bGFzdE1vZGlmaWVkKQotICAgIDogQmxvYihkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBzZXNz
aW9uSUQsIHVybCwgdHlwZSwgeyB9LCBwYXRoKQorRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25D
b250cnVjdG9yLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxh
c3RNb2RpZmllZCkKKyAgICA6IEJsb2IoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgdXJsLCB0
eXBlLCB7IH0sIHBhdGgpCiAgICAgLCBtX3BhdGgocGF0aCkKICAgICAsIG1fbmFtZShuYW1lKQog
ICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGUobGFzdE1vZGlmaWVkKQpAQCAtODAsOCAr
ODAsOCBAQCBzdGF0aWMgQmxvYlByb3BlcnR5QmFnIGNvbnZlcnRQcm9wZXJ0eUJhZyhjb25zdCBG
aWxlOjpQcm9wZXJ0eUJhZyYgaW5pdGlhbEJhZykKICAgICByZXR1cm4gYmFnOwogfQogCi1GaWxl
OjpGaWxlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZh
cmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
UHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQotICAgIDogQmxvYihjb250ZXh0LnNlc3Npb25JRCgp
LCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBjb252ZXJ0UHJvcGVydHlCYWcocHJvcGVydHlC
YWcpKQorRmlsZTo6RmlsZShWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFu
dHMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJh
ZykKKyAgICA6IEJsb2IoV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgY29udmVydFByb3BlcnR5
QmFnKHByb3BlcnR5QmFnKSkKICAgICAsIG1fbmFtZShmaWxlbmFtZSkKICAgICAsIG1fbGFzdE1v
ZGlmaWVkRGF0ZU92ZXJyaWRlKHByb3BlcnR5QmFnLmxhc3RNb2RpZmllZC52YWx1ZU9yKFdhbGxU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKaW5kZXggZGUzYTNjYjgwOGQzYTgwNzY4MDdiZjEzYjRhMDZiY2IyODYzM2E3
Mi4uZDJmOTM4YjQyMGQzYTYwZmI5M2Y3NDBiY2IwNGQ3NDFmODNlZmY3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlLmgKQEAgLTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIENy
ZWF0ZSBhIGZpbGUgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAo
dmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJz
IGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0aC4KLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEZpbGU+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG5hbWVPdmVycmlkZSA9IHsgfSk7CiAKICAgICAvLyBDcmVhdGUgYSBGaWxlIHVzaW5nIHRoZSAn
bmV3IEZpbGUnIGNvbnN0cnVjdG9yLgotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxv
YlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcm
IHByb3BlcnR5QmFnKQorICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlKFZlY3RvcjxCbG9iUGFy
dFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgUHJvcGVydHlCYWcmIHByb3BlcnR5QmFnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRmlsZShjb250ZXh0LCBXVEZNb3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBmaWxlbmFt
ZSwgcHJvcGVydHlCYWcpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZShXVEZN
b3ZlKGJsb2JQYXJ0VmFyaWFudHMpLCBmaWxlbmFtZSwgcHJvcGVydHlCYWcpKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUmVmPEZpbGU+IGRlc2VyaWFsaXplKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9k
aWZpZWQgPSBXVEY6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmll
ZCA9IFdURjo6bnVsbG9wdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZp
bGUoZGVzZXJpYWxpemF0aW9uQ29udHJ1Y3Rvciwgc2Vzc2lvbklELCBwYXRoLCBzcmNVUkwsIHR5
cGUsIG5hbWUsIGxhc3RNb2RpZmllZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
aWxlKGRlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIHBhdGgsIHNyY1VSTCwgdHlwZSwgbmFtZSwg
bGFzdE1vZGlmaWVkKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGUoY29u
c3QgQmxvYiYgYmxvYiwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtNjUsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGUoZmlsZSwgbmFtZSkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gY3JlYXRlV2l0aFJlbGF0aXZlUGF0aChQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlUGF0aCk7
CisgICAgc3RhdGljIFJlZjxGaWxlPiBjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgpOwogCiAgICAgYm9vbCBpc0ZpbGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTg1LDEzICs4NSwxMyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZpbGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cGF0aCk7Ci0gICAgRmlsZShQQUw6OlNlc3Npb25JRCwgVVJMJiYsIFN0cmluZyYmIHR5cGUsIFN0
cmluZyYmIHBhdGgsIFN0cmluZyYmIG5hbWUpOwotICAgIEZpbGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYXJpYW50cywgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgUHJvcGVydHlCYWcmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgRmlsZShVUkwmJiwgU3Ry
aW5nJiYgdHlwZSwgU3RyaW5nJiYgcGF0aCwgU3RyaW5nJiYgbmFtZSk7CisgICAgRmlsZShWZWN0
b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJik7CiAgICAgRmlsZShjb25zdCBCbG9iJiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKICAgICBGaWxlKGNvbnN0IEZpbGUmLCBjb25zdCBTdHJpbmcmIG5hbWUp
OwogCi0gICAgRmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZp
ZWQpOworICAgIEZpbGUoRGVzZXJpYWxpemF0aW9uQ29udHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQpOwogCiAgICAgc3Rh
dGljIHZvaWQgY29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYg
ZWZmZWN0aXZlQ29udGVudFR5cGUpOwogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5pZGwKaW5kZXggYmY3NmRjZGY0MDA0MjY3MzMxMDNjMjFjM2VkZjcwNDVm
ZDUwNGU3MS4uNGNmNTQ3ZTFjMzZjOTRmYzU3NmE4MTFlMjA3NTNjMTU2ZDIwOWFlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuaWRsCkBAIC0yOCw3ICsyOCw2IEBAIHR5cGVkZWYgKEJ1ZmZlclNvdXJj
ZSBvciBCbG9iIG9yIFVTVlN0cmluZykgQmxvYlBhcnQ7CiAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgZXhwb3NlZCBvbiBXb3JrZXJzIGFzIHdlbGwuCiBbCiAgICAgQ29uc3RydWN0b3Ioc2VxdWVu
Y2U8QmxvYlBhcnQ+IGZpbGVCaXRzLCBVU1ZTdHJpbmcgZmlsZU5hbWUsIG9wdGlvbmFsIEZpbGVQ
cm9wZXJ0eUJhZyBvcHRpb25zKSwKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3Nl
ZD0oV2luZG93KSwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IDRkY2QwZGQwYzA5YzdmMGMwZTg3NDZh
ZDgwMTM2NmQ4Y2FlNjk4ZTAuLjg5NzE1NWExMjI5MWRjNGU1MzUyMzRlMDg4YThjNDJlZmEwOWI1
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcApAQCAt
NjgsNyArNjgsNyBAQCBGaWxlUmVhZGVyTG9hZGVyOjp+RmlsZVJlYWRlckxvYWRlcigpCiB7CiAg
ICAgdGVybWluYXRlKCk7CiAgICAgaWYgKCFtX3VybEZvclJlYWRpbmcuaXNFbXB0eSgpKQotICAg
ICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCgqbV9zZXNzaW9u
SUQsIG1fdXJsRm9yUmVhZGluZyk7CisgICAgICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVu
cmVnaXN0ZXJCbG9iVVJMKG1fdXJsRm9yUmVhZGluZyk7CiB9CiAKIHZvaWQgRmlsZVJlYWRlckxv
YWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgQmxvYiYgYmxvYikKQEAgLTgxLDggKzgxLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpz
dGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG8K
ICAgICAgICAgZmFpbGVkKEZpbGVFcnJvcjo6U0VDVVJJVFlfRVJSKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX3Nlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlc3Np
b25JRCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCgqbV9z
ZXNzaW9uSUQsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG1fdXJs
Rm9yUmVhZGluZywgYmxvYi51cmwoKSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIG1f
dXJsRm9yUmVhZGluZywgYmxvYi51cmwoKSk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxvYWQg
dGhlIHJlcXVlc3QuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNDE5YjIw
OTNjN2Q3OTBiZjIxNTNkYTJiY2QyOTE1NGRkYjYwZDQwZi4uZmZhODAzNjczYzhmNGEyYjVlZjkx
NjU1ZTk5OWVmNzZjOWQyMDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTEwMyw3ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFU
eXBlOwogCiAgICAgVVJMIG1fdXJsRm9yUmVhZGluZzsKLSAgICBPcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gbV9zZXNzaW9uSUQ7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVy
OwogCiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IG1fcmF3RGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IGE5NWIy
NDlmOGM4NDIzZmQ3NDViYzJhYzk3YjI3YmMwNGFhM2E3MzkuLjI3MjUzMGI0ZjNhNTg1OWIyNGQz
OTY0NjRkMzkxZGI2MWY2NDQyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNjQsNjcgKzY0LDY3IEBAIHN0YXRpYyBUaHJl
YWRTcGVjaWZpYzxCbG9iVXJsT3JpZ2luTWFwPiYgb3JpZ2luTWFwKCkKICAgICByZXR1cm4gKm1h
cDsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmIChpc01haW5UaHJlYWQo
KSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25J
RCwgdXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUp
OworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCksIGNvbnRlbnRUeXBlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJs
Lmlzb2xhdGVkQ29weSgpLCBwYXRoID0gcGF0aC5pc29sYXRlZENvcHkoKSwgY29udGVudFR5cGUg
PSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckZpbGVCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmNyZWF0ZShwYXRoKSwgY29udGVudFR5cGUpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3VybCA9
IHVybC5pc29sYXRlZENvcHkoKSwgcGF0aCA9IHBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRU
eXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRl
KHBhdGgpLCBjb250ZW50VHlwZSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBXVEZNb3ZlKGJsb2JQ
YXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgZm9yIChhdXRvJiBwYXJ0IDogYmxvYlBhcnRzKQogICAgICAgICBwYXJ0
LmRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lv
bklELCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBh
cnRzKSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJs
LCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGJsb2JQYXJ0cyA9IFdURk1vdmUoYmxvYlBhcnRz
KSwgY29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9i
UGFydHMpLCBjb250ZW50VHlwZSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogewogICAgIC8vIElm
IHRoZSBibG9iIFVSTCBjb250YWlucyBudWxsIG9yaWdpbiwgYXMgaW4gdGhlIGNvbnRleHQgd2l0
aCB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIGZpbGUgVVJMLCBzYXZlIHRoZSBtYXBwaW5nIGJl
dHdlZW4gdXJsIGFuZCBvcmlnaW4gc28gdGhhdCB0aGUgb3JpZ2luIGNhbiBiZSByZXRyaXZlZCB3
aGVuIGRvaW5nIHNlY3VyaXR5IG9yaWdpbiBjaGVjay4KICAgICBpZiAob3JpZ2luICYmIEJsb2JV
Ukw6OmdldE9yaWdpbih1cmwpID09ICJudWxsIikKICAgICAgICAgb3JpZ2luTWFwKCktPmFkZCh1
cmwuc3RyaW5nKCksIG9yaWdpbik7CiAKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsLCBzcmNVUkwp
OworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklE
LCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1
cmwsIHNyY1VSTCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0gdXJsLmlzb2xhdGVkQ29w
eSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKICAgICB9KTsKIH0KIAotdm9pZCBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNy
Y1VSTCwgY29uc3QgU3RyaW5nJiBmaWxlQmFja2VkUGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBT
dHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAg
IGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChzZXNzaW9uSUQsIHVybCwgc3JjVVJMLCBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShmaWxlQmFja2VkUGF0aCksIGNvbnRlbnRUeXBlKTsKKyAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
dXJsLCBzcmNVUkwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRo
KSwgY29udGVudFR5cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNV
UkwuaXNvbGF0ZWRDb3B5KCksIGZpbGVCYWNrZWRQYXRoID0gZmlsZUJhY2tlZFBhdGguaXNvbGF0
ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKLSAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
c2Vzc2lvbklELCB1cmwsIHNyY1VSTCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUoZmls
ZUJhY2tlZFBhdGgpLCBjb250ZW50VHlwZSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpLCBzcmNVUkwgPSBzcmNVUkwuaXNvbGF0ZWRDb3B5KCksIGZpbGVC
YWNrZWRQYXRoID0gZmlsZUJhY2tlZFBhdGguaXNvbGF0ZWRDb3B5KCksIGNvbnRlbnRUeXBlID0g
Y29udGVudFR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6Y3JlYXRlKGZpbGVCYWNrZWRQYXRoKSwgY29udGVudFR5cGUpOwogICAgIH0p
OwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNs
aWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVS
TCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCit2b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJM
LCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewog
ICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQsIG5ld1VSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsK
KyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UobmV3VVJMLCBz
cmNVUkwsIHN0YXJ0LCBlbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbE9u
TWFpblRocmVhZChbc2Vzc2lvbklELCBuZXdVUkwgPSBuZXdVUkwuaXNvbGF0ZWRDb3B5KCksIHNy
Y1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKSwgc3RhcnQsIGVuZF0gewotICAgICAgICBibG9i
UmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShzZXNzaW9uSUQsIG5ld1VSTCwgc3Jj
VVJMLCBzdGFydCwgZW5kKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtuZXdVUkwgPSBuZXdVUkwu
aXNvbGF0ZWRDb3B5KCksIHNyY1VSTCA9IHNyY1VSTC5pc29sYXRlZENvcHkoKSwgc3RhcnQsIGVu
ZF0geworICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShuZXdV
UkwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiAgICAgfSk7CiB9CiAKQEAgLTE0MywxNyArMTQzLDE3
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShj
b25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gcmVzdWx0U2l6ZTsKIH0KIAotdm9pZCBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoQmxvYlVSTDo6Z2V0T3JpZ2lu
KHVybCkgPT0gIm51bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3ZlKHVybC5zdHJpbmco
KSk7CiAKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCku
dW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB1cmwpOworICAgICAgICBibG9iUmVnaXN0cnko
KS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7Ci0g
ICAgICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKHNlc3Npb25JRCwgdXJsKTsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFt1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAppbmRl
eCBhMTYwYWNjYjhiNThiZjliNjhlYzJhM2UwMmY3ZDM1MGU4NjhhNTVmLi45Nzk1YjIxNDUwMWRj
YWJiMDgzZGUwMjE3MmFmNjJkOGE0NTRhODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaApAQCAtNDQsMTIgKzQ0LDEyIEBAIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogCiBjbGFzcyBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwot
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JiwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKLSAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgZmlsZUJhY2tlZFBh
dGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIG5ld1VSTCwgY29uc3Qg
VVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7Ci0gICAgc3RhdGlj
IHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpOworICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmIGJsb2JQYXJ0cywgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIGZpbGVCYWNrZWRQYXRoLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JT
bGljZShjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFy
dCwgbG9uZyBsb25nIGVuZCk7CisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29u
c3QgVVJMJik7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0
IFVSTCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCBiMTRkMzEw
MTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4YmQ1NWFlMjhlLi5mMDBhM2VjMDcwN2VmOTJiY2U2NGVh
MTBiMWRlZDM4Yzk0ZTNkYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
QEAgLTE3NSw3ICsxNzUsNyBAQCBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKERP
TUZvcm1EYXRhJiBmb3JtRGF0YSwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0CiAgICAgLy8gSWYgbm8g
ZmlsZW5hbWUgYXQgYWxsIGlzIGVudGVyZWQsIHJldHVybiBzdWNjZXNzZnVsIGJ1dCBlbXB0eS4K
ICAgICAvLyBOdWxsIHdvdWxkIGJlIG1vcmUgbG9naWNhbCwgYnV0IE5ldHNjYXBlIHBvc3RzIGFu
IGVtcHR5IGZpbGUuIEFyZ2guCiAgICAgaWYgKGZpbGVMaXN0LT5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgZm9ybURhdGEuYXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50
KCkuc2Vzc2lvbklEKCksIGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAgZm9ybURhdGEuYXBwZW5k
KG5hbWUsIEZpbGU6OmNyZWF0ZShlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXND
aG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QKIAog
ICAgIGF1dG8gc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID0gYWxsb3dzRGlyZWN0b3JpZXMoKSA/
IEZpbGVMaXN0Q3JlYXRvcjo6U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpZZXMgOiBGaWxlTGlz
dENyZWF0b3I6OlNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6Tm87CiAgICAgYXV0byBzaG91bGRS
ZXF1ZXN0SWNvbiA9IGljb24gPyBSZXF1ZXN0SWNvbjo6WWVzIDogUmVxdWVzdEljb246Ok5vOwot
ICAgIG1fZmlsZUxpc3RDcmVhdG9yID0gRmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUoZWxlbWVudCgp
LT5kb2N1bWVudCgpLnNlc3Npb25JRCgpLCBwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVz
LCBbdGhpcywgc2hvdWxkUmVxdWVzdEljb25dKFJlZjxGaWxlTGlzdD4mJiBmaWxlTGlzdCkgewor
ICAgIG1fZmlsZUxpc3RDcmVhdG9yID0gRmlsZUxpc3RDcmVhdG9yOjpjcmVhdGUocGF0aHMsIHNo
b3VsZFJlc29sdmVEaXJlY3RvcmllcywgW3RoaXMsIHNob3VsZFJlcXVlc3RJY29uXShSZWY8Rmls
ZUxpc3Q+JiYgZmlsZUxpc3QpIHsKICAgICAgICAgc2V0RmlsZXMoV1RGTW92ZShmaWxlTGlzdCks
IHNob3VsZFJlcXVlc3RJY29uKTsKICAgICAgICAgbV9maWxlTGlzdENyZWF0b3IgPSBudWxscHRy
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCmluZGV4IDg3
NDY4NGY1NjNjNjEwODUzYmM2ZDFmZmYwODhiZmRjOGRmYThkYzUuLmRjNjI4NWJjOWI1ODM1MDZl
M2Q2ZDIwZTA5NTE2NTFjZTkwZGVjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUxpc3RDcmVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3Jl
YXRvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgRmlsZUxpc3RDcmVhdG9yOjp+RmlsZUxpc3RDcmVh
dG9yKCkKICAgICBBU1NFUlQoIW1fY29tcGxldGlvbkhhbmRlcik7CiB9CiAKLXN0YXRpYyB2b2lk
IGFwcGVuZERpcmVjdG9yeUZpbGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZp
bGU+PiYgZmlsZU9iamVjdHMpCitzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVBhdGgsIFZlY3RvcjxS
ZWY8RmlsZT4+JiBmaWxlT2JqZWN0cykKIHsKICAgICBmb3IgKGF1dG8mIGNoaWxkUGF0aCA6IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8g
bWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY2hpbGRQYXRoKTsKQEAgLTUxLDIy
ICs1MSwyMiBAQCBzdGF0aWMgdm9pZCBhcHBlbmREaXJlY3RvcnlGaWxlcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0bwogCiAgICAgICAgIFN0cmluZyBjaGls
ZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIEZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShjaGlsZFBhdGgpOwogICAgICAgICBpZiAobWV0YWRhdGEudmFsdWUoKS50eXBlID09
IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5KQotICAgICAgICAgICAgYXBwZW5kRGlyZWN0
b3J5RmlsZXMoc2Vzc2lvbklELCBjaGlsZFBhdGgsIGNoaWxkUmVsYXRpdmVQYXRoLCBmaWxlT2Jq
ZWN0cyk7CisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhjaGlsZFBhdGgsIGNoaWxk
UmVsYXRpdmVQYXRoLCBmaWxlT2JqZWN0cyk7CiAgICAgICAgIGVsc2UgaWYgKG1ldGFkYXRhLnZh
bHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpCi0gICAgICAgICAgICBmaWxl
T2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aFJlbGF0aXZlUGF0aChzZXNzaW9uSUQsIGNo
aWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgpKTsKKyAgICAgICAgICAgIGZpbGVPYmplY3RzLmFw
cGVuZChGaWxlOjpjcmVhdGVXaXRoUmVsYXRpdmVQYXRoKGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2
ZVBhdGgpKTsKICAgICB9CiB9CiAKLUZpbGVMaXN0Q3JlYXRvcjo6RmlsZUxpc3RDcmVhdG9yKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+
JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3VsZFJlc29sdmVEaXJlY3Rvcmll
cywgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK0ZpbGVMaXN0Q3JlYXRv
cjo6RmlsZUxpc3RDcmVhdG9yKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0
aHMsIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHNob3VsZFJl
c29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6Ok5vKQotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVGaWxlTGlzdDxTaG91bGRSZXNvbHZlRGlyZWN0b3Jp
ZXM6Ok5vPihzZXNzaW9uSUQsIHBhdGhzKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNy
ZWF0ZUZpbGVMaXN0PFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6Tm8+KHBhdGhzKSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgb24gYSBiYWNrZ3JvdW5kIHRo
cmVhZCB0byBhdm9pZCBibG9ja2luZyB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIG1fY29tcGxl
dGlvbkhhbmRlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogICAgICAgICBtX3dvcmtR
dWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJGaWxlTGlzdENyZWF0b3IgV29yayBRdWV1ZSIpOwot
ICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgc2Vzc2lvbklELCBwYXRocyA9IGNyb3NzVGhyZWFkQ29weShwYXRocyldKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVMaXN0ID0gY3JlYXRlRmlsZUxpc3Q8U2hv
dWxkUmVzb2x2ZURpcmVjdG9yaWVzOjpZZXM+KHNlc3Npb25JRCwgcGF0aHMpOworICAgICAgICBt
X3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcGF0aHMgPSBjcm9zc1RocmVhZENvcHkocGF0aHMpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgYXV0byBmaWxlTGlzdCA9IGNyZWF0ZUZpbGVMaXN0PFNob3VsZFJlc29sdmVEaXJlY3Rvcmll
czo6WWVzPihwYXRocyk7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZmlsZUxpc3QgPSBXVEZNb3ZlKGZp
bGVMaXN0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kZXIpKQogICAgICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGVyKFdURk1vdmUoZmlsZUxpc3QpKTsKQEAgLTc2LDE0ICs3NiwxNCBA
QCBGaWxlTGlzdENyZWF0b3I6OkZpbGVMaXN0Q3JlYXRvcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxGaWxlQ2hvbwogfQogCiB0ZW1wbGF0ZTxGaWxlTGlzdENyZWF0b3I6
OlNob3VsZFJlc29sdmVEaXJlY3RvcmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM+Ci1SZWY8
RmlsZUxpc3Q+IEZpbGVMaXN0Q3JlYXRvcjo6Y3JlYXRlRmlsZUxpc3QoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIHBhdGhzKQorUmVm
PEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxG
aWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMpCiB7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmls
ZU9iamVjdHM7CiAgICAgZm9yIChhdXRvJiBpbmZvIDogcGF0aHMpIHsKICAgICAgICAgaWYgKHNo
b3VsZFJlc29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAm
JiBGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCi0gICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlG
aWxlcyhzZXNzaW9uSUQsIGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGlu
Zm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVz
KGluZm8ucGF0aCwgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVP
YmplY3RzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZp
bGU6OmNyZWF0ZShzZXNzaW9uSUQsIGluZm8ucGF0aCwgaW5mby5kaXNwbGF5TmFtZSkpOworICAg
ICAgICAgICAgZmlsZU9iamVjdHMuYXBwZW5kKEZpbGU6OmNyZWF0ZShpbmZvLnBhdGgsIGluZm8u
ZGlzcGxheU5hbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIEZpbGVMaXN0OjpjcmVhdGUoV1RGTW92
ZShmaWxlT2JqZWN0cykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
TGlzdENyZWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmgKaW5k
ZXggODYzNzU0M2EwNzc5N2MwODI5Nzc3ZTNmOTU0MGUzNDJiZjQ2N2ZiOC4uM2M4Yjk0ZDdiZWVl
ODNhZmIxMWZjMjVlY2UzZDBkMjRlZjFlYTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlTGlzdENyZWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0
Q3JlYXRvci5oCkBAIC00Miw5ICs0Miw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBDb21wbGV0aW9u
SGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoUmVmPEZpbGVMaXN0PiYmKT47CiAKICAgICBlbnVtIGNs
YXNzIFNob3VsZFJlc29sdmVEaXJlY3RvcmllcyB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVm
PEZpbGVMaXN0Q3JlYXRvcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgU2hvdWxkUmVzb2x2ZURpcmVjdG9y
aWVzIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICBzdGF0aWMgUmVmPEZpbGVMaXN0Q3JlYXRvcj4gY3JlYXRlKGNvbnN0
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIFNob3VsZFJlc29sdmVEaXJlY3Rv
cmllcyBzaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlTGlz
dENyZWF0b3Ioc2Vzc2lvbklELCBwYXRocywgc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
aWxlTGlzdENyZWF0b3IocGF0aHMsIHNob3VsZFJlc29sdmVEaXJlY3RvcmllcywgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+RmlsZUxpc3RDcmVhdG9yKCk7CkBA
IC01MiwxMCArNTIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsKCk7CiAKIHByaXZhdGU6
Ci0gICAgRmlsZUxpc3RDcmVhdG9yKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8RmlsZUNo
b29zZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIEZpbGVMaXN0Q3JlYXRvcihjb25zdCBWZWN0b3I8RmlsZUNob29z
ZXJGaWxlSW5mbz4mIHBhdGhzLCBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXMsIENvbXBsZXRpb25I
YW5kbGVyJiYpOwogCiAgICAgdGVtcGxhdGU8U2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzIHNob3Vs
ZFJlc29sdmVEaXJlY3Rvcmllcz4KLSAgICBzdGF0aWMgUmVmPEZpbGVMaXN0PiBjcmVhdGVGaWxl
TGlzdChQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+Jik7
CisgICAgc3RhdGljIFJlZjxGaWxlTGlzdD4gY3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZp
bGVDaG9vc2VyRmlsZUluZm8+Jik7CiAKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3dvcmtRdWV1
ZTsKICAgICBDb21wbGV0aW9uSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggMjUwZmI3Nzc0NTI4
NWQ1ZDU3NzQ4ODM2ZDk2YTk2ZmU1MTc3MTIwMC4uZmNmYTc4NGEwNWNkNTA1NWIxOGUzNmRiNTg5
OGJlNzBhZGY3MjYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5CiAg
ICAgaWYgKCFtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFjaG1lbnQobWltZVR5
cGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBob3N0RWxlbWVudC0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2Jq
ZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShkb2N1bWVudCgpLnNlc3Npb25JRCgpLCBX
VEZNb3ZlKGRhdGEpLCBtaW1lVHlwZSkpKTsKKyAgICBob3N0RWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBtaW1lVHlw
ZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAyMDE0ZWZlNzVjZWM0NjBlMzc5MWUzNjNmNTYyOGU1
MDAxYjhkY2U5Li45Y2ZiZGI4NzEwOTVlZDAyZjMxNjQ1MzFkNDY3YzUyODg1YTczM2IwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNzMyLDcgKzczMiw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxDYW52YXNFbGVtZW50Ojp0b0Jsb2IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmCiAgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iOwog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkRhdGEgPSBkYXRhKCppbWFnZURhdGEsIGVuY29k
aW5nTUlNRVR5cGUsIHF1YWxpdHkpOwogICAgICAgICBpZiAoIWJsb2JEYXRhLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUoY29udGV4dC5zZXNzaW9uSUQoKSwgV1RG
TW92ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUpOworICAgICAgICAgICAgYmxvYiA9IEJs
b2I6OmNyZWF0ZShXVEZNb3ZlKGJsb2JEYXRhKSwgZW5jb2RpbmdNSU1FVHlwZSk7CiAgICAgICAg
IGNhbGxiYWNrLT5zY2hlZHVsZUNhbGxiYWNrKGNvbnRleHQsIFdURk1vdmUoYmxvYikpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTc0Myw3ICs3NDMsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZgogICAgIFJlZlB0cjxCbG9iPiBibG9iOwogICAgIFZlY3Rvcjx1aW50OF90PiBi
bG9iRGF0YSA9IGJ1ZmZlcigpLT50b0RhdGEoZW5jb2RpbmdNSU1FVHlwZSwgcXVhbGl0eSk7CiAg
ICAgaWYgKCFibG9iRGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIGJsb2IgPSBCbG9iOjpjcmVhdGUo
Y29udGV4dC5zZXNzaW9uSUQoKSwgV1RGTW92ZShibG9iRGF0YSksIGVuY29kaW5nTUlNRVR5cGUp
OworICAgICAgICBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmxvYkRhdGEpLCBlbmNvZGlu
Z01JTUVUeXBlKTsKICAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCBXVEZN
b3ZlKGJsb2IpKTsKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGlj
VVJMTWFuYWdlci5jcHAKaW5kZXggYjY2OGRhMWYzMjE0ZGJmOWI5MTYxZWZhODMyNTZjOTVjYTgy
MTFkMy4uZDJmOTZkNGY1ZDdmNDUzNGVkMjM1NWQ5YTdlZTllZGNlMWVmODZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQg
UHVibGljVVJMTWFuYWdlcjo6cmV2b2tlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGZvciAoYXV0
byYgcmVnaXN0cnkgOiBtX3JlZ2lzdHJ5VG9VUkwpIHsKICAgICAgICAgaWYgKHJlZ2lzdHJ5LnZh
bHVlLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKLSAgICAgICAgICAgIHJlZ2lzdHJ5LmtleS0+
dW5yZWdpc3RlclVSTCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB1cmwpOworICAgICAgICAg
ICAgcmVnaXN0cnkua2V5LT51bnJlZ2lzdGVyVVJMKHVybCk7CiAgICAgICAgICAgICByZWdpc3Ry
eS52YWx1ZS5yZW1vdmUodXJsLnN0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgUHVibGljVVJMTWFuYWdlcjo6c3RvcCgpCiAgICAg
bV9pc1N0b3BwZWQgPSB0cnVlOwogICAgIGZvciAoYXV0byYgcmVnaXN0cnkgOiBtX3JlZ2lzdHJ5
VG9VUkwpIHsKICAgICAgICAgZm9yIChhdXRvJiB1cmwgOiByZWdpc3RyeS52YWx1ZSkKLSAgICAg
ICAgICAgIHJlZ2lzdHJ5LmtleS0+dW5yZWdpc3RlclVSTCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBVUkwoeyB9LCB1cmwpKTsKKyAgICAgICAgICAgIHJlZ2lzdHJ5LmtleS0+dW5yZWdpc3Rl
clVSTChVUkwoeyB9LCB1cmwpKTsKICAgICB9CiAKICAgICBtX3JlZ2lzdHJ5VG9VUkwuY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaAppbmRleCBlM2RjNDZhOWU5Mjc0MTAxMGY0YTdj
YjJjNWJjZjA2NmU3YTI0ZjcyLi4yMmZlODE1ODA1NjM4MDY4Y2IwY2NkYjQxZTYxOTczYTU0ODA5
Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNz
IFVSTFJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5VUkxSZWdpc3RyeSgpID0gZGVm
YXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBVUkwmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgPSAwOwogCiAgICAgLy8g
VGhpcyBpcyBhbiBvcHRpb25hbCBBUEkKICAgICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29r
dXAoY29uc3QgU3RyaW5nJikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCA1MzYzNzAzYjhj
YjQzYzJiZDkzMDBmYjY1YTk3NDRmNDg1ZGRlZTRkLi44YjkxZTFjMzI0ZDc4ZTcxNWU4ZGU3Zjc3
OGY0MzhiY2NkY2E4Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3Bw
CkBAIC0xMDYsMTEgKzEwNiwxMCBAQCBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBQb2xp
Y3lDaGVja2VyOjpleHRlbmRCbG9iVVJMTGlmZXRpbWVJZk5lY2Vzc2FyeShSZQogCiAgICAgLy8g
Q3JlYXRlIGEgbmV3IHRlbXBvcmFyeSBibG9iVVJMIGluIGNhc2UgdGhpcyBvbmUgZ2V0cyByZXZv
a2VkIGR1cmluZyB0aGUgYXN5bmNocm9ub3VzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uLgog
ICAgIFVSTCB0ZW1wb3JhcnlCbG9iVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKCZtX2Zy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIGF1dG8gc2Vzc2lvbklEID0g
bV9mcmFtZS5kb2N1bWVudCgpLT5zZXNzaW9uSUQoKTsKLSAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkwoc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMLCByZXF1ZXN0LnVybCgpKTsK
KyAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodGVtcG9yYXJ5QmxvYlVSTCwgcmVx
dWVzdC51cmwoKSk7CiAgICAgcmVxdWVzdC5zZXRVUkwodGVtcG9yYXJ5QmxvYlVSTCk7Ci0gICAg
cmV0dXJuIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4oW3Nlc3Npb25JRCwgdGVtcG9yYXJ5Qmxv
YlVSTCA9IFdURk1vdmUodGVtcG9yYXJ5QmxvYlVSTCldIHsKLSAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwoc2Vzc2lvbklELCB0ZW1wb3JhcnlCbG9iVVJMKTsKKyAgICBy
ZXR1cm4gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPihbdGVtcG9yYXJ5QmxvYlVSTCA9IFdURk1v
dmUodGVtcG9yYXJ5QmxvYlVSTCldIHsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3Rl
ckJsb2JVUkwodGVtcG9yYXJ5QmxvYlVSTCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCAxMDZjODBiN2RiZjgzZmZjMjFhM2Y5ZGY5MTFjYTJlMzJj
MDA0ZDc1Li4wYWYyOGQ2NWRiZTNmMWIzMzQxNzA1NWExMWVkZTIwMDAyNGRiZTEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNzY4LDcgKzM3NjgsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgQ2hlY2tEcgogICAgIC8vIFRoaXMgZG9lcyB3b3JrIG9ubHkgaWYgd2UgbWlzc2Vk
IGEgZHJhZ0VuZC4gRG8gaXQgYW55d2F5LCBqdXN0IHRvIG1ha2Ugc3VyZSB0aGUgb2xkIGRhdGFU
cmFuc2ZlciBnZXRzIG51bWJlZC4KICAgICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKLSAg
ICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWco
Km1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyID0gRGF0
YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKCk7CiAgICAgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmRE
YXRhIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA9IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJk
RGF0YTo6Tm87CiAgICAgCiAgICAgaWYgKGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRz
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApp
bmRleCA2NjBhNzk2ZDBiMmQ4OTg2MjUxYjgwNmQzOTEzYmY5MTQ1NGU5ZTc3Li5mZTkxZTgxYWFk
NDMwMmUwM2RiOTY3YTQ2YTMwNmFjNmQ0MmNjZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTMxLDcgKzMxLDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMjUgKzQ3LDI1IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAKICAgICAvLyBSZWdpc3RlcnMg
YSBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBmaWxlLgotICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBSZWY8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUmVmPEJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwog
CiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQg
YmxvYiBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwg
VmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CiAgICAg
CiAgICAgLy8gUmVnaXN0ZXJzIGEgbmV3IGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBk
YXRhIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNVUkwuCi0gICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBz
cmNVUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgc3JjVVJMKSA9IDA7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBV
UkwgcmVmZXJyaW5nIHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVk
IHNyY1VSTCBvciwgaWYgbm9uZSBmb3VuZCwgcmVmZXJyaW5nIHRvIHRoZSBmaWxlIGZvdW5kIGF0
IHRoZSBnaXZlbiBwYXRoLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25h
bGx5RmlsZUJhY2tlZChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwsIFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKIAogICAgIC8v
IE5lZ2F0aXZlIHN0YXJ0IGFuZCBlbmQgdmFsdWVzIHNlbGVjdCBmcm9tIHRoZSBlbmQuCi0gICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5k
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBVUkwmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShj
b25zdCBVUkwmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYgZmlsZVBhdGhzKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCBCbG9iUmVnaXN0cnlJbXBsKiBi
bG9iUmVnaXN0cnlJbXBsKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggYjg3OTYxMjgzYzNkOGU0ZWFkYzU1NzI2YTZjZWI5MGEwYzZm
NzBhYy4uY2IzZmRkNWFhNGI3Y2RkMTc5OTUwMzRiMzE1NjVjOTQ0N2RmMTljZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNDI2Myw3ICs0MjYzLDcgQEAgUmVmUHRyPEZp
bGU+IEludGVybmFsczo6Y3JlYXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgaWYgKCF1
cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
RmlsZTo6Y3JlYXRlKGRvY3VtZW50LT5zZXNzaW9uSUQoKSwgdXJsLmZpbGVTeXN0ZW1QYXRoKCkp
OworICAgIHJldHVybiBGaWxlOjpjcmVhdGUodXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogfQogCiB2
b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRleCA2ZTFi
Y2EzYTQ3ZmRkYTYxZmQ5ZmRhYmY3MThkYTQ0MmQ4YmM1MzYxLi41NTQ0NTYxNWUwZTFlODFlY2Ex
NGI4MTZjM2U4ZTQ5MWI3MzdiM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTY4LDE0ICs2OCwxNCBAQCBSZWY8RmV0Y2hF
dmVudD4gU2VydmljZVdvcmtlckludGVybmFsczo6Y3JlYXRlQmVpbmdEaXNwYXRjaGVkRmV0Y2hF
dmVudChTY3JpcHRFeAogCiBSZWY8RmV0Y2hSZXNwb25zZT4gU2VydmljZVdvcmtlckludGVybmFs
czo6Y3JlYXRlT3BhcXVlV2l0aEJsb2JCb2R5UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoY29udGV4dC5zZXNz
aW9uSUQoKSk7CisgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCk7CiAgICAgYXV0byBmb3Jt
RGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKICAgICBmb3JtRGF0YS0+YXBwZW5kQmxvYihibG9i
LT51cmwoKSk7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIHJlc3BvbnNl
LnNldFR5cGUoUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6Q29ycyk7CiAgICAgcmVzcG9uc2Uuc2V0
VGFpbnRpbmcoUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZSk7Ci0gICAgYXV0byBm
ZXRjaFJlc3BvbnNlID0gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIEZldGNoQm9keTo6
ZnJvbUZvcm1EYXRhKGNvbnRleHQuc2Vzc2lvbklEKCksIGZvcm1EYXRhKSwgRmV0Y2hIZWFkZXJz
OjpHdWFyZDo6UmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2UpKTsKKyAgICBhdXRvIGZldGNoUmVz
cG9uc2UgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4dCwgRmV0Y2hCb2R5Ojpmcm9tRm9y
bURhdGEoZm9ybURhdGEpLCBGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSwgV1RGTW92ZShy
ZXNwb25zZSkpOwogICAgIGZldGNoUmVzcG9uc2UtPmluaXRpYWxpemVPcGFxdWVMb2FkSWRlbnRp
ZmllckZvclRlc3RpbmcoKTsKICAgICByZXR1cm4gZmV0Y2hSZXNwb25zZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCmluZGV4IDIwYTJhZGFmMzU2MmY5NGM2ZGNiMzdiNDA4OWUyNGY2ZGI3
ZGZiZmEuLjQ0OTY5YWYwNmY0ZjhjMWU3N2E1YzFlYmE5ZmQ0YjAyMjNhMDY3YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgZGlzcGF0Y2hGZXRj
aEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGds
b2JhbFNjCiAgICAgYXV0byogZm9ybURhdGEgPSByZXF1ZXN0Lmh0dHBCb2R5KCk7CiAgICAgT3B0
aW9uYWw8RmV0Y2hCb2R5PiBib2R5OwogICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlz
RW1wdHkoKSkgewotICAgICAgICBib2R5ID0gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoZ2xvYmFs
U2NvcGUuc2Vzc2lvbklEKCksICpmb3JtRGF0YSk7CisgICAgICAgIGJvZHkgPSBGZXRjaEJvZHk6
OmZyb21Gb3JtRGF0YSgqZm9ybURhdGEpOwogICAgICAgICBpZiAoIWJvZHkpIHsKICAgICAgICAg
ICAgIGNsaWVudC0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBmNWM2NzUzMDVmNzVkNDQ0MjE2OWNkN2I4
MjFmYzUwZDVhZTU2NTM4Li43OWJkNDYxMjAzZWRkMjQ0ZGU1N2M2OTYwNjQ0NmI2OGMxOTY1YzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTIxNCw3ICsyMTQsNyBA
QCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgICAg
IGRhdGEuYXBwZW5kKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5kYXRhKCksIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT5zaXplKCkpOwogICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVs
bHB0cjsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXpl
ZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVm
YXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KLSAgICByZXR1cm4gQmxv
Yjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCksIFdURk1vdmUo
ZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQogCiBSZWZQdHI8QXJyYXlC
dWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMGM4NDZkYjAyNDJmM2E3NTEzZTZjM2Ix
MTFlYWFjMWQ4ODYwZWM5NS4uZDRmODc1MzM2MDljZGRjNDljOWRjYjU0YTFkZGZiZjU4MzNlMGE1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTUyLDE0ICs1MiwxNCBA
QCBCbG9iUmVnaXN0cnkqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVC
bG9iUmVnaXN0cnkoKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGNsYXNz
IEVtcHR5QmxvYlJlZ2lzdHJ5IDogcHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7Ci0gICAg
ICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwg
UmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
ZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgICAgICB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0g
ICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBVUkwmIHNyY1VSTCkgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgICAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQotICAgICAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgZW5kKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYpIGZpbmFsIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYsIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAg
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBm
aW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgICAgIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJl
ZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
IGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgdm9pZCByZWdpc3RlckJs
b2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAg
ICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3Qg
VVJMJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLSAgICAgICAg
dm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
ICAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQ
YXRocyk+JiYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB9OwogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0eUJsb2JSZWdpc3RyeT4gYmxvYlJlZ2lzdHJ5OwogICAg
IHJldHVybiAmYmxvYlJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IGViNjMwYTAxNTA5
ZjZjNWZkN2Y2NGQzMjhlZGEzZDYwNzhhZjdmNTkuLjhmNDdiOGYwNzBlMWYyOTgzMzQ1MzhkY2E4
Y2Y0ZDRlNGEzOTRjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxl
QVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
RmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5
UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJs
LCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0
IFVSTCYgdXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lv
bkhhbmRsZTsKIApAQCAtNDcsMjggKzQ3LDI4IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8CiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgZmlsZS0+cGF0aCgpLCBleHRlbnNpb25IYW5k
bGUsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lz
dGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFy
dD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEJsb2JSZWdp
c3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFy
dD4mJiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdp
c3RlckJsb2JVUkwodXJsLCBibG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKLXZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwgeyB1cmwsIHNyY1VSTCB9LCAwKTsKIH0KIAotdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiBmaWxlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxs
eUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8V2Vi
Q29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiB7CiAgICAgQVNTRVJUKGZpbGUpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9u
YWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIGZpbGUtPnBhdGgoKSwgY29udGVudFR5cGUpLCAw
KTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnJlZ2lzdGVyQmxvYlVSTCh1
cmwpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJM
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
UkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOwogfQpAQCAtODEsOSArODEs
OCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5UHJveHk6OmJsb2JTaXplKGNvbnN0
IFVSTCYgdXJsKQogICAgIHJldHVybiByZXN1bHRTaXplOwogfQogCi12b2lkIEJsb2JSZWdpc3Ry
eVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVF9VTlVT
RUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lv
bklEKCkpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCmluZGV4IGQ3NjYxNTg3ZTNlNzQzODMy
ZTIzMjVjNjc5NmNmYTM0NWJiOTU2YzAuLjQwOTg0ZGIyN2RhZGQ3ZDY1ZTlhNTFhYzE3MmQwNTc3
MTkyZDRhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpCbG9i
UmVnaXN0cnkgewogcHVibGljOgotICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgUmVmPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7Ci0gICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFy
dD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWw7Ci0gICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBm
aW5hbDsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmlu
YWw7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJM
JikgZmluYWw7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCkgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYs
IFJlZjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpCbG9iUGFydD4mJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmlu
YWw7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsOworICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBmaW5hbDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxv
YlNpemUoY29uc3QgVVJMJikgZmluYWw7Ci0gICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlG
aWxlcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZmlsZVBhdGhzKT4mJikgZmluYWw7
CisgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBmaWxl
UGF0aHMpPiYmKSBmaW5hbDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpp
bmRleCBkZWY5OGRhZTJmZWI0NDgwN2VmYjMyMTdhY2RjY2VjYmI2NTk5ZGMwLi5mNjc3MjBlMzk1
Y2ZmZTMwMzEwZDg2NGJmOTg5YmUyZmNmYTJiYzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCkBAIC02NCwxNCArNjQsMTQgQEAgUGFzdGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiAKIGNsYXNzIFdlYkJsb2JS
ZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgewogcHJpdmF0ZToKLSAgICB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBSZWY8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgV1RG
TW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBwYXJ0
cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdp
c3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9Ci0gICAgdm9p
ZCByZWdpc3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIHNyY1VSTCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkwodXJsLCBz
cmNVUkwpOyB9Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBSZWZQdHI8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxPcHRpb25hbGx5Rmls
ZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0K
LSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVu
ZCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCk7IH0KLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBVUkwmIHVybCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS51bnJlZ2lzdGVy
QmxvYlVSTCh1cmwpOyB9CisgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckZpbGVCbG9iVVJM
KHVybCwgV1RGTW92ZShyZWZlcmVuY2UpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiYmIHBhcnRzLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxv
YlVSTCh1cmwsIFdURk1vdmUocGFydHMpLCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9i
bG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsgfQorICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVS
TCYgc3JjVVJMLCBSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIHJlZmVyZW5jZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJs
b2JVUkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgV1RGTW92ZShyZWZlcmVuY2Up
LCBjb250ZW50VHlwZSk7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
ZW5kKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwg
c3JjVVJMLCBzdGFydCwgZW5kKTsgfQorICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsg
fQogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwmIHVybCkgZmluYWwg
eyByZXR1cm4gbV9ibG9iUmVnaXN0cnkuYmxvYlNpemUodXJsKTsgfQotICAgIHZvaWQgd3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGZpbGVQ
YXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkud3JpdGVC
bG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsgfQorICAgIHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JVUkxzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYg
ZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS53
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOyB9CiAKICAgICBCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnlJbXBsKCkgZmlu
YWwgeyByZXR1cm4gJm1fYmxvYlJlZ2lzdHJ5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCmluZGV4IGI3NjkwZGZiZGZmMTlhYzhlNDY1ZGYwYWM5ZDkzNjIwNjJiMzRlZmQuLmNj
ZTBjOTRiMmM5MTgxYjBkNDFjYjM5ZDFjMjI2YmY2Nzk4Y2Y2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcApAQCAtNjIsMTQgKzYyLDE0IEBAIFBhc3RlYm9hcmRTdHJhdGVneSog
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKQogCiBjbGFz
cyBXZWJCbG9iUmVnaXN0cnkgZmluYWwgOiBwdWJsaWMgQmxvYlJlZ2lzdHJ5IHsKIHByaXZhdGU6
Ci0gICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
IHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJGaWxlQmxvYlVS
TCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9Ci0gICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBh
cnQ+JiYgcGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVn
aXN0cnkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShwYXJ0cyksIGNvbnRlbnRUeXBlKTsg
fQotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgc3JjVVJMKTsgfQotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZp
bGVCYWNrZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VS
TCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMT3B0
aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVu
dFR5cGUpOyB9Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBlbmQpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJCbG9iVVJMRm9yU2xp
Y2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOyB9Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnku
dW5yZWdpc3RlckJsb2JVUkwodXJsKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZlcmVuY2UsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnkucmVnaXN0ZXJG
aWxlQmxvYlVSTCh1cmwsIFdURk1vdmUocmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CisgICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4mJiBw
YXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5y
ZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKHBhcnRzKSwgY29udGVudFR5cGUpOyB9CisgICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKSBm
aW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7IH0KKyAg
ICB2b2lkIHJlZ2lzdGVyQmxvYlVSTE9wdGlvbmFsbHlGaWxlQmFja2VkKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIHNyY1VSTCwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiByZWZl
cmVuY2UsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIGZpbmFsIHsgbV9ibG9iUmVnaXN0cnku
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJsLCBzcmNVUkwsIFdURk1vdmUo
cmVmZXJlbmNlKSwgY29udGVudFR5cGUpOyB9CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JT
bGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwg
bG9uZyBsb25nIGVuZCkgZmluYWwgeyBtX2Jsb2JSZWdpc3RyeS5yZWdpc3RlckJsb2JVUkxGb3JT
bGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsKSBmaW5hbCB7IG1fYmxvYlJlZ2lzdHJ5LnVucmVnaXN0ZXJCbG9i
VVJMKHVybCk7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJiB1
cmwpIGZpbmFsIHsgcmV0dXJuIG1fYmxvYlJlZ2lzdHJ5LmJsb2JTaXplKHVybCk7IH0KLSAgICB2
b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IG1fYmxvYlJlZ2lz
dHJ5LndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7IH0KKyAgICB2b2lkIHdyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgbV9ibG9i
UmVnaXN0cnkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsgfQogCiAgICAgQmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5
SW1wbCgpIGZpbmFsIHsgcmV0dXJuICZtX2Jsb2JSZWdpc3RyeTsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>